bug不能重现的几个原因
一、环境不一致
这是bug不能重新的最主要的原因。
在开发人员认为这是无效的bug 里面,估计至少有80%的Bug是因为环境不一致的原因造成的。这既包括开发环境和测试环境的不一致,也包括开发环境和系统的实际运行环境不一致。
Bug产生是有一定原因的,它的重现也需要一定的环境。如果没有相应的环境,那么你可能很难这个Bug。
从广义上来说,保证或影响系软件的任何因素都是环境。例如,硬件的配置、软件的设置、网络的带宽、网速等。
通常,环境中的软件因素有:
(1)系统的Build
(2)Application Server的类型和Version
(3)Operation System 的语言和Version
(4)浏览器的语言和Version
【案例1】
我们发现某个Bug 只出现在WebSphere 6.0.2.15上,按照开发人员的要求,把WebSphere升级到6.0.2.17 后,此Bug就自动消失了。因此,此Bug是因为WebSphere的版本不一致引起的。
【案例2】
几个图片在某个Build上莫名其妙地消失了,刚开始怀疑是开发人员修改别的Bug而引起的错误。
后来经过仔细认真地测试才发现,原来是操作系统的语言搞的“鬼”:测试人员使用的机器的操作系统语言是简体中文,开发人员使用的是繁体中文。
二、浏览器的不当设置
对于Web测试来说,IE的设置又是对重现Bug起着重要的作用。下面的几个图片说明了浏览器的几个关键设置:
说明:在“高级”选项中,对测试起重要作用的是“禁止脚本调试”(不选择,即前面不要有勾)和“显示每个脚本错误的通知”(选择它,即前面要出现勾)。
这些设置对重现有关脚本错误的bug起着重要的作用。
根据这些脚本错误的通知,开发人员可以快速发现代码中的错误,并及时修复它。
三、内存泄露
某些系统长期运行后出现运行速度慢、反应迟钝等现象,其中一个主要的原因就是内存泄露。
有的开发人员没有养成及时回收内存的习惯,结果系统在不断地申请内存空间,却没有一点内存释放。
这类错误在短期内不会出现,但当系统长期运行时就会出现,并且由此会引发一系列的问题。
此类问题只有经过长时间的运行测试,才可能会被发现。
四、函数接口类型不匹配
此类错误难以重现,并且难以发现它的真正原因,一般只有在查看源代码后才能发现。
某些类型的数据会被系统自动转换,一般也不会出现错误;但有些数据被截断或被强制转换成另外一种数据类型时,会出现一些潜在的错误。
在集成测试时此类错误最有可能发生。