单元测试、功能测试、验收测试和集成测试(以及我没有提到的任何其他类型的测试)之间有什么区别?
当前回答
一些(相对而言)反对过度嘲讽和纯单元测试的近期想法:
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为什么大多数单元测试都是浪费
其他回答
单元测试:对应用程序中单个模块或独立组件的测试被称为单元测试,单元测试将由开发人员完成。
集成测试:组合所有模块并测试应用程序,以验证模块之间的通信和数据流是否正常工作,该测试也由开发人员执行。
功能测试检查应用程序的单个功能意味着功能测试
验收测试——无论构建应用程序是否符合客户需求,以及客户规范,该测试都由最终用户或客户完成,这就是验收测试
重要的是,你知道这些术语对你的同事意味着什么。例如,不同的小组对他们所说的“完全端到端”测试的含义定义略有不同。
我最近在他们的测试中遇到了谷歌的命名系统,我很喜欢它——他们只使用“小”、“中”和“大”来绕过这些争论。为了决定测试属于哪一类,他们会考虑几个因素——运行时间、访问网络、数据库、文件系统、外部系统等等。
http://googletesting.blogspot.com/2010/12/test-sizes.html
我想你当前工作场所的小型、中型和大型之间的区别可能与谷歌有所不同。
然而,这不仅仅关乎范围,还关乎目的。Mark关于测试的不同视角(例如程序员与客户/最终用户)的观点非常重要。
http://martinfowler.com/articles/microservice-testing/
Martin Fowler的博客文章谈到了测试代码的策略(尤其是在微服务架构中),但大部分都适用于任何应用程序。
我将引用他的总结幻灯片:
单元测试-测试应用程序中最小的可测试软件,以确定它们是否按预期运行。集成测试-验证组件之间的通信路径和交互,以检测接口缺陷。组件测试-将所使用软件的范围限制在被测试系统的一部分,通过内部代码接口,并使用双重测试隔离代码在其他部件的测试下。契约测试-验证外部服务边界处的交互,断言它符合消费者期望的契约服务端到端测试-验证系统是否满足外部需求并实现其目标,测试整个系统,从端到端。
一些(相对而言)反对过度嘲讽和纯单元测试的近期想法:
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为什么大多数单元测试都是浪费
单元测试——顾名思义,此方法在对象级别进行测试。测试各个软件组件的任何错误。该测试需要了解程序,并创建测试代码以检查软件是否按预期运行。
功能测试-在不了解系统内部工作的情况下进行。测试人员将通过提供不同的输入和测试生成的输出,尝试通过遵循要求来使用系统。该测试也称为封闭盒测试或黑盒测试。
验收测试-这是软件移交给客户之前进行的最后一次测试。其目的是确保开发的软件满足所有客户要求。有两种类型的验收测试——一种是由开发团队成员进行的,称为内部验收测试(Alpha测试),另一种是客户或最终用户进行的,也称为(Beta测试)
集成测试-已进行单元测试的单个模块彼此集成。通常遵循以下两种方法:
1) 自上而下2) 自下而上