Yes | No | |
What(列出一般现象) | ||
Where(说明发现现象的地点) | ||
When(列出现象发生时所有已知情况) | ||
How(说明现象的范围和量级) |
而在“Yes”和“No”这两列中,“Yes”描述了出现错误的现象的3W1H,“No”作为比较,描述了没有错误的现象的3W1H。通过分析,找出矛盾来。
提出假设 :分析线索之间的关系,利用在线索结构中观察到的矛盾现象,设计一个或多个关于出错原因的假设。如果一个假设也提不出来,归纳过程就需要收集更多的数据。此时,应当再设计与执行一些测试用例,以获得更多的资料。如果提出了许多假设,则首先选用最有可能成为出错原因的假设。
证明假设 :把假设与原始线索或数据进行比较,若它能完全解释一切现象,则假设得到证明;否则,就认为假设不合理,或不完全,或是存在多个错误,以致只能消除部分错误。
④ 演绎法排错
演绎法是一种从一般原理或前提出发,经过排除和精化的过程来推导出结论的思考方法。演绎法排错是测试人员首先根据已有的测试用例,设想及枚举出所有可能出错的原因做为假设;然后再用原始测试数据或新的测试,从中逐个排除不可能正确的假设;最后,再用测试数据验证余下的假设确是出错的原因。
演绎法主要有以下四个步骤:
列举所有可能出错原因的假设 :把所有可能的错误原因列成表。它们不需要完全的解释,而仅仅是一些可能因素的假设。通过它们,可以组织、分析现有数据。
利用已有的测试数据,排除不正确的假设 :仔细分析已有的数据,寻找矛盾,力求排除前一步列出所有原因。如果所有原因都被排除了,则需要补充一些数据(测试用例),以建立新的假设;如果保留下来的假设多于一个,则选择可能性最大的原因做基本的假设。
改进余下的假设 :利用已知的线索,进一步改进余下的假设,使之更具体化,以便可以精确地确定出错位置。
证明余下的假设 :这一步极端重要,具体做法与归纳法的第4步相同。
6.3调试原则
在调试方面,许多原则本质上是心理学方面的问题。因为调试由两部分组成,所以调试原则也分成两组。
① 确定错误的性质和位置的原则
用头脑去分析思考与错误征兆有关的信息。最有效的调试方法是用头脑分析与错误征兆有关的信息。一个能干的程序调试员应能做到不使用计算机就能够确定大部分错误。
避开死胡同。如果程序调试员走进了死胡同,或者陷入了绝境,最好暂时把问题抛开,留到第二天再去考虑,或者向其它人讲解这个问题。事实上常有这种情形:向一个好的听众简单地描述这个问题时,不需要任何听讲者的提示,你自己会突然发现问题的所在。
只把调试工具当做辅助手段来使用。利用调试工具,可以帮助思考,但不能代替思考。因为调试工具给你的是一种无规律的调试方法。实验证明,即使是对一个不熟悉的程序进行调试时,不用工具的人往往比使用工具的人更容易成功。
避免用试探法,最多只能把它当做最后手段。初学调试的人最常犯的一个错误是想试试修改程序来解决问题。这还是一种碰运气的盲目的动作,它的成功机会很小,而且还常把新的错误带到问题中来。
② 修改错误的原则
在出现错误的地方,很可能还有别的错误。经验证明,错误有群集现象,当在某一程序段发现有错误时,在该程序段中还存在别的错误的概率也很高。因此,在修改一个错误时,还要查一下它的近邻,看是否还有别的错误。
原文转自:http://www.uml.org.cn/Test/201511262.asp