skinapi 发表于 2005-8-10 13:38:43

[读后感]如何复现不可复现的Bug

文章来自以下链接:
http://skinapi.cnblogs.com/archive/2005/08/07/209426.html   
      从标题来看大家可能会觉得晕,这里说到的不可复现是指这些Bug有时出现,有时候不出现。相信大家在测试过程中肯定遇到过这种Bug,不少这种不可复现的Bug定位起来非常困难,可能很长时间都不能得到解决。能否复现这些不可复现的Bug成为大家关注的一个话题,最近国外的测试专家James Bach、Jonathan Kohl等对这个话题进行了一些探讨,这里把他们的一些思路理出来和大家分享。
      要想复现不可复现的Bug,需要先提到一个概念就是ET(Exploring Test),也就是探索式测试,这种测试方法是由James Bach首先提出来的,在所掌握的被测对象的信息不是很充分的情况下,这是一种很有效的测试方法,如果大家感兴趣,我再整理一篇ET的文章出来。
      在给大家阐述如何复现不可复现的Bug的思路之前,先说说为什么要复现这些不可复现的Bug(废话两句^_^)。对于整个项目或者产品而言,如果这些不可复现的Bug是很严重的Bug,比如导致系统崩溃等,如果不能及时、准确的定位和解决,最终发布出来的软件到达用户手中后,一旦出现势必会影响软件已经公司在用户心中的形象,严重的会“迫使”用户选择竞争对手的产品,这些显然都是公司所不愿看到的。而对于测试人员而言,出现了这些不可复现的Bug,实际上是一次很好的锻炼和提高机会,如果只是提交缺陷报告将这个大皮球踢给开发人员,不仅丧失了一次提高测试水平的机会,还有可能破坏和开发人员之间的关系。
      废话完了,进入正题。当出现不可复现的Bug时,大家可以从以下五个方面来进行考虑:
1、被测对象的版本信息
      我测试的到底是哪个版本,这主要是有两个作用:一是确认我测试的是正式的软件版本,如果不是就先记录下该问题,然后选择正式的版本进行测试(开发人员基于尝试的一次非正规的修改可能会导致不可复现的Bug);二是可以和其它版本进行对比,如果其它的版本没有类似的问题,就可以去对比这两个版本之间的区别。
2、环境
      这里的环境是指出现不可复现的Bug时所对应的测试环境等,比如测试所用的计算机,如果出现不可复现的Bug,那我换一台机器是不是还会出现类似的问题,也就是说通过环境的改变来进一步搜集不可复现Bug的相关信息。
3、模式
      这里的模式是指我对这个Bug如何出现的一个理解,先给这个Bug设定一个模式,比如是不是数据库通信中断,然后再进行测试,收集更多的信息去修改和完善这个模式,这样不断进行,最终直到Bug能完全复现为止,这个时候只要使用这个模式就可以复现出Bug了。
4、人
      这里提到的人有两个含义:一是测试是由人来进行的,人的操作、人的思维方式会有不同,通过分析这些信息也有可能找到这些不可复现的Bug的蛛丝马迹;二是想复现不可复现的Bug,往往需要多个人之间的相互协作,比如测试人员、开发人员等,通过大家的沟通和协作就能更容易去复现了。
5、测试工具
      通过一些debug工具或者log工具等搜集内存等信息,根据这些信息来进行分析,找出不同信息之间的共同点,比如某一块内存始终都会被改写等,通过这种方式来去复现Bug。
      上面的五个方面都是和ET的思想紧密相关的,通过不断的测试和不断的信息收集和分析,逐步的把模糊的、不确定的测试变成清晰的、确定的测试,这样就能复现那些不能复现的Bug了。考虑信息时可以从以上五个方面来进行考虑。
      相应的文章链接:
http://www.kohl.ca/blog/archives/000115.html
http://blackbox.cs.fit.edu/blog/james/archives/000197.html

secat 发表于 2005-8-11 14:02:25

