【发布时间】:2011-12-02 02:50:14
【问题描述】:
有没有人可以清楚地定义这些测试级别,因为我发现在进行 TDD 或单元测试时很难区分。请谁能详细说明如何、何时实施这些?
【问题讨论】:
标签: unit-testing testing tdd integration-testing regression-testing
有没有人可以清楚地定义这些测试级别,因为我发现在进行 TDD 或单元测试时很难区分。请谁能详细说明如何、何时实施这些?
【问题讨论】:
标签: unit-testing testing tdd integration-testing regression-testing
简单地说:
单元测试 - 您对每段单独的代码进行单元测试。考虑每个文件或类。
集成测试 - 将多个交互的单元放在一起时,您需要进行集成测试,以确保将这些单元集成在一起不会引入任何错误。
回归测试 - 在集成(并且可能修复)之后,您应该再次运行单元测试。这是回归测试,以确保进一步的更改不会破坏任何已经测试过的单元。您已经进行的单元测试已经生成了可以反复运行以进行回归测试的单元测试。
验收测试 - 当用户/客户/企业收到功能时,他们(或您的测试部门)将进行验收测试,以确保功能满足他们的要求。
您可能还想研究白盒和黑盒测试。还有性能和负载测试,以及需要考虑的“功能”测试。
【讨论】:
我会试试的:
【讨论】:
以下是对上述每个测试及其适用时间的简单说明:
单元测试 单元测试是在一个独立的单元(通常是一个类或方法)上执行的,并且应该在一个单元已经实现或单元的更新已经完成时执行。
这意味着它会在您编写类/方法、修复错误、更改功能时运行...
集成测试 集成测试旨在测试几个单元之间的交互情况。每当单元之间建立新的通信形式或它们的交互性质发生变化时,都应执行此类测试。
这意味着只要将最近编写的单元集成到系统的其余部分或更新与其他系统交互的单元(并成功完成其单元测试),它就会运行。
回归检验 每当系统中发生任何更改时,都会执行回归测试,以检查是否没有引入新的错误。
这意味着它在所有补丁、升级和错误修复之后运行。回归测试可以看作是单元测试和集成测试相结合的一个特例。
验收测试 只要与检查子系统(可能是整个系统)是否满足其全部规范相关,就会执行验收测试。
这意味着它主要在完成新的可交付成果或宣布完成更大的任务之前运行。在跑向客户/老板并宣布胜利之前,将此视为您最后的检查,看看您是否真的完成了目标。
这至少是我学到的方式,尽管我确信还有其他相反的观点。无论哪种方式,我希望这会有所帮助。
【讨论】:
单元测试:当它失败时,它会告诉您哪些代码需要修复。
集成测试:当它失败时,它会告诉您应用程序的各个部分没有按预期协同工作。
验收测试:当它失败时,它告诉您应用程序没有按照客户期望的那样做。
回归测试:当它失败时,它会告诉您应用程序不再像以前那样运行。
【讨论】:
单元测试:我的单一方法是否正常工作? (没有依赖,或依赖模拟)
集成测试:我的两个单独开发的模块放在一起是否可以正常工作?
回归测试:我是否因更改/编写新代码而破坏了任何东西? (每次提交运行单元/集成测试在技术上(自动化)回归测试)。更常用于 QA 环境 - 手动或自动。
验收测试:由客户完成的测试,他“接受”交付的软件
【讨论】:
无法评论(声誉低 :-| )所以...
@Andrejs 很好地指出了与每种测试类型相关的环境之间的差异。
单元测试通常在开发人员机器上运行(可能在 CI 构建期间),并模拟出与其他资源/系统的依赖关系。
根据定义,集成测试必须具有(某种程度的)依赖可用性;其他资源和系统被调用,因此环境更具代表性。用于测试的数据可能是模拟的,或者是真实生产数据的一个小的混淆子集。
UAT/验收测试必须向接受软件的 QA 和业务团队展示真实世界的体验。因此需要完全集成和真实的数据量以及完全屏蔽/混淆的数据集,以提供真实的性能和最终用户体验。
其他“ilities”也可能需要环境尽可能接近现实以模拟生产体验,例如性能测试、安全性...
【讨论】: