什么是单元测试,集成测试,烟雾测试,回归测试?

什么是单元测试,集成测试,烟雾测试,回归测试,它们之间有什么区别? 我可以为他们每个人使用哪些工具?

例如,我使用JUnit和NUnit进行单元测试和集成测试。 是否有任何烟雾测试或回归测试工具?


  • 单元测试 :指定并测试一个类的单一方法的合同的一个点。 这应该有一个非常狭窄和明确的范围。 对外部世界的复杂依赖和交互被扼杀或嘲弄。

  • 集成测试 :测试多个子系统的正确互操作。 这里有整个频谱,从测试两个类别之间的整合到测试与生产环境的整合。

  • 烟雾测试(aka Sanity check) :一个简单的集成测试,我们只需检查被测试系统何时被调用就能正常返回并且不会爆炸。 这与电子产品类比,在开启电路时首先进行测试:如果它抽烟,那很糟糕。

  • 回归测试 :修正错误时编写的测试。 它确保这个特定的错误不会再发生。 全名是“非回归测试”。 它也可以是在更改应用程序之前进行的测试,以确保应用程序提供相同的结果。

  • 对此,我将补充:

  • 验收测试 :测试功能或用例是否正确实施。 它与集成测试类似,但重点关注用例而不是涉及的组件。

  • 系统测试 :将系统测试为黑匣子。 在测试过程中,其他系统上的依赖往往被嘲弄或扼杀(否则它将更多地是集成测试)。

  • 飞行前检查 :在类似生产环境中重复进行的测试,以减轻“建立在我的机器上”症状。 通常这是通过在类似环境的生产环境中进行验收或抽烟测试来实现的

  • PS:人们声称烟雾测试来源于管道系统中烟气在连接到供水系统之前被泵入管道系统。 如果冒出任何烟雾,管道没有正确密封。 这在历史上可能更准确,但我觉得它不那么有趣。


  • 单元测试 :自动测试以测试课程的内部运作。 它应该是一个与其他资源无关的独立测试。
  • 集成测试 :在环境中完成的自动测试,与单元测试类似,但具有外部资源(数据库,磁盘访问)
  • 回归测试 :在实施新功能或错误修复之后,您将重新测试过去有效的场景。 这里介绍了新功能打破现有功能的可能性。
  • 烟雾测试 :首先测试哪些测试人员可以推断他们是否会继续测试。

  • 每个人的定义都会略有不同,并且常常存在灰色地带。 然而:

  • 单元测试:这一点点(尽可能隔离)工作吗?
  • 集成测试:这两个(或更多)组件是否一起工作?
  • 烟雾测试:整个系统(尽可能接近生产系统)合理安装在一起吗? (即我们是否有理由相信它不会造成黑洞?)
  • 回归测试:我们是否无意中重新引入了我们之前修复的任何错误?
  • 链接地址: http://www.djcxy.com/p/21407.html

    上一篇: What is Unit test, Integration Test, Smoke test, Regression Test?

    下一篇: JavaScript unit test tools for TDD