对于职业我们要有梦想,不抛弃不放弃。人生才会有乐趣。

调试策略

上一篇 / 下一篇  2010-12-14 16:11:06 / 个人分类:软件测试基础

调试一般采用逐步排除可能出错原因的思路:即根据问题征兆列出错误所有可能的原因,逐个排除,最后找出真正的问题所在。针对错误可能原因的判断和排错方法形成了不同的调试策略,具体工作中可能采用的调试策略大致包含如下几类:

1.1.1    试探法

调试人员(一般是程序开发人员)分析错误征兆,根据错误表现初步分析、猜想故障的大致位置,然后重点针对错误地点源代码进行代码检视、或者利用前述几种调试技术,逐步定位问题。这种方法比较依赖于程序员对程序的理解、熟悉程度以及问题原因的复杂程度,对于比较复杂的问题这种方法效果比较差,该种测试策略也通常是缓慢而低下的。

1.1.2    回溯法

回溯法是在小程序中常用的非常有效的纠错方法。回溯法

调试人员检查错误现象及征兆,确定最先发现“错误症状”的地方,然后人工回溯源程序代码,沿程序的控制流往后(反方向)回溯跟踪,直到征兆消失处为止;然后在相关邻接的代码段进行查找和分析,找出错误原因。

回溯法对于小程序或者简单问题是一种比较有效的调试策略;但是随着程序规模扩大、逻辑复杂度增加以及问题复杂度增加,回溯法在问题定位中变得几乎不可能。

1.1.3    对分查找法

如果已经明确每个变量再程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中间点附近“注入”这些变量的正确值,然后执行程序、检查程序的输出。如果输出结果是正确的,则故障在程序的前半部分;反之,程序在故障的后半部分。对于程序有故障的部分再重复使用这个方法,直到把故障范围缩小到容易判断的程度为止。

1.1.4    归纳法

归纳法是一种系统化的思考方法。所谓规范法就是从特殊推断厨一般的方法,根据错误征兆着手,分析它们之间的关系,进一步分析、判断、查找出错误所在。

归纳法普通可以分为四个步骤:

1.  收集相关数据

列出已经知道的关需程序正确完成的以及错误错误完成的一切数据。这里面对于不产生错误数据但与错误操作类似的一些数据往往能够补充宝贵的线索。

2.  组织数据

整理现有数据以便发现规律。重要的是发现矛盾,即什么条件下出现错误,什么条件下不出现错误。

3.  导出建设

分析研究线索之间的关系,试图找出他们的规律,从而提出关于故障的一个或多个建设。这里如果不能作出推测,则应该设计并执行更多的测试用例,以便获得更多的测试数据支撑分析和假设。如果作出了多种假设,则首先选用其中可能性最大的假设进入下一步工作。

4.  证明假设

利用假设解释原始的所有测试结果,如果能够完全解释一切测试数据,则假设得到证实;否则要么是假设不成立或者不完备,要么是有多个故障同时存在。

1.1.5    演绎法

演绎法类似归纳法的反过程。其思路是从一般原理或前提出发,运用排除和推理过程作出结论。具体做法种演绎法首先列出所有可能的原因和建设,然后划去一个又一个的特殊原因,直到留下一个主要错误原因位置。其基本过程大致包含如下四个步骤:

1.  列举可能的错误原因和假设

根据所有数据,设想所有可能产生错误的原因。不同于归纳法的是,这里并不需要利用这些假设解释各种测试数据。

2.  使用已有数据排除不正确的假设

仔细分析现有数据,寻求其中的关联和矛盾,力求排除前一步列出的各种原因。如果所有列出的假设都被排除了,则需要重新审视/提出新假设或者补充更多的测试数据以提出新的假设;如果余下的假设多余一个,则首先选用可能性最大的一个进入下一步骤。

3.  进一步完善留下的假设

利用已经的测试数据、错误征兆进一步精化余下的假设,使假设更加具体,方便精确确定故障位置。

4.  证明余下假设的正确性

同归纳法第四步;利用假设解释所有原始数据以证明假设。

 

 

   总结:调试策略的选择对于调试的效果较采用何种调试技术更为重要。一般的调试策略包括试探法、回溯法、对分查找法、归纳法、演绎法等几种。归纳法和演绎法是更普遍、相对有效的调试策略。


TAG:

 

评分:0

我来说两句

Open Toolbar