什么是烟雾testing,它会对我做什么?

我以为我明白,一个烟雾服务器被用于持续集成来衡量项目的性能和testing覆盖率。 这基本上是正确的吗? 抽烟testing程序意味着什么? 这是否意味着要连续应用烟雾服务器上定义的testing,以便能够确定特定时间段内的性能下降情况?

烟雾testing是在实际testing之前运行testing的一套基本便宜的程序。 它旨在validation构build是否已成功部署,并且所有testing环境。 方面正在运行,并准备好实际的testing过程。 这样可以节省您将testing的全部内容带到错误的构build中,并意识到您已经在糟糕的环境中进行了testing。 或错误地部署构build可能为时已晚。

该术语起源于硬件修复 ,并已应用于软件。 这是一个快速testing,看看应用程序在第一次运行时是否“着火”。 如上所述,只是为了确保你不浪费一大堆时间,把它们放在明显被破坏的东西上。

打开它,看看有没有烟冒出来。

烟雾testing不是性能testing或回归预防testing。

烟雾testing是一套您最高优先级的全自动testing。 即使您的常规构build成功,您的产品也有可能以非常基本的方式被破坏,使其100%无法使用。 烟雾testing旨在testing核心function的水平。 没有通过烟雾testing的版本很可能会失败大部分的自动化testing。

如果烟雾testing失败,通常意味着你失去了生产力,因为构build不可用,不能进行testing等。烟雾testing失败通常需要立即修复,时间为几小时而不是几天。

烟雾testing的重要方面是可以快速运行。 你应该总是运行某种烟雾testing。 许多团队都有足够的资源在其日常或持续集成构build(这是善良的)上运行更大的testing套件,但烟雾testing应被视为最低限度。

烟雾testing的维基百科页面实际上是相当不错的。 它包含一个指向Steve McConnel(“代码完整”)的文章,该文章在IEEE Software 13(4),1996的最佳实践部分中被称为“每日构build和烟雾testing” 。

我认为烟雾testing是unit testing和其他formstesting的先决条件:如果烟雾testing失败,甚至不需要启动unit testing。

我们使用术语“冒烟testing”来指对应用程序或产品执行快速基本testing的testing,以使其符合进一步testing(如集成testing或functiontesting)的要求。 如果应用程序未能完成这些高级testing所需的一些基本事情,那么进行集成testing或其他高级testing就没有多大用处。 例如,我们有一个基于Web的应用程序,我们做抽烟testing,以确保我们可以加载所有的网页,让用户login/注销等。这些是基本的东西,应该与应用程序使其可testing。 如果页面甚至没有加载,或者用户甚至无法login,我们就无法在function和集成testing方面做很多事情。 我们对每一个构build都进行抽烟testing,然后进行function和集成testing。

烟雾testing是集成testing的第一步。 作为一名开发人员,您已将所有部分放在一起,并确保您的应用程序在将其交给您的QA团队进行“真实”testing之前运行。

我想写更多,但马德要打我,以正确的答案… 🙂

*在进行testing之前检查应用程序的基本和关键特征被称为烟雾testing。 *在烟雾testing中,我们检查基本和关键function的正向stream程,以检查构build是否可testing。