51Testing软件测试论坛

标题: [读后感]如何复现不可复现的Bug [打印本页]

作者: skinapi    时间: 2005-8-10 13:38
标题: [读后感]如何复现不可复现的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
我有几次遇到过不小心发现的bug。我曾经碰到一个问题,对系统进行了一系列的操作后,跳出了一个弹出框,报出很奇怪的错误,我自认为还能重现,当场没有把那个弹出框捕捉下来。等我试图再去重现时怎么也重现不了,让我很诧异,很困惑,让几个人操作也没重现,自己甚至花了半天的时间试图一一按之前的操作再执行也没用。这样的情况还碰到到几次,不过都由于没法重现不了了之了,遗憾!
我想按上面仁兄的建议,只有靠测试工具来解决,通过查找历史查看到底为什么了。
作者: connie    时间: 2005-8-12 09:09
good,最近刚好碰到类似情况。正考虑用工具再尝试一下,斑竹的信息给得非常及时啊。:)
作者: confusion    时间: 2005-8-31 17:49
实际工作中,还是很难的,遗憾呐
作者: skinapi    时间: 2005-8-31 20:42
实际工作中还是不少的吧,呵呵。
作者: 依伊卜舍    时间: 2005-9-6 21:27
有的时候很难,我现在做的是MP3的firmware测试,有时不小心发现的bug又不能存下来,重现不出来真的是很头大的。
作者: skinapi    时间: 2005-9-6 21:43
所以要么有log信息,要么进行录像,虽然重复做很麻烦,但还是很有价值的,这样才能记录下不可复现的Bug。
作者: Jimmyshao    时间: 2005-9-9 23:10
找个键盘鼠标记录器。。。
作者: 金品炒青    时间: 2005-12-21 19:14
根据现象分析了

不过有时候容易忽略表象
作者: jenry1234    时间: 2005-12-21 20:05
这很难说了,有的时候是会出现,有的时候又不能重现,即使把执行步骤录制下来.可能原因版主已经罗列出来了.但是想重现用什么工具的话还是没有试过哦!
如果能够找到原因的话,那么解决方法我想又会有一门新的技术诞生了.
作者: xiaoye_china    时间: 2005-12-22 17:23
重现BUG 有时候确实很头疼,比如说日本那边测试出的BUG 但是在这边确无论如何都不能重现
所以我们这些人就苦了,要不段的测试,进行一些TE性测试.测试的遍数也在不段的增加
哎!没有什么最有效的办法的.
作者: 阿布虎    时间: 2005-12-22 18:07
楼上想法不错哦
作者: yongming566    时间: 2005-12-27 14:49
哎!的确是哈!不同的环境,有的时候BUG的确是不一样啊!
前一段时间,我在测试DLNA的时间,明明是不能播放,但台湾那边的可以正常播放。弄得台湾那边的人不相信我们这边人员的测试能力,郁闷了。弄得我的绩效口掉一大截。
这个BUG到现在还存在

