转载自:《软件调试》,张银奎,电子工业出版社。
简单地说,测试的目的是在不知道有问题存在的情况下来寻找和发现问题,而调试是在已经知道问题存在的情况下来定位问题根源的。从因果关系的角度来看,测试是旨在发现软件“表面”的不当行为和属性,而调试是寻找这个表象下面的内因。因此二者是有明显区别的,尽管有些人时常将它们混淆在一起。
如果说代码是联系调试与编码的桥梁,那么软件缺欠便是联系调试与测试的桥梁。缺欠是测试过程的成果,是调试过程的输入。测试的目标首现是要发现缺欠,其次是如何协助关闭这些缺欠。
测试与调试的宗旨是一致的,那就是软件的按时交付。为了实现这一共同目标,测试人员应当与调试人员相互尊重,密切配合。例如,测试人员应该尽可能准确详细地描述缺陷,说明错误的症状,实际的结果和期待的结果,发现问题的软硬件环境,重现问题的方法,以及需要注意的细节。测试人员应该鼓励鼓励在软件中加入检查错误和辅助调试的手段,以便更快地定位问题。
软件的调试版本包含更多的错误检查环节,以便更容易测试出错误,因此除了测试软件的发布版本外,测试调试版本是提高测试效率、加快整个项目进度的有效措施。著名的调试专家John Robbins建议根据软件的开发阶段来安排测试调试版本的时间,在项目的初始阶段,对两个版本的测试时间应该是基本一样的,随着软件的成熟,逐渐过渡到只测试发布版本。
为了使以上的方法更有效,编码时应该加入恰当的断言并建立更合适的错误报告和记录机制。
综合一句话,调试是开发做的,测试是测试做的。