单元测试?整合测试?回归测试?验收测试?

时间:2011-10-06 09:35:34

标签: unit-testing testing tdd integration-testing regression-testing

是否有人可以清楚地定义这些测试级别,因为我发现在进行TDD或单元测试时很难区分。如果有人能详细说明何时,何时实施这些?

6 个答案:

答案 0 :(得分:85)

简言之:

单元测试 - 您对每段代码进行单元测试。想想每个文件或类。

集成测试 - 将几个单元放在一起进行交互时,您需要进行集成测试,以确保将这些单元集成在一起并未引入任何错误。

回归测试 - 在集成(并且可能修复)之后,您应该再次运行单元测试。这是回归测试,以确保进一步的更改不会破坏任何已经测试的单元。您已经完成的单元测试已经产生了可以反复运行以进行回归测试的单元测试。

验收测试 - 当用户/客户/企业收到其功能时,他们(或您的测试部门)将进行验收测试,以确保功能符合他们的要求。

您可能还想调查白盒和黑盒测试。还有性能和负载测试,以及要考虑的“能力”测试。

答案 1 :(得分:84)

单元测试:当它失败时,它会告诉你需要修复哪部分代码。

集成测试:当它失败时,它会告诉您应用程序的各个部分没有按预期一起工作。

验收测试:当它失败时,它会告诉您应用程序没有按照客户的期望进行操作。

回归测试:当它失败时,它会告诉你应用程序不再像以前那样运行。

答案 2 :(得分:11)

以下是每个上述测试及其适用时间的简单说明:

单元测试 单元测试在一个独立的单元(通常是一个类或方法)上进行,并且应该在单元实施或单元更新完成后执行。

这意味着无论何时编写类/方法,修复错误,更改功能,它都会运行...

整合测试 集成测试旨在测试几个单元之间的相互作用。只要在单位之间建立了新的沟通形式或者他们的互动性质发生了变化,就应该进行这种类型的测试。

这意味着只要最近编写的单元集成到系统的其余部分,或者每当与其他系统交互的单元已更新(并成功完成其单元测试)时,它就会运行。

回归测试 只要系统中有任何更改,就会执行回归测试,以检查是否没有引入新的错误。

这意味着它会在所有补丁,升级和错误修复后运行。回归测试可视为组合单元测试和集成测试的特例。

验收测试 只要检查子系统(可能是整个系统)是否满足其整个规范,就会执行验收测试。

这意味着它主要在完成新的可交付成果或宣布完成更大的任务之前运行。看到这是你最后的检查,看看你真的完成了你的目标,然后跑到客户/老板面前宣布胜利。

这至少是我学到的方式,但我确信还有其他相反的观点。无论哪种方式,我希望有所帮助。

答案 3 :(得分:10)

我会试试:

  1. 单元测试:开发人员会编写一个来测试单个组件或类。
  2. 集成测试:更广泛的测试,涉及需要协作的多个组件或包
  3. 回归测试:对应用程序进行一次更改会强制您重新运行所有测试并检查所有功能。
  4. 验收测试:最终用户或QA在签署之前执行这些操作以接受递交申请。它说“该应用符合我的要求。”

答案 4 :(得分:8)

单元测试:是我的单一方法正常工作? (没有依赖关系或依赖模拟)

集成测试:是我的两个独立开发的模块,当组合在一起时,可以正常工作吗?

回归测试:我是否通过更改/编写新代码来破坏任何内容? (每次提交的运行单元/集成测试是技术上(自动化的)回归测试)。更常用于质量保证的上下文 - 手动或自动化。

验收测试:由客户进行测试,他接受"接受"交付的SW

答案 5 :(得分:0)

无法评论(声誉低:-|),所以...

@Andrejs很好地说明了与每种测试类型相关的环境之间的差异。

单元测试通常在开发人员机器上运行(可能在CI构建期间运行),并模拟出对其他资源/系统的依赖性。

按照定义,集成测试必须(一定程度上)具有依赖关系。其他资源和系统被调用,因此环境更具代表性。用于测试的数据可能是模拟的,也可能是真实生产数据的一小部分模糊的子集。

UAT /验收测试必须向接受软件的质量保证和业务团队代表真实的经验。因此,需要完整的集成和实际的数据量以及完整的屏蔽/混淆数据集来提供真实的性能和最终用户体验。

其他“不道德行为”也可能需要环境尽可能接近现实,以模拟生产经验,例如性能测试,安全性...