《软件测试的艺术》笔记 08 - 调试

调试是一个包含两个步骤的过程,从执行了一个成功的测试用例、发现了一个问题之后开始。第一步,确定程序中可疑错误的准确性质和位置;第二步,修正错误。

蛮力法调试

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

归纳法调试

  • 确定相关数据。
  • 组织数据。
  • 作出假设。
  • 证明假设。
  • 解决问题。

《软件测试的艺术》笔记 08 - 调试

演绎法调试

  • 列举出所有可能的原因或假设。
  • 利用数据排除可能的原因。
  • 提炼剩下的假设。
  • 证明剩下的假设。
  • 修复问题。

《软件测试的艺术》笔记 08 - 调试

回溯法调试

  • 根据实际代码流程进行分析。
  • 如果说归纳法是数据分析,演绎法是逻辑分析,回溯法就是代码分析。

测试法调试

  • 编写专用的测试用例进行辅助调试。

调试的原则

  • 定位错误的原则
    • 静下来动脑筋,思考程序本身的设计与出现的错误。
    • 如果遇到了僵局,就留到稍后解决。让潜意识工作一会儿。
    • 尝试把遇到的问题描述给他人听,激发自己的思考。
    • 仅将调试工具作为第二种手段。
    • 避免使用试验法,仅将其作为最后手段。
  • 修改错误的技术
    • 存在一个缺陷的地方,很有可能还存在其他缺陷。
    • 应纠正错误本身,而不仅是其症状。
    • 正确纠正错误的可能性并非 100% 。
    • 随着程序规模的增加,正确修改错误的可能性反而降低。
    • 改正错误有引入新错误的可能性。
    • 修改错误的过程也是临时回到设计阶段的过程。
    • 应修改源代码,而不是目标代码。

错误分析

程序员可以通过详细分析出现的错误,从而提高自己的水平。分析的思路有:

  • 错误出现在什么地方?
  • 谁制造了这个错误?
  • 哪些做的不正确?
  • 如何避免该错误的出现?
  • 为什么错误没有早些发现?
  • 该如何更早地发现错误?

廖杰良 - 2019-6-10