协慌网

登录 贡献 社区

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

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

例如,我将JUnitNUnit用于单元测试集成测试。是否有用于后两个测试的工具(烟雾测试或回归测试)

答案

  • 单元测试:指定并测试一个类的单一方法合约的一点。这应该具有非常狭窄且定义明确的范围。对外部世界的复杂依赖关系和交互行为是存根或嘲笑的

  • 集成测试:测试多个子系统之间的正确互操作。从两类之间的测试集成,到与生产环境的测试集成,整个过程都有。

  • 冒烟测试(也称为健全性检查) :一种简单的集成测试,我们只检查被测系统被调用时,它会正常返回并且不会崩溃。

    • 冒烟测试与电子设备都是类比,电子设备上电时会进行第一次测试(如果冒烟,那就很糟糕!)...
    • ...,而且显然水暖管道,管道系统实际上是被烟雾弥漫,然后进行目视检查。如果有任何冒烟,则表明系统泄漏。
  • 回归测试:修复错误后编写的测试。它确保不会再次发生此特定的错误。全名是 “非回归测试”。这也可以是在更改应用程序之前进行的测试,以确保应用程序提供相同的结果。

为此,我将添加:

  • 验收测试:测试功能或用例是否正确实现。它类似于集成测试,但侧重于提供的用例,而不是所涉及的组件。

  • 系统测试:将系统测试为黑匣子。在测试过程中,通常会嘲笑或打断对其他系统的依赖关系(否则,它更像是一个集成测试)。

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

  • 单元测试:一种自动测试,用于测试课程的内部运作。它应该是与其他资源无关的独立测试。
  • 集成测试:在环境上完成的自动测试,与单元测试类似,但是具有外部资源(数据库,磁盘访问)
  • 回归测试:实施新功能或错误修复后,您将重新测试过去有效的方案。在这里,您将探讨新功能破坏现有功能的可能性。
  • 冒烟测试:测试人员可以决定是否继续测试的第一个测试。

每个人的定义都会略有不同,并且通常会有灰色区域。然而:

  • 单元测试:这一点点(尽可能孤立)是否起作用?
  • 集成测试:这两个(或更多)组件可以一起工作吗?
  • 冒烟测试:整个系统(尽可能接近生产系统)是否可以合理地相互连接? (即我们有理由相信它不会造成黑洞吗?)
  • 回归测试:我们是否无意中重新引入了先前修复的错误?