软件调试的具体方法

测试:知道错了。

调试:哪里错了,该怎么纠正错误。

测试是为了发现程序中的错误,发现了错误之后,就需要调试调试分为两步:确定错误的位置修改错误

主要的的调试方法有:暴力法调试,归纳法调试,演绎法调试,回溯法调试,测试法调试。

一、暴力法调试

暴力法调试的特点:不需要过多思考,耗费脑力少,效率低下。

暴力法调试又可分为至少三种类型

  1. 利用内存信息输出来调试。
  2. 根据一般的“在程序中插入打印语句”建议来调试。
  3. 使用自动化的调试工具进行调试。

总结:暴力法调试能不用尽量不用,除非其他的方法都失败了。

二、归纳法调试

归纳法调试的特点:由细节到全局,将种种线索联系起来,归纳总结出结果。

归纳法调试具体步骤

  1. 确定相关数据:就是测试时出现的错误相关的信息。
  2. 组织数据:将错误相关信息联系起来,总结出一些有用的信息。
  3. 做出假设:根据信息做出合理的假设,如果没有办法做出合理的假设,说明数据不足,需重新确定相关数据。
  4. 证明假设:证明假设是否成立,若假设不成立,则需要重新做出假设。
  5. 解决问题:证明假设成立后,解决问题。

:修改了错误后需要做一些回归测试来确保没有引入其他的错误。

总结:归纳法调试是一个推理的过程,通过种种线索入手,逐渐找出最终答案。

三、演绎法调试

演绎法调试的特点:演绎法调试主要是从一些普遍的理论或者前提出发,使用排除和精炼的过程,达到一个结论。

演绎法调试的具体步骤

  1. 列举出所有可能的原因和或假设。
  2. 利用数据排除可能的原因。
  3. 提炼剩余的假设。
  4. 证明剩余的假设。
  5. 修复问题。

:修改了错误后需要做一些回归测试来确保没有引入其他的错误。

总结:演绎法调试和归纳法调试逻辑相反。

四、回溯法调试

演绎法调试的特点:沿着程序的逻辑结构回溯不正确的结果,直到找到程序逻辑出错的位置。一般用于小型程序。

五、测试法调试

测试法调试的特点:需使用测试用例,当然,此测试用例非彼测试用例。

两种测试用例对比

  1. 测试的测试用例:为了发现程序中尚未发现的错误。
  2. 调试的测试用例:定位错误的位置。

两种测试用例可以理解为:先广泛撒网(测试的测试用例),再深入研究(调试的测试用例)。

总结:测试法调试可以结合归纳法或者演绎法一起使用。


定位错误的原则:

  1. 动脑筋。
  2. 如果遇到了僵局,就留到稍后解决。
  3. 如果遇到困境,就把问题描述给其他人听。
  4. 仅将调试工具作为第二种手段。
  5. 避免使用试验法——仅将其作为最后的手段。

修改错误的原则

  1. 存在一个缺陷的地方,很有可能还存在其他缺陷。
  2. 应该纠正错误本身,而不仅是其症状。
  3. 正确纠正错误的可能性并非100%。
  4. 随着程序规模的增加,正确修改错误的可能性反而降低。
  5. 应意识改正错误会引入新错误的可能性。
  6. 修改错误的过程也是临时回到设计阶段的过程。
  7. 应修改源代码,而不是目标代码。

错误分析(自我反省、自我提高的过程):

  1. 错误出现在什么阶段?
  2. 谁制造了错误?
  3. 哪些做得不正确?
  4. 如何避免该错误的出现?
  5. 为什么错误没有早些发现?
  6. 该如何更早的发现错误?

参考自《软件测试的艺术》(原书第3版)

发布了49 篇原创文章 · 获赞 10 · 访问量 9255

猜你喜欢

转载自blog.csdn.net/heibuliuqiu_gk/article/details/102470036