测试准则是一个测试人员时刻要铭记在心的,甚至要造成一种本能,领导测试工作。
准则 1:测试找不出所有的 Bug
软件的复杂性仅次于生命体,甚至当初很多软件都曾经有了人工智能的属性。对于这样精妙的零碎,一小点异样都有可能产生连锁反映,最终让整个零碎无奈运行。就如同人体只须要吸入一粒渺小的尘埃,就可能感化病菌,从而引起人体的高能反馈,最终导致人病倒,无奈口头。
像软件这样的精妙零碎,就算做再多测试,也无奈找出所有的谬误,就如同你永远无奈保障,人不生病一样。
准则 2:2/8 准则
多数功能模块会测试到大多数缺点,用数字来示意就是 80%的问题呈现在 20%的功能模块中。在很多畛域中都存在 2/8 准则,而在测试中同样会使用到这个准则。
为什么会这样的起因很多,咱们只能适当剖析。比方开发某个功能模块的程序员程度不行,引入了大量缺点;也可能是这个功能模块非常复杂,可能呈现大量没有思考到的因素。
准则 3:尽早染指测试
一个软件越简单,越有可能产生新 bug。热力学第二定律指出:孤立零碎自发地朝著热力学均衡方向──最大熵状态──演变,同样地,第二类永动机永不可能实现。
这个定律同样实用于信息系统。当一个软件引入越多的信息,越多的性能,会让软件变得越来越凌乱,从而产生越来越多 bug。
如果要少产生 bug,首先是要放弃软件整体的简略性,还有就是尽早染指测试。因为在一个性能被开发的晚期,性能还足够简略,晚期染指测试能更高效的找到 bug,如果一个性能演变到前期,被更多其余的程序应用,变得越来越简单,找到 bug 会难很多。尽早染指测试,还能够让开发疾速失去反馈,从而尽快修复 bug,不会把 bug 带到更简单的代码世界中。
准则 4:抗药性准则
抗药性准则又叫杀虫剂悖论(Pesticide Paradox)。随着工夫的推移,重复使用雷同的杀虫剂毁灭昆虫会导致昆虫对农药产生抵抗力,从而使杀虫剂对昆虫有效,这同样实用于软件测试。
如果进行雷同的反复测试,则该办法将无助于发现新的缺点。为了解决此问题,须要定期检查和更新测试用例,增加新的和不同的测试用例以帮忙发现更多的缺点。测试人员不能简略地依附现有的测试技术。他必须一直寻找改良现有办法的办法,以使测试更无效。
准则 5:要有准确的预期后果
测试用例中一个必须局部是对预期输入或后果的定义,这条显而易⻅的准则在软件测试中却是最常犯的谬误之一,很多测试人员对程序应该产生的后果没有明确定义,只是凭感觉判断后果是否异样。
只管“软件测试是破坏性”的定义是正当的,但人们在潜意识中依然渴望看到正确的后果,所以当程序运行合乎测试人员的心理预期时,他们会自认为程序是失常的。没有冀望,也就没有所谓的意外。
克服这种偏向的一种办法,就是通过当时准确定义程序的预期输入,激励人们对所有的输入进行仔细检查。因而,一个测试用例必须包含两个局部:1. 对程序的输出数据的形容。2. 对程序在上述输出数据下的正确