问题 填空题

阅读以下说明,根据要求回答问题。
[说明]
某公司需开发一套通用信息管理系统。为保证开发进度和开发质量,对开发的全过程进行测试,重点对模块和系统性能进行测试。

软件工程师通过以下几种方法对系统进行调试,其中,______通过分析错误的症状,猜测问题的所在位置;______从测试所暴露的错误出发,通过分析错误征兆之间的关系而找出故障。
A.试探法 B.回溯法 C.归纳法
D.演绎法 E.对分查找法

答案

参考答案:A(或试探法) C(或归纳法)

解析:调试的任务就是根据测试时所发现的错误,找出原因和具体的位置,并进行改正。调试过程主要由确定错误位置及改正错误这两个步骤组成。与测试不同,调试工作主要由程序开发人员来进行,也就是说,谁开发的程序由谁来进行调试。常用的调试方法包括(但不限于):
1.试探法。调试人员分析错误的症状,猜测问题的所在位置,利用在程序中设置输出语句,分析寄存器、存储器的内容等手段来获得错误的线索,一步步地试探和分析找到错误所在。该方法效率很低,且比较缓慢,适合于结构比较简单的程序。
2.回溯法。调试人员从发现错误症状的位置开始,人工沿着程序的控制流程往回跟踪程序代码,直到找出错误根源或确定故障范围为止。该方法适合于小型程序,往往能把故障范围缩小为程序中的一小段代码,仔细分析这段代码不难确定故障的准确位置。但对于大规模程序,由于其需要回溯的路径太多而使这种方法变得不可操作。
3.对分查找法。它主要用于缩小错误的范围。若已经知道程序中的变量在若干位置的预期正确取值,则可以在这些位置上用赋值语句给这些变量以正确值。运行程序,观察输出结果,若没有发现问题,则说明从给出变量的正确值开始到输出结果之间的程序没有出错,问题可能在除此之外的程序中;否则错误就在所考查的这部分程序中。对含有错误的程序段再使用这种方法,直到把故障范围缩小到比较容易诊断为止。
4.归纳法。它是从测试所暴露的错误出发,通过分析错误征兆间的关系而找出故障。归纳法从个别推出一般,是一种系统化的思考方法,其操作步骤是:①收集相关数据。列出程序做得对或不对的所有数据,不产生错误的数据往往也能提供重要的线索。②整理数据,找出规律。对收集到的数据进行组织与整理,由特殊推出一般,主要发现在什么条件下出现错误,什么条件下不出错。③导出假设。提出一个或多个可能的错误原因,并选择可能性最大的那个。如果提不出来,则说明收集的数据不够,需要设计和执行追加的测试用例来得到。④证明假设。用上一步的假设来解释所有的原始测试结果,如果能解释这一切,则假设得以证实,也就找出错误;否则,要么是假设不完备或不成立,要么有多个故障同时存在,需要重新分析,提出新的假设,直到发现错误为止。
5.演绎法。它从一般原理出发,首先根据测试结果列出所有可能产生错误的原因,再仔细分析已有的数据,排除不可能和彼此矛盾的原因,利用已知线索进一步精化余下的假设,以便精确确定故障的位置,最后运用归纳法的第④步来证明剩下的原因即为错误的根源。
以上这些方法均可辅以调试工具。随着测试技术和软件开发环境的发展,会出现功能越来越强的自动测试和调试工具,支持断点设置、单步运行和各种跟踪技术,为软件的调试提供很大的方便。但无论哪种工具都代替不了开发人员对整个文档和程序代码的仔细研究和认真审查所起的作用。

单项选择题
单项选择题