Unit testing 单元测试?集成测试?回归测试?验收测试?

Unit testing 单元测试?集成测试?回归测试?验收测试?,unit-testing,testing,tdd,integration-testing,regression-testing,Unit Testing,Testing,Tdd,Integration Testing,Regression Testing,有没有人可以清楚地定义这些测试级别,因为我发现在进行TDD或单元测试时很难区分。如果有人能详细说明如何、何时实施这些措施,请简要说明: 单元测试-对每一段代码进行单元测试。思考每个文件或类 集成测试将几个相互作用的单元放在一起时,需要进行集成测试,以确保将这些单元集成在一起不会产生任何错误 回归测试-集成(可能修复)后,您应该再次运行单元测试。这是回归测试,以确保进一步的更改不会破坏任何已测试的单元。您已经完成的单元测试已经生成了可以为回归测试一次又一次运行的单元测试 验收测试-当用户/客户/业

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

单元测试-对每一段代码进行单元测试。思考每个文件或类

集成测试将几个相互作用的单元放在一起时,需要进行集成测试,以确保将这些单元集成在一起不会产生任何错误

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

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

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

< P>我会尝试:

  • 单元测试:开发人员将编写一个单元测试单个组件或类
  • 集成测试:一种更广泛的测试,涉及多个需要协作的组件或包
  • 回归测试:对应用程序进行一次更改将迫使您重新运行所有测试并检查所有功能
  • 验收测试:最终用户或QA在签署接受应用程序交付之前进行这些测试。上面写着“这个应用程序符合我的要求。”

  • 以下是对上述各项测试的简单解释,以及适用的时间:

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

    这意味着只要您编写了类/方法、修复了错误、更改了功能,它就会运行

    集成测试 集成测试旨在测试多个单元之间的交互效果。当单元之间建立了新的通信形式或其交互的性质发生变化时,应进行此类测试

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

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

    这意味着它将在所有补丁、升级和bug修复之后运行。回归测试可以看作是组合单元测试和集成测试的特例

    验收测试 只要与检查子系统(可能是整个系统)是否满足其全部规范相关,就应进行验收测试

    这意味着它主要是在完成新的可交付成果或宣布完成更大的任务之前运行。在向客户/老板跑去宣布胜利之前,将此视为你的最后一次检查,以确定你是否真正完成了目标


    这至少是我学到的方法,尽管我确信还有其他相反的观点。不管怎样,我希望这能有所帮助

    单元测试:当它失败时,它会告诉您需要修复哪段代码

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

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


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

    单元测试:我的单一方法工作正常吗?(无依赖项,或模拟依赖项)

    集成测试:我的两个单独开发的模块在组合在一起时是否能正确工作?

    回归测试:我是否通过更改/编写新代码破坏了任何东西?(每次提交时运行单元/集成测试在技术上是(自动的)回归测试)。更常用于QA环境-手动或自动

    验收测试:由客户完成的测试,他“接受”交付的软件

    不能评论(声誉很低:-|),因此

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

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

    根据定义,集成测试必须具有(某种程度上)依赖性的可用性;其他资源和系统被称为环境更具代表性。用于测试的数据可以是模拟的,也可以是真实生产数据的一个小的模糊子集

    UAT/验收测试必须向接受软件的QA和业务团队展示真实世界的经验。因此,需要完全集成和真实的数据量以及完全屏蔽/模糊的数据集,以提供真实的性能和最终用户体验


    其他“ILITE”也可能需要环境尽可能接近现实,以模拟生产体验,例如性能测试、安全性,

    可能的重复也请看,我无法真正区分回归测试和单元测试。我的意思是,在每次更改/提交之后,仍然要运行单元测试……它们可以捕获新代码引入的错误。“对吗?”亲爱的