songfun 发表于 2004-6-30 14:23:42

浅谈冒烟测试与随机测试

软件测试的种类何其多也,每种测试都有其要达到的目的和实现手段。本文将介绍两种不太普遍的测试类型-冒烟测试与随机测试。

冒烟测试

冒烟测试(smoke testing),据说是微软起的名字。在《微软项目求生法则》一书第14章“构建过程”关于冒烟测试,就是开发人员在个人版本的软件上执行目前的冒烟测试项目,确定新的程序代码不出故障。

冒烟测试的名称可以理解为该种测试耗时短,仅用一袋烟功夫足够了。也有人认为是形象地类比新电路板功基本功能检查。任何新电路板焊好后,先通电检查,如果存在设计缺陷,电路板可能会短路,板子冒烟了。

冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作。冒烟测试的执行者是版本编译人员。

在一般软件公司,软件在编写过程中,内部需要编译多个版本(Builds),但是只有有限的几个版本需要执行正式测试(根据项目开发计划),这些需要执行的中间测试版本,在刚刚编译出来后,软件编译人员需要进行基本性能确认测试,例如是否可以正确安装/卸载,主要功能是否实现,是否存在严重死机或数据严重丢失等Bug。如果通过了该测试,则可以根据正式测试文档进行正式测试。否则,就需要重新编译版本,再次执行版本可接收确认测试,直到成功。

新版本的基本功能确认检查的测试,有的公司成为版本健康检查(Build Sanity Check)。对于编译的本地化软件新版本,除了进行上面提到的各种测试检查,还要检查是否在新的本地化版本中正确包含了全部应该本地化的文件。可以通过采用文件和目录结构比较工具,首先比较源语言版本和本地化版本的文件和目录中的文件数目、文件名称和文件日期等,这个过程称为版本镜像检查(Build Image Check)。其次,分别安装源语言版本和本地化版本,比较安装后的文件和目录结构中的文件数目、文件名称和文件日期等,这个过程称为版本安装检查(Build Installing Check)。

随机测试

在软件测试中除了根据测试样例和测试说明书进行测试外,还需要进行随机测试(Ad-hoc testing),主要是根据测试者的经验对软件进行功能和性能抽查。随机测试是根据测试说明书执行样例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。

随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试样例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressive testing)一起进行。

理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高。

[ Last edited by songfun on 2004-6-30 at 14:25 ]

greenhouse 发表于 2004-8-15 13:36:54

多谢指导,我还是第一次听说冒烟测试

njenelly 发表于 2004-11-27 16:14:34

以前以为随机测试,只是在测试刚开始或者完成之后进行的完备性测试步骤。。谢谢。。。

saxifrage 发表于 2004-12-3 14:48:02

第一次听说冒烟测试

Originally posted by greenhouse at 2004-8-15 01:36 PM:
多谢指导,我还是第一次听说冒烟测试
同感。

dot1980 发表于 2004-12-17 11:21:18

以前也听说过冒烟测试,但是头一次理解,谢谢

lhy 发表于 2004-12-22 16:54:23

听过冒烟测试,但我的理解好象是错误的,谢谢提醒

rosatesting 发表于 2004-12-23 17:41:03

第一次听说冒烟测试

第一次听说冒烟测试,学到了不少东西呢。

cl2110 发表于 2004-12-28 11:24:29

也是第一次噢

jiping_xu 发表于 2004-12-30 16:55:36

Originally posted by lhy at 2004-12-22 04:54 PM:
听过冒烟测试,但我的理解好象是错误的,谢谢提醒






听说过冒烟测试,好象以前的理解太简单了,没这个详细
谢谢楼主解释的这么详细
辛苦了;););)

wangjihui1980 发表于 2005-3-15 16:01:20

我还以为冒烟测试就是把电路板折腾冒烟了的测试呢,呵呵。才疏学浅,才疏学浅啊!

sindy_yao 发表于 2005-3-24 17:25:27

多谢指导

以前听说过冒烟测试,但不知道什么是冒烟测试

maxbo 发表于 2005-3-26 14:39:45

多谢知道!

rien2128 发表于 2005-3-31 16:45:54

我看过一本书,上面是这样介绍(Smoke Test)的:

前哨测试(Smoke test):每次编译构建的测试版本,必须通过前哨测试决定这个版本是否可以引起其他更多的并发问题(Side Effects),通过前哨测试可以推断出问题是在测试版本的第几版发生的。

texiang 发表于 2005-6-23 15:56:48

汗,与我学的..........区别好大..............,我学的时候,说冒烟测试...是一种强度测试,即针对整个系统,进行大批量数据操作,看看系统是否能够承受得了.................不过我想我学的不算是很专业的缘故吧,谢谢楼主

chellyna 发表于 2005-6-24 09:17:57

就我的理解也发表几句
冒烟测试:测试对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作,就比如是,出现一个BUG之后,开发人员修复了这个BUG后,确认是否真正修复了这个BUG,或者是看看对其它模块有什么影响,针对这个问题而进行的专门的测试.
随机测试:没有根据一定的测试文档而进行的测试,只是凭自己的经验而进行的测试.
不知这样理解对不对

fengzi_015 发表于 2005-8-3 20:23:46

Originally posted by Jamesniu at 2005-3-11 09:13:
Best Practices
IEEE Software, Vol. 13, No. 4, July 1996

Daily Build and Smoke Test
If you want to create a simple computer program consisting of only one file, you merely need to compile a ...

:o 这是什么啊,看得头大了,:s E文不好。

cuiqiliang 发表于 2005-10-18 15:38:17

感谢版主songfun转载我以前写的这篇小文,如果能写出原文出处和作者就更好了!

wangjh 发表于 2006-4-5 13:37:09

我们公司的冒烟测试可能就是新版本的基本功能确认检查的测试,但只是把基本功能大体实现一遍,并不像楼主说的那样。
^_^   长知识   写了

snice 发表于 2006-8-15 15:37:43

这下明白了冒烟测试的定义了!

se.stevenliu 发表于 2006-12-6 13:25:52

我并没有真正做过Smoke Test, 非常感谢斑竹的文章!
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 浅谈冒烟测试与随机测试