单元测试、功能测试、验收测试和集成测试(以及我没有提到的任何其他类型的测试)之间有什么区别?


当前回答

一些(相对而言)反对过度嘲讽和纯单元测试的近期想法:

https://www.simple-talk.com/dotnet/.net-framework/are-unit-tests-overused/http://googletesting.blogspot.com/2013/05/testing-on-toilet-dont-overuse-mocks.htmlhttp://codebetter.com/iancooper/2011/10/06/avoid-testing-implementation-details-test-behaviours/http://cdunn2001.blogspot.com/2014/04/the-evil-unit-test.htmlhttp://www.jacopretorius.net/2012/01/test-behavior-not-implementation.html为什么大多数单元测试都是浪费

其他回答

单元测试:对应用程序中单个模块或独立组件的测试被称为单元测试,单元测试将由开发人员完成。

集成测试:组合所有模块并测试应用程序,以验证模块之间的通信和数据流是否正常工作,该测试也由开发人员执行。

功能测试检查应用程序的单个功能意味着功能测试

验收测试——无论构建应用程序是否符合客户需求,以及客户规范,该测试都由最终用户或客户完成,这就是验收测试

这很简单。

单元测试:这是由具有编码知识的开发人员实际完成的测试。该测试在编码阶段完成,是白盒测试的一部分。当一个软件开始开发时,它被开发成一段代码或代码片段,称为一个单元。对这些单元的单独测试称为开发人员进行的单元测试,以找出某些人为错误,如缺少语句覆盖等。。功能测试:该测试在测试(QA)阶段完成,是黑盒测试的一部分。先前编写的测试用例的实际执行。这个测试实际上是由测试人员完成的,他们找到站点中任何功能的实际结果,并将这个结果与预期结果进行比较。如果他们发现任何差异,那么这就是一个错误。验收测试:即UAT。这实际上是由测试人员以及开发人员、管理团队、作者、作家以及所有参与该项目的人员完成的。确保项目最终准备好交付,无bug。集成测试:代码单元(在第1点中解释)彼此集成以完成项目。这些代码单元可以用不同的编码技术编写,也可以是不同的版本,因此开发人员进行测试,以确保所有代码单元都与其他代码单元兼容,不存在任何集成问题。

一些(相对而言)反对过度嘲讽和纯单元测试的近期想法:

https://www.simple-talk.com/dotnet/.net-framework/are-unit-tests-overused/http://googletesting.blogspot.com/2013/05/testing-on-toilet-dont-overuse-mocks.htmlhttp://codebetter.com/iancooper/2011/10/06/avoid-testing-implementation-details-test-behaviours/http://cdunn2001.blogspot.com/2014/04/the-evil-unit-test.htmlhttp://www.jacopretorius.net/2012/01/test-behavior-not-implementation.html为什么大多数单元测试都是浪费

我将用一个实际的例子来解释这一点,而不是理论上的东西:

开发人员编写代码。尚未实现GUI。此级别的测试验证功能是否正常工作,数据类型是否正确。此测试阶段称为单元测试。

当开发GUI,并将应用程序分配给测试人员时,他将与客户机验证业务需求并执行不同的场景。这叫做功能测试。这里我们将客户机需求与应用程序流进行映射。

集成测试:假设我们的应用程序有两个模块:人力资源和财务。HR模块之前已交付并测试。现在,金融已经开发并可供测试。相互依赖的特性现在也可用,因此在这个阶段,您将测试两者之间的通信点,并验证它们是否按照要求工作。

回归测试是另一个重要的阶段,它是在任何新的开发或bug修复之后完成的。其目的是验证以前的工作功能。

http://martinfowler.com/articles/microservice-testing/

Martin Fowler的博客文章谈到了测试代码的策略(尤其是在微服务架构中),但大部分都适用于任何应用程序。

我将引用他的总结幻灯片:

单元测试-测试应用程序中最小的可测试软件,以确定它们是否按预期运行。集成测试-验证组件之间的通信路径和交互,以检测接口缺陷。组件测试-将所使用软件的范围限制在被测试系统的一部分,通过内部代码接口,并使用双重测试隔离代码在其他部件的测试下。契约测试-验证外部服务边界处的交互,断言它符合消费者期望的契约服务端到端测试-验证系统是否满足外部需求并实现其目标,测试整个系统,从端到端。