Unit testing 单元测试与验收测试
你是支持一个还是另一个?或者两者都有 我的理解是单元测试:Unit testing 单元测试与验收测试,unit-testing,testing,tdd,acceptance-testing,Unit Testing,Testing,Tdd,Acceptance Testing,你是支持一个还是另一个?或者两者都有 我的理解是单元测试: 从开发人员的角度验证系统 帮助开发人员实践TDD 保持代码模块化 帮助检测低粒度级别的错误 验收测试: 从业务和QC/QA角度验证系统 往往是高级的,因为它们通常是由不熟悉代码内部工作的人编写的 我觉得两者都有必要。然而,为了最大限度地减少冗余工作,尝试将单元测试纳入验收测试是一个好主意吗?换句话说,让后者称之为前者。朝相反的方向走有意义吗 您对单元测试与验收测试的总体看法是什么,以及如何管理它们之间的关系 然而,为了最大限度地
- 从开发人员的角度验证系统
- 帮助开发人员实践TDD
- 保持代码模块化
- 帮助检测低粒度级别的错误
- 从业务和QC/QA角度验证系统
- 往往是高级的,因为它们通常是由不熟悉代码内部工作的人编写的
您可以希望验收测试驱动开发(ATDD)会导致“验收测试是在开发开始之前由整个团队编写并商定的。”但您必须反映这样一个现实,即事先编写的任何内容最好是似是而非的,最坏是可以协商的 所有敏捷方法背后的前提是,您只能同意获得可发布的东西。之后的一切都可以商量 所有测试优先(TDD、ATDD或任何其他)背后的前提是,测试是一个铁板一块的协议。但事实并非如此。使用任何TDD(或ATDD)方法,原则上你都可以同意测试结果,但你还没有真正同意测试本身 可能会出现无法轻松编写测试的情况。或者更糟糕的是,根本无法书写。您可能同意看似可测试的结果,但结果却定义不清。现在怎么办?在开始开发和了解细节之前,您无法了解这些事情 所有测试都很重要。而且,任何一种特定的测试都不能是任何其他类型测试的超集或子集。它们总是部分重叠的集合。试图联合起来以某种方式节省一些工作很可能是浪费时间
更多的测试比什么都好。所有测试的联合比试图在测试之间强制建立子集-超集关系更有价值。这些只是我个人对某些类型测试问题的看法: 然而,为了最大限度地减少冗余 工作,试着去做是个好主意吗 将单元测试纳入验收 测试 我同意S.Lott的反对意见,并补充说,单元测试在某种程度上被操纵,可能会有一些bug通过。例如,在下拉列表中,有人可能测试一些状态,但可能不是所有状态,测试人员可能使用不同的数据来发现潜在的错误 换言之,请拨打后一个电话 前者。你的方向相反吗 方向有意义吗 我会小心把它们连在一起。单元测试表示对最小功能的测试,通常非常小,以至于最终用户不会理解,仅仅为了获得一个web表单将数据输入CRM系统,可能会有数百个测试。验收测试更多的是关于应用程序的用户想要什么,这可能更主观,例如“这看起来漂亮吗?”与“这看起来对吗?”验收测试可能会有“足够好”的标记,我不确定这是否适用于单元测试。通常,如果单元测试失败,那么必须有人决定修复代码或删除测试,因为根据具体情况,每个测试都是一个好的选择 你一般的想法是什么 单元测试与验收测试,以及 如何管理它们与每个 其他的
单元测试是关于验证最简单的代码片段。可以进行集成测试,但这是一个更高的级别,因为一旦检查了所有的小部件,这些部件的组合是否一起工作,例如,在我成长的过程中,我观看了一些周六早上的卡通,其中有一些玩具可以放在一起,如“Voltron”或各种变形金刚,如构成毁灭者的构造器图标。验收测试通常是从最终用户的角度进行的,“我现在可以对应用程序执行X吗?”在某些事情出现之前,回答为“是”。虽然一些错误案例可以在验收测试中检查,但对应用程序中可能出现的每种组合进行彻底测试并不常见。但是,单元测试可能会覆盖边界条件和其他一些类似随机的情况。验收和集成测试会告诉您代码是否正常工作和完整;单元测试告诉您它失败的地方 如果您在验收和集成测试方面做得很好,并且通过了测试,那么您的代码就实现了它应该实现的所有功能,并且工作正常。知道这一点很好(知道事实并非如此也很好)。但是,如果它不起作用,验收测试将不会让您了解出了什么问题;因为它测试了许多功能单元,所以它可以是故障的鸟瞰图。这就是单元测试的亮点所在。好的单元测试告诉你e