感觉我说的跟楼主的好象有点不太一样哈!
只是苦闷,吐吐苦水,哈哈!
作者: j-r-j    时间: 2006-11-18 14:58
正在努力考虑中……
作者: ShaLongBus    时间: 2006-11-19 20:04
遇到这种现象,首先是记录下来,然后才尝试去重现,不能重现时,可以再按楼主的做法进行排查。相信随着功力的增加,不可重现的Bug会越来越少。
作者: lana.li    时间: 2006-12-3 12:26
有专门的“屏幕录像专家”软件可以考虑呀
作者: acmcs    时间: 2006-12-11 18:09
标题: 回复 #2 secat 的帖子
当问题出现的时候,尽快记录,是最重要啊
作者: enjoytest    时间: 2006-12-11 19:11
呵呵,好贴
作者: enjoytest    时间: 2006-12-11 19:11
能不能详细说说怎么样捕捉分析内存记录呀?
极度关注中.............................
作者: alandeng1987    时间: 2007-2-5 19:35
虽然测试过程中可以通过工具来抓LOG
可是总不能在测试过程中一直开着抓LOG工具吧
但要是不开,那万一出现了不能重现的问题,那又没有任何根据了
所以这是很矛盾的
一般BUG都是可以重现的,至于一般所说的不能重现的问题,肯定有它的规律(比如:测试的环境,测试的硬件等等)
还有就是可能因为软件运行一段时间后会出现问题
所以最好是要用相同的硬件,尽量模拟当时的环境和操作,那样应该就不会存在不能重现的问题了
作者: wawa133    时间: 2007-2-6 11:12
即然说到是不可复现的,概率就是很小,那么就用楼主说的方法,也未必可以重现.如果能重现的话,那就不存在不可复现这个说法了.
就如#2楼所说的,出现问题后,用同一个版本,同一台机器,同样的操作方式也是不可重现的,那么你就算是用上述的方法也未必可以重现,也只能是说尽量找到有可能影响到软件Bug的问题啦.
作者: daisy.jiang    时间: 2007-2-7 15:46
同意楼上的观点!
我昨天晚上做testing 的时候就发现了一个很大的bug,尽管数据库的operation log对我进行的操作记录得很详细,但是我再次在同一台机子上进行相同的一组操作却没有出现相同的exception现象,developer leader说要尽量找到bug重现的方式,偶今天都试了一天了,未果!!!  迷茫中sdlkfj9
Who can help me?
作者: kathy827    时间: 2007-2-27 17:34
这种情况很普遍的啦
作者: dongmusic    时间: 2007-2-27 23:53
首先谢谢楼主的文章,文章还是提高了一些好的思路,但是具体工作的时候还是有一定的困难的。
作者: 鱼鳞    时间: 2007-2-28 11:41
这个东西真的不好说,有一次我碰到一个异常问题,我们测试组的人员在场都看到我连续三次操作都会重现的问题,开发人员一过来就不存在了,以后的跟踪测试中也是,我们就跟开发人员开玩笑,说他们给他们开发的软件施了魔法
尽力吧!
作者: 鱼鳞    时间: 2007-2-28 11:42
除了楼主推荐的方法都要尝试外,也可以尽量扩展发散思维,多想一些异常操作
作者: 懒是一种美德    时间: 2007-3-6 14:00
原帖由 ShaLongBus 于 2006-11-19 20:04 发表
遇到这种现象,首先是记录下来,然后才尝试去重现,不能重现时,可以再按楼主的做法进行排查。相信随着功力的增加,不可重现的Bug会越来越少。

测试最好还是做什么都记录下来,出问题的那些提交上去,没问题的保存一下,肯定会有用。
作者: ccsosemail    时间: 2007-3-8 09:57
原帖由 daisy.jiang 于 2007-2-7 15:46 发表
同意楼上的观点!
我昨天晚上做testing 的时候就发现了一个很大的bug,尽管数据库的operation log对我进行的操作记录得很详细,但是我再次在同一台机子上进行相同的一组操作却没有出现相同的exception现象,de ...


这就要分析当时数据库的情况了,比如数据库当时所存储的数据量是否过大,或者在某一时刻有大批量的数据往数据库中存储等。
以上的情况我也碰到过,可以尝试使用压力测试的手段来测试数据库,观察问题是否可以再现。
作者: bowenbu    时间: 2007-3-12 10:39
我给一个数据库应用软件做测试时,在数据处理层出现了异常。这个异常是不稳定的出现,最后断定是硬件的原因。因为机器比较烂,CPU时间片用完所致。这个应该归为环境吧。
作者: lidd863    时间: 2007-3-16 15:47
真的希望有可以记录的工具
作者: qianqian06660    时间: 2007-3-26 15:43
思路是好的,可实际操作中发现还是很困难
作者: kidd85612    时间: 2007-3-30 12:45
sdlkfj2 sdlkfj2
高深
看不懂
学习ing ```
作者: ioiojoyer    时间: 2007-4-16 15:57
不错,之前面试中还被问到过这个问题呢,当时汗了////////
作者: black_butterfly    时间: 2007-4-20 14:37
有些问题很难复现的,个人觉得除了努力加运气外,其他也没招儿了。
作者: wangvivian    时间: 2007-4-20 15:10
学习一下,有助于提高英语和技术




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2