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