我有几次遇到过不小心发现的bug。我曾经碰到一个问题,对系统进行了一系列的操作后,跳出了一个弹出框,报出很奇怪的错误,我自认为还能重现,当场没有把那个弹出框捕捉下来。等我试图再去重现时怎么也重现不了,让我很诧异,很困惑,让几个人操作也没重现,自己甚至花了半天的时间试图一一按之前的操作再执行也没用。这样的情况还碰到到几次,不过都由于没法重现不了了之了,遗憾!
我想按上面仁兄的建议,只有靠测试工具来解决,通过查找历史查看到底为什么了。

connie 发表于 2005-8-12 09:09:49

good,最近刚好碰到类似情况。正考虑用工具再尝试一下,斑竹的信息给得非常及时啊。:)

confusion 发表于 2005-8-31 17:49:41

实际工作中,还是很难的,遗憾呐

skinapi 发表于 2005-8-31 20:42:43

实际工作中还是不少的吧,呵呵。

依伊卜舍 发表于 2005-9-6 21:27:07

有的时候很难,我现在做的是MP3的firmware测试,有时不小心发现的bug又不能存下来,重现不出来真的是很头大的。

skinapi 发表于 2005-9-6 21:43:11

所以要么有log信息,要么进行录像,虽然重复做很麻烦,但还是很有价值的,这样才能记录下不可复现的Bug。

Jimmyshao 发表于 2005-9-9 23:10:28

找个键盘鼠标记录器。。。

金品炒青 发表于 2005-12-21 19:14:51

根据现象分析了

不过有时候容易忽略表象

jenry1234 发表于 2005-12-21 20:05:23

这很难说了,有的时候是会出现,有的时候又不能重现,即使把执行步骤录制下来.可能原因版主已经罗列出来了.但是想重现用什么工具的话还是没有试过哦!
如果能够找到原因的话,那么解决方法我想又会有一门新的技术诞生了.

xiaoye_china 发表于 2005-12-22 17:23:51

重现BUG 有时候确实很头疼,比如说日本那边测试出的BUG 但是在这边确无论如何都不能重现
所以我们这些人就苦了,要不段的测试,进行一些TE性测试.测试的遍数也在不段的增加
哎!没有什么最有效的办法的.

阿布虎 发表于 2005-12-22 18:07:04

楼上想法不错哦

yongming566 发表于 2005-12-27 14:49:02

哎!的确是哈!不同的环境,有的时候BUG的确是不一样啊!
前一段时间,我在测试DLNA的时间,明明是不能播放,但台湾那边的可以正常播放。弄得台湾那边的人不相信我们这边人员的测试能力,郁闷了。弄得我的绩效口掉一大截。
这个BUG到现在还存在

感觉我说的跟楼主的好象有点不太一样哈!
只是苦闷,吐吐苦水,哈哈!

j-r-j 发表于 2006-11-18 14:58:37

正在努力考虑中……

ShaLongBus 发表于 2006-11-19 20:04:34

遇到这种现象,首先是记录下来,然后才尝试去重现,不能重现时,可以再按楼主的做法进行排查。相信随着功力的增加,不可重现的Bug会越来越少。

lana.li 发表于 2006-12-3 12:26:37

有专门的“屏幕录像专家”软件可以考虑呀

acmcs 发表于 2006-12-11 18:09:32

回复 #2 secat 的帖子

当问题出现的时候,尽快记录,是最重要啊

enjoytest 发表于 2006-12-11 19:11:01

呵呵,好贴

enjoytest 发表于 2006-12-11 19:11:53

能不能详细说说怎么样捕捉分析内存记录呀?
极度关注中.............................

alandeng1987 发表于 2007-2-5 19:35:38

虽然测试过程中可以通过工具来抓LOG
可是总不能在测试过程中一直开着抓LOG工具吧
但要是不开,那万一出现了不能重现的问题,那又没有任何根据了
所以这是很矛盾的
一般BUG都是可以重现的,至于一般所说的不能重现的问题,肯定有它的规律(比如:测试的环境,测试的硬件等等)
还有就是可能因为软件运行一段时间后会出现问题
所以最好是要用相同的硬件,尽量模拟当时的环境和操作,那样应该就不会存在不能重现的问题了
页: [1] 2
查看完整版本: [读后感]如何复现不可复现的Bug