如何对待测试中不能重现的BUG
作者:谢金花
在测试过程中,我们总会遇到一些偶然发生的、不能重现的BUG,或者在测试人员那里可以重现,但是在开发人员处却不能重现的BUG。而且偶然发生的“无法重现”的BUG多半是“计划外”的。无论站在开发人员还是测试人员的角度,都不愿意遇到不能重现的BUG,因为这意味着要花更多的时间去查找原因和修改BUG,甚至短期内无法修复,需等待以后再次出现或许才能解决。
一、一般情况下,BUG不能重现的原因主要有以下几点:
(1)环境不一致
这是BUG不能重现的主要原因之一。在开发人员认为这是无效的BUG里面,估计至少有80%的BUG是因为环境不一致的原因造成的。这既包括开发环境和测试环境的不一致,也包括开发环境和系统的实际运行环境不一致。
BUG产生是有一定原因的,它的重现也需要一定的环境。如果没有相应的环境,那么你可能很难重现这个BUG。
从广义上来说,保证或影响系软件的任何因素都是环境。例如,硬件的配置、软件的设置、网络的带宽、网速等。通常,环境中的软件因素有:系统的Build、 Application Server的类型和Version、Operation System 的语言和Version、浏览器的语言和Version等。
就拿我们某一项目来说:在V1.0.5版本的系统测试中,发现某一模块功能出现问题,将这个问题提交到开发人员处,结果开发人员无法重现这个问题,且在开发人员处,该模块功能正常,查找了原因很久,发现可能是版本升级导致,于是将版本回滚到之前的版本,功能恢复正常。
诸如此类由于环境不一致的原因导致的不能重现的BUG,大部分是在开发人员那不能重现,小部分是在测试人员处偶然出现,找不到规律。所以,这就要求我们测试与开发的环境要分开,测试要有自己的独立环境,且测试环境要保持干净、无毒。
(2)浏览器的不当设置
对于Web测试来说,浏览器的设置又是对重现BUG起着重要的作用。下面的几个图片说明了浏览器的几个关键设置:
图1:Internet临时文件的设置
图2:“高级”选项的设置
说明:在“高级”选项中,对测试起重要作用的是“禁止脚步调试”(不选择,即前面不要有勾)和“显示每个脚本错误的通知”(选择它,即前面要出现勾)。
这些设置对重现有关脚本错误的BUG起着重要的作用。根据这些脚本错误的通知,开发人员可以快速发现代码中的错误,并及时修复它。
下面讲解某一项目中由于浏览器设置引起的bug不能重现的例子:
有次版本发布之后,从领导那边反馈回来一个bug。根据以往流程,我们首先对这个BUG进行验证,可是无论如何都重现不了该BUG,于是找到项目经理,让他重现下该BUG,仍旧不能重现。最后项目经理找到领导,了解其操作过程,才发现其浏览器字体设置为“微软雅黑”,而我们的浏览器字体为默认字体。最后将字体修改为“微软雅黑”后该BUG才重现。
(3)内存泄露
某些系统长期运行后出现运行速度慢、反应迟钝等现象,其中一个主要的原因就是内存泄露。有的开发人员没有养成及时回收内存的习惯,结果系统在不断地申请内存空间,却没有一点内存释放。这类错误在短期内不会出现,但当系统长期运行时就会出现,并且由此会引发一系列的问题。此类问题只有经过长时间的运行测试, 才可能会被发现。
这个问题在我们某一项目中也存在过,由于该项目是采用Java语言开发的,Java可以自动回收内存,这就导致了开发人员对及时回收内存问题的忽略,使用时出现内存泄露。
(4)函数接口类型不匹配
此类错误难以重现,并且难以发现它的真正原因,一般只有在查看源代码后才能发现。某些类型的数据会被系统自动转换,一般也不会出现错误;但有些数据被截断或被强制转换成另外一种数据类型时,会出现一些潜在的错误。在集成测试时此类错误最有可能发生。
二、出现不可重现的BUG时,我们应当本着以下原则,实现BUG的重现工作:
(1)重现的人员: 缺陷的重现工作,最好由测试人员去完成,一方面,测试人员的文字描述其实很难包括所有的现象信息,让开发人员重现的难度很大,另一方面,测试人员的重现更有说服力和更快捷。
(2)重现的次数:每个难重现的缺陷,由发现该缺陷的测试人员连续重复测试300次,如果还不能重现,将缺陷状态改为closed;
(3)延长测试时间,努力找到规律。如果市场紧急,由公司级领导特批,相当于高层领导评估风险,就可以先发布软件,但测试和整改继续,留待问题解决后下一版本软件升级;
(4)若确实无法重现,转交项目经理做延迟处理,继续跟踪,若保留一个月都无法重现的,可先关闭,以后重现时再Reopen;
三、遇到无法重现的BUG时,我们应该做到如下几点:
(1)一定要提交
把不可重现的BUG记录下来,以后再遇到的时候可能就会了解发生的原因。同时尽力去查找出错的原因,比如有什么特别的操作,或者一些操作环境等。而且程序员对程序比测试人员熟悉的多,因为测试人员看到的只是程序的外部,无法深入程序内部,也许你提交了,即使无法重新,程序员也会了解问题所在。无法重现的问题再次出现后,也可以直接叫程序员来看看问题。
但是针对一些比较严重的、随机发生无法重现的bug,测试人员提交上去后,有可能会出现以下三个情形:a.开发人员试图重现,重现不出,Reject回来;b.开发人员找不到规律,所以不去解决,问题一直处于Open状态;c.开发人员因为问题难以解决,所以直接Resolved回来,觉得反正是偶发的,先改成解决状态再说。
(2)尽量详细的描述缺陷
尽可能的详细记录BUG产生的相关信息;如重现频率,发生情况并有截图,操作步骤,软件的版本,发生错误时的各种变量、内存、存储器等存储的数据内容,软件出错时的软硬件环境等。
(3)由开发人员进行人工代码走查和工具静态检查
无法重现的代码找对系统最熟悉的开发人员重新Review代码,最好是多人一起查。查代码还找不出来,就要检查操作系统、应用服务器及其环境是否有问题,是否有兼容性问题。或者采用静态检查工具(如pclint,splint等工具)检查代码,消除所有的error与warning。
(4)查看是否正确设置浏览器的选项
对于浏览器设置不正确引起的BUG,设置好浏览器选项,就能使BUG重现。
总之,在遇到某些严重的、却又无法重现的Bug,应积极回忆BUG的症状和所有的环境因素,一丝一毫的细节都不要错过。并与开发人员、DBA、系统设计人员、项目经理等一起分析那些环境因素,根据以往的经验分析影响此Bug重现的重要因素,并在相同的环境上安装同样的系统进行测试,以验证所做的猜测。而对于某些无法重现、但严重程度不是很高的Bug,可以暂时只作记录、而不必花费大量的人力和物力去分析。如果下次又出现了,那么根据发生的频率再去分析是否需要跟踪此Bug。如果需要跟踪它,那么在它又出现后一定要立刻对当时的环境进行截图,如错误信息、界面、日志等。这样也利于开发人员定位、分析它,从而准确、快速地修复它。如果条件允许,测试人员应立即保护现有环境,并邀请相关的开发人员和系统分析人员一起研讨产生此问题的原因和解决方法。
转自:http://express.ruanko.com/ruanko-express_34/technologyexchange8.html
- 大小: 66 KB
- 大小: 73.2 KB
分享到:
相关推荐
本文将从环境不一致、缺少重现操作、测试用例不充分、软件版本不一致、人为错误等几个方面对 Bug 不能重现的原因进行分析,并提出相应的对策。 一、 环境不一致 环境不一致是 Bug 不能重现的主要原因之一。环境...
测试人员应记录每次尝试重现BUG的难度,并据此给出相应的分数。例如,每次操作都能立即复现的BUG可得1分,而难以复现的BUG则得分更高。这样的评估有助于识别那些难以捕捉但可能影响广泛的故障。 其次,测试影响度...
### 软件测试中Bug的状态管理与严重性评估 #### Bug状态(Status) 在软件测试过程中,Bug状态的管理对于追踪缺陷的修复进展至关重要。它不仅帮助团队成员了解每个Bug当前所处的状态,还能有效协调资源,确保问题...
在“QC10.0操作手册”中,可能会详细介绍如何有效地进行bug测试,包括但不限于以下几个步骤: 1. **测试环境准备**:创建与生产环境相似的测试环境,以便准确地模拟真实情况。 2. **测试计划**:明确测试目标,制定...
在软件测试过程中,BUG数据分析是一项至关重要的工作,它涉及到对软件缺陷的全面理解和管理,以提升软件质量和用户体验。首先,我们需要明确缺陷的定义,包括软件未达到产品说明书的功能、表现与说明书不一致、超出...
根据 CMM5 的定义,优先级 1 的 bug 是最严重的,包括功能严重不符合产品说明书、应用程序崩溃、用户信息被破坏或丢失、可重现的不可避免的崩溃、死锁、严重的内存泄漏、功能和性能急剧衰退等。 在实际测试中,测试...
在测试阶段,测试人员发现bug后,需要清晰、准确地向开发人员描述问题,通过录制并分享重现bug的操作步骤,可以大大提高沟通效率,降低误解的可能性。“重现操作步骤,杜绝开发不认账!”这句话体现了该软件在确保...
在软件测试过程中,Bug的管理是一项关键任务,而其中的优先级设定对于团队的工作效率和产品质量至关重要。测试工程师在发现并记录Bug时,需要明确指出其优先级,以便开发团队能够按照优先顺序进行修复。理解并正确...
在软件测试过程中,创建bug是发现问题并推动修复的关键步骤。以下是对"软件测试创建bug原则.docx"文档中提到的知识点的详细说明: 首先,我们要理解创建bug的三大基本原则: 1. **问题描述清晰**:这要求测试人员...
一、一定要提交!!1.记得有这么个缺陷,以后再遇到的时候可能就会了解发生的原因。...无法重现的问题再次出现后,可以直接叫程序员来看看问题。 5.对于测试人员来说,没有操作错误这条.既然遇到,就
6. **不可重现的故障**:即使是不可重现的故障也应记录下来,因为它们可能揭示潜在的模式或问题。持续追踪此类问题可以帮助找出根本原因。 7. **工作流逆向流转问题**:工作流设计复杂,逆向流转可能导致流程错误。...
在实际工作中,Bugfree可以帮助团队提高测试效率,降低沟通成本。例如,测试人员可以快速创建并追踪缺陷,开发人员则可以查看详细的问题描述和重现步骤,从而更高效地解决问题。同时,通过权限设置,确保信息的安全...
测试用例不只是测试人员自己需要看,还是和开发人员...试人员提出的bug,开发并不能理解,或者不能很好的重现(提完的bug如果 记录不完整,隔两天过后,可能测试人员自己就看不懂),这个bug必须完整 的描述出来。
一、一定要提交!...无法重现的问题再次出现后,可以直接叫程序员来看看问题。 5.对于测试人员来说,没有操作错误这条.既然遇到,就是问题。即使真的操作错了,也要推到程序员那里,既然测试人员犯错误,用户
- **重现步骤**:列出重现BUG的具体步骤。 - **预期结果**:正确的功能实现应该是什么样子。 - **实际结果**:BUG发生时的实际结果。 - **截图或录屏**:提供必要的截图或录屏作为辅助说明。 - **版本信息**:指出...
测试数据也是bug单的重要组成部分,开发人员重现bug时可能不会访问测试环境,有些bug可能只能用一定的测试数据才能重现,所以尽量把测试数据附在bug单上。 屏幕截图是bug单里非常重要的组成部分,有时一张图能胜过...