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

Don*_*nny 82 testing tdd integration-testing unit-testing regression-testing

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

小智 106

简述:

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

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

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

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

您可能还想研究白盒和黑盒测试.还有性能和负载测试,以及要考虑的"能力"的测试.

  • 因此,我们不编写回归测试,而是在进行更改(新功能或错误修复)后运行单元测试和集成测试的组合,以检查系统是否仍然按预期工作?我最近实现了一个错误修复(使用与实现的逻辑不同的另一个逻辑),但随后许多单元测试失败了。可以让测试适应新的逻辑吗?还是逻辑必须适应测试(只要测试成功运行就实施)? (4认同)

Mat*_*ias 100

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

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

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

回归测试:当它失败时,它会告诉您应用程序不再像过去那样运行.


Age*_*ien 14

以下是每个上述测试的简单解释以及它们何时适用:

单元测试 单元测试在一个独立的单元(通常是一个类或方法)上执行,并且应该在单元已经实现或单元更新完成时执行.

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

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

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

回归测试 只要系统中的任何内容发生变化,就会执行回归测试,以检查是否没有引入新的错误.

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

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

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

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


duf*_*ymo 13

我会尽力:

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


And*_*ejs 12

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

集成测试:我的两个独立开发的模块在组合时是否正在运行

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

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