songfun 2004-6-30 14:23
浅谈冒烟测试与随机测试
软件测试的种类何其多也,每种测试都有其要达到的目的和实现手段。本文将介绍两种不太普遍的测试类型-冒烟测试与随机测试。
冒烟测试
冒烟测试(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
多谢指导,我还是第一次听说冒烟测试
njenelly 2004-11-27 16:14
以前以为随机测试,只是在测试刚开始或者完成之后进行的完备性测试步骤。。谢谢。。。
saxifrage 2004-12-3 14:48
第一次听说冒烟测试
[quote]Originally posted by [i]greenhouse[/i] at 2004-8-15 01:36 PM:
多谢指导,我还是第一次听说冒烟测试 [/quote]
同感。
dot1980 2004-12-17 11:21
以前也听说过冒烟测试,但是头一次理解,谢谢
lhy 2004-12-22 16:54
听过冒烟测试,但我的理解好象是错误的,谢谢提醒
rosatesting 2004-12-23 17:41
第一次听说冒烟测试
第一次听说冒烟测试,学到了不少东西呢。
cl2110 2004-12-28 11:24
也是第一次噢
jiping_xu 2004-12-30 16:55
[quote]Originally posted by [i]lhy[/i] at 2004-12-22 04:54 PM:
听过冒烟测试,但我的理解好象是错误的,谢谢提醒 [/quote]
听说过冒烟测试,好象以前的理解太简单了,没这个详细
谢谢楼主解释的这么详细
辛苦了;););)
wangjihui1980 2005-3-15 16:01
我还以为冒烟测试就是把电路板折腾冒烟了的测试呢,呵呵。才疏学浅,才疏学浅啊!
sindy_yao 2005-3-24 17:25
多谢指导
以前听说过冒烟测试,但不知道什么是冒烟测试
maxbo 2005-3-26 14:39
多谢知道!
rien2128 2005-3-31 16:45
我看过一本书,上面是这样介绍(Smoke Test)的:
前哨测试(Smoke test):每次编译构建的测试版本,必须通过前哨测试决定这个版本是否可以引起其他更多的并发问题(Side Effects),通过前哨测试可以推断出问题是在测试版本的第几版发生的。
texiang 2005-6-23 15:56
汗,与我学的..........区别好大..............,我学的时候,说冒烟测试...是一种强度测试,即针对整个系统,进行大批量数据操作,看看系统是否能够承受得了.................不过我想我学的不算是很专业的缘故吧,谢谢楼主
chellyna 2005-6-24 09:17
就我的理解也发表几句
冒烟测试:测试对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作,就比如是,出现一个BUG之后,开发人员修复了这个BUG后,确认是否真正修复了这个BUG,或者是看看对其它模块有什么影响,针对这个问题而进行的专门的测试.
随机测试:没有根据一定的测试文档而进行的测试,只是凭自己的经验而进行的测试.
不知这样理解对不对
fengzi_015 2005-8-3 20:23
[quote]Originally posted by [i]Jamesniu[/i] 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 ... [/quote]
:o 这是什么啊,看得头大了,:s E文不好。
cuiqiliang 2005-10-18 15:38
感谢版主songfun转载我以前写的这篇小文,如果能写出原文出处和作者就更好了!
wangjh 2006-4-5 13:37
我们公司的冒烟测试可能就是新版本的基本功能确认检查的测试,但只是把基本功能大体实现一遍,并不像楼主说的那样。
^_^ 长知识 写了
snice 2006-8-15 15:37
这下明白了冒烟测试的定义了!
se.stevenliu 2006-12-6 13:25
我并没有真正做过Smoke Test, 非常感谢斑竹的文章!
wuhuawu09 2006-12-8 11:38
感谢楼主
回复 #12 Jamesniu 的帖子,看不懂...呵呵
enjoytest 2006-12-8 13:09
12楼的资料不错, 不过这次只看了一大半,留下的下次再看吧,好东西要慢慢享用呀,呵呵
newideaway 2006-12-8 13:34
听说
好像听说过^^^^^^^^^^^^^^^^^^
minzhung 2006-12-19 16:59
第一次听说冒烟
positive 2006-12-22 09:18
我也是第一次听说冒烟测试,不过内容很好
jackeyzhang 2006-12-22 09:54
回复 #1 songfun 的帖子
hi, 你们好呀.
jackeyzhang 2006-12-22 10:11
前一段时间去华为面式了,测试的.
rose88 2006-12-27 16:35
又学了一点
webfun_luobutou 2006-12-28 12:30
每天都有新的学问哈
我喜欢!
哈哈
hotivy 2006-12-28 16:28
多谢,多谢~我们做得好像都是随机测试,呵呵~
rainyday32 2007-1-18 13:28
我知道冒烟测试是对软件的主要功能进行测试以确保其可以正常工作,但是不知道的这么具体。
谢谢楼主了
angerswing 2007-1-18 13:41
知道理论但是很少使用
wssgily 2007-1-23 18:49
顶!
烟水寒 2007-1-24 17:27
看了楼主的文章,结合现实公司的运作,可以这样理解:
冒烟测试就是系统测试的预测试,也就是从测试用例中抽取测试级别要求高的用例,对软件的功能进行测试,如果通过基本功能的测试就可以正式转入系统测试阶段,如果不能则要求开发人员进行修改后再回测。
随机测试其实也可以写入测试用例中,实际上也就是采用错误猜测法来设计的测试用例,只是经验越丰富用错误猜测法设计的用例也就越好。(刚开始的新人可以慢慢摸索和积累)
寂寞圣贤 2007-3-20 22:19
感想
谢谢版主,我对这两个概念也比较模糊,不过现在清楚多了!
glassfish 2007-3-21 21:33
冒烟测试,不就是点着烟进行测试么?
:-)
看来不是哦~~~~~
lovealina 2007-4-4 14:23
我是新手,看到这些资料,真是十分感谢!!!
smilebear 2007-4-4 23:14
[quote]原帖由 [i]chellyna[/i] 于 2005-6-24 09:17 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=101015&ptid=584][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
就我的理解也发表几句
冒烟测试:测试对象是每一个新编译的需要正式测试的软件版本,目的是确认软件基本功能正常,可以进行后续的正式测试工作,就比如是,出现一个BUG之后,开发人员修复了这个BUG后,确认是否真正修 ... [/quote]
同意这种理解,确实在不少资料上看到过这样的解释
不过楼主说的听上去也很有道理
不管哪种对哪种不对,实际上都是很不错的测试方法,顶一下!
bqian1986 2007-4-5 10:11
新手,同样!
猫妖木夕 2007-4-11 16:54
前辈是这么教我的,相当于机器,最起码要能启动,能够冒烟了,才能正式启动测试