[读后感]如何复现不可复现的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 我有几次遇到过不小心发现的bug。我曾经碰到一个问题,对系统进行了一系列的操作后,跳出了一个弹出框,报出很奇怪的错误,我自认为还能重现,当场没有把那个弹出框捕捉下来。等我试图再去重现时怎么也重现不了,让我很诧异,很困惑,让几个人操作也没重现,自己甚至花了半天的时间试图一一按之前的操作再执行也没用。这样的情况还碰到到几次,不过都由于没法重现不了了之了,遗憾!
我想按上面仁兄的建议,只有靠测试工具来解决,通过查找历史查看到底为什么了。 good,最近刚好碰到类似情况。正考虑用工具再尝试一下,斑竹的信息给得非常及时啊。:) 实际工作中,还是很难的,遗憾呐 实际工作中还是不少的吧,呵呵。 有的时候很难,我现在做的是MP3的firmware测试,有时不小心发现的bug又不能存下来,重现不出来真的是很头大的。 所以要么有log信息,要么进行录像,虽然重复做很麻烦,但还是很有价值的,这样才能记录下不可复现的Bug。 找个键盘鼠标记录器。。。 根据现象分析了
不过有时候容易忽略表象 这很难说了,有的时候是会出现,有的时候又不能重现,即使把执行步骤录制下来.可能原因版主已经罗列出来了.但是想重现用什么工具的话还是没有试过哦!
如果能够找到原因的话,那么解决方法我想又会有一门新的技术诞生了. 重现BUG 有时候确实很头疼,比如说日本那边测试出的BUG 但是在这边确无论如何都不能重现
所以我们这些人就苦了,要不段的测试,进行一些TE性测试.测试的遍数也在不段的增加
哎!没有什么最有效的办法的. 楼上想法不错哦 哎!的确是哈!不同的环境,有的时候BUG的确是不一样啊!
前一段时间,我在测试DLNA的时间,明明是不能播放,但台湾那边的可以正常播放。弄得台湾那边的人不相信我们这边人员的测试能力,郁闷了。弄得我的绩效口掉一大截。
这个BUG到现在还存在
感觉我说的跟楼主的好象有点不太一样哈!
只是苦闷,吐吐苦水,哈哈! 正在努力考虑中…… 遇到这种现象,首先是记录下来,然后才尝试去重现,不能重现时,可以再按楼主的做法进行排查。相信随着功力的增加,不可重现的Bug会越来越少。 有专门的“屏幕录像专家”软件可以考虑呀
回复 #2 secat 的帖子
当问题出现的时候,尽快记录,是最重要啊 呵呵,好贴 能不能详细说说怎么样捕捉分析内存记录呀?极度关注中............................. 虽然测试过程中可以通过工具来抓LOG
可是总不能在测试过程中一直开着抓LOG工具吧
但要是不开,那万一出现了不能重现的问题,那又没有任何根据了
所以这是很矛盾的
一般BUG都是可以重现的,至于一般所说的不能重现的问题,肯定有它的规律(比如:测试的环境,测试的硬件等等)
还有就是可能因为软件运行一段时间后会出现问题
所以最好是要用相同的硬件,尽量模拟当时的环境和操作,那样应该就不会存在不能重现的问题了
页:
[1]
2