单元,功能,验收和集成测试(以及我未说起的任何其余类型的测试)之间有什么区别? html
一些(相对)最近反对过分模拟和纯单元测试的想法: 架构
单元测试:已知应用程序中单个模块或独立组件的测试是单元测试,单元测试将由开发人员完成。 函数
集成测试:结合全部模块和测试应用程序来验证通讯和模块之间的数据流是否正常工做,此测试也由开发人员执行。 微服务
功能测试检查应用程序的各个功能意味着进行功能测试 oop
验收测试此测试由最终用户或客户完成,不管构建应用程序是否符合客户要求,客户规范是否已知是验收测试 单元测试
我将用一个实际的例子解释你这个,没有理论的东西: 测试
开发人员编写代码。 还没有实现GUI。 此级别的测试将验证函数是否正常工做以及数据类型是否正确。 此测试阶段称为单元测试。 google
开发GUI并将应用程序分配给测试人员时,他会与客户端验证业务需求并执行不一样的方案。 这称为功能测试。 在这里,咱们将客户端需求映射到应用程序流。 编码
集成测试:假设咱们的应用程序有两个模块:人力资源和财务。 HR模块以前已交付并通过测试。 如今财务已经开发并可供测试。 相互依赖的功能如今也可用,所以在此阶段,您将测试二者之间的通讯点,并验证它们是否按要求中的要求运行。 spa
回归测试是另外一个重要阶段,在任何新的开发或错误修复以后完成。 其目的是验证之前的工做功能。
http://martinfowler.com/articles/microservice-testing/
Martin Fowler的博客文章讲述了测试代码的策略(特别是在微服务架构中),但大多数都适用于任何应用程序。
我将引用他的摘要幻灯片:
- 单元测试 - 在应用程序中运行最小的可测试软件,以肯定它们是否按预期运行。
- 集成测试 - 验证组件之间的通讯路径和交互以检测接口缺陷。
- 组件测试 - 将运行的软件的范围限制在被测系统的一部分,经过内部代码接口操做系统,并使用测试双精度将被测代码与其余组件隔离。
- 合同测试 - 验证外部服务边界处的交互,声明它符合消费服务所指望的合同。
- 端到端测试 - 验证系统是否知足外部要求并实现其目标,从头至尾测试整个系统。
这很简单。
单元测试:这是由具备编码知识的开发人员实际进行的测试。 此测试在编码阶段完成,它是白盒测试的一部分。 当一个软件用于开发时,它被开发成一段代码或称为一个单元的代码片。 这些单元的单独测试称为开发人员进行的单元测试,以发现某些人为错误,如缺乏语句覆盖等。
功能测试:此测试在测试(QA)阶段完成,它是黑盒测试的一部分。 之前编写的测试用例的实际执行状况。 此测试实际上由测试人员完成,他们找到站点中任何功能的实际结果,并将此结果与预期结果进行比较。 若是他们发现任何差别,那么这是一个错误。
验收测试:知道为UAT。 这其实是由测试人员以及开发人员,管理团队,做者,编写者以及参与此项目的全部人完成的。 确保项目最终准备好免费提供。
集成测试:代码单元(在第1点中解释)相互集成以完成项目。 这些代码单元可使用不一样的编码技术编写,也可使用不一样的编码技术,所以开发人员能够完成此测试,以确保代码的全部单元与其余单元兼容,而且不存在任何集成问题。