Testing 烟雾测试的附加值是多少?

Testing 烟雾测试的附加值是多少?,testing,Testing,或者也许是我们实施的。我是一个新加入的团队,想要经历这个过程,这似乎让团队中的一些成员感到困惑,包括我。我们得到了我认为是一个用户接受测试或手动操作列表,您将通过查看,看看是否所有的工作。我想它会比这更简单,因为我们只是将应用程序的各个部分划分开来,然后在其中寻找巨大的错误。这将不需要编写脚本,只需单击每个页面,可能需要填写内容,确保提交的内容是正确的。这就引出了我的另一个观点,在我看来,烟雾测试基本上毫无价值。我认为,相反,您应该有单元测试,甚至是自动测试,这些测试将通过一个需求列表来确保这类

或者也许是我们实施的。我是一个新加入的团队,想要经历这个过程,这似乎让团队中的一些成员感到困惑,包括我。我们得到了我认为是一个用户接受测试或手动操作列表,您将通过查看,看看是否所有的工作。我想它会比这更简单,因为我们只是将应用程序的各个部分划分开来,然后在其中寻找巨大的错误。这将不需要编写脚本,只需单击每个页面,可能需要填写内容,确保提交的内容是正确的。这就引出了我的另一个观点,在我看来,烟雾测试基本上毫无价值。我认为,相反,您应该有单元测试,甚至是自动测试,这些测试将通过一个需求列表来确保这类事情正确发生。即使这还没有完成,我认为首先签入代码的开发人员至少会做一个小型冒烟测试,以确保他们的功能在第一时间工作。我们在会议上提出了这一点,因此您可以想象其中的混乱,这让我回到我的问题,我们将从这种烟雾测试中获得什么价值?

任何测试的价值都是增加您对实现的信心。做这样的“冒烟测试”是为了增加信心,让人们相信它确实正确构建了,并且没有重大和令人尴尬的错误,比如UI不会出现。因此,这基本上是一个低工作量的测试,以确认没有真正重大的错误


这听起来可能不是很有用,但我见过经过大量测试的代码在“冒烟测试”中失败,例如,由于构建中意外失败或映像损坏。通常是在向重要客户演示时。

我们在我工作的地方进行这种冒烟测试


最大的价值在于,我们可以确保在将其交给用户进行用户验收测试之前,所有的部件都能装配在一起。我想到的应用程序可以在三台服务器上运行,还可以与一个遗留系统进行通信。确保我们可以运行,并且每个部件都可以与它需要的其他部件进行通信,这是一个简单而快速的过程重要测试。

如果您将冒烟测试定义为“运行系统的基本功能,以确保它们正常工作“那么我认为这是有价值的。单元测试虽然必要,但并不包括所有内容。他们没有发现任何集成错误。至于自动化测试,我还没有看到一个系统可以完全自动化测试,即使你可以,这样的自动化需要时间和精力来完成


基本上,我从中看到的价值是,让我们确保我们今天对代码所做的更改不会破坏昨天的工作。这取决于你的编码实践有多严格,这并不总是一个既定的标准。

我假设你的“冒烟测试”的含义与我的相同——也就是说,尝试以任何可能的方式炸毁程序

20多年前,当我刚刚完成(或者我认为是这样)所见即所得编辑器的一段主要代码时,我认识到了它的价值。我自豪地把它给我的同事看(嘿,德贝尔!),他说:“太好了!”。他立即创建了一个包含1000个字符的段落,复制了数千次,创建了一个大约32MB的文档,删除了所有内容,并将其解压,程序彻底崩溃

我完全被吓坏了,说:“你不能那样做!”。他笑着说:“为什么不呢?”

发现并解决这个问题(一旦您知道阈值事件是什么样子,它就很容易复制)揭示了内存管理中一个微妙而严重的错误。简单的点击按钮测试永远不会发现它


现代相当于此的是模糊测试()。它不能代替逐步的需求测试,但它通常会暴露出其他方法无法解决的问题。

冒烟测试是因为将一个坏掉的软件放在用户手中可能会非常昂贵:它会浪费很多人的时间,可能需要管理、会议等。。修理。因此,为每个构建花费一点时间是值得的,以确保它不会损坏,如果出现问题,可以节省大量时间

一般的规则是:尽早发现问题总是比较便宜的

而且,除非你像用户一样尝试过,否则你无法确定它是否会像它应该的那样工作。总有一些只有人才能发现的意外问题,例如视觉问题、安装问题

因此,在将工作交给用户之前,自动测试应始终辅以(小型)手动测试。

要回答“什么是烟雾测试?”的问题,请假设您正在测试一件电气或电子设备

插入电源并打开电源:

  • 您是否看到它打开(例如屏幕或电源指示灯)?好!
  • 你看到有烟从里面冒出来吗?糟糕
就这些!“烟雾测试”是一种最低限度的测试:不是严格的测试

“冒烟测试”的价值在于它便宜,或者成本效益高:例如,对于一个完整测试成本的1%,它捕获90%的最可能错误。例如,在原始烤面包机工厂中,您可以执行以下操作:

  • 初始设计的昂贵测试
  • 原型的昂贵测试
  • 批量生产线下首件产品的昂贵测试
  • 批量生产线下每一个后续项目的廉价烟雾测试
我不确定这些天“冒烟测试”在软件开发中有什么地位,因为自动化测试已经变得越来越流行。在过去,人们提倡将“每日构建”作为QA度量(特别是帮助实现“持续集成”)。。。然后,广告