软件测试 - 第三章课后作业
软件测试 - 第三章课后作业
一单选题(共4题,20.8分)
- (单选题)下列选项中,哪一项不属于逻辑覆盖?( )
A. 语句覆盖
B. 条件覆盖
C. 判定覆盖
D. 判定-语句覆盖
正确答案: D:判定-语句覆盖; - (单选题)关于逻辑覆盖,下列说法中错误的是( )。
A. 语句覆盖的语句不包括空行、注释等
B. 相比于语句覆盖,判定覆盖考虑到了每个判定语句的取值情况
C. 条件覆盖考虑到了每个逻辑条件的取值的所有组合情况
D. 在逻辑覆盖法中,条件组合覆盖是覆盖率最大的测试方法
正确答案: C:条件覆盖考虑到了每个逻辑条件的取值的所有组合情况; - (单选题)关于程序插桩法,下列说法中错误的是( )。
A. 程序插桩法就是往被测试程序中插入测试代码以达到测试目的的方法
B. 程序插桩法可分为目标代码插桩和源代码插桩
C. 源代码插桩的程序需要经过编译、链接过程,但测试代码不参与编译、链接过程
D. 目标代码插桩是往二进制程序中插入测试代码
正确答案: C:源代码插桩的程序需要经过编译、链接过程,但测试代码不参与编译、链接过程; - (单选题)关于圈复杂度的计算,下列说法中正确的是( )。
A. 圈复杂度的数量等于控制流图中的节点数量
B. 使用V(G)=P+1可以计算圈复杂度,其中P表示控制流图中边的数量
C. 使用V(G)=E-N+2可以计算圈复杂度,其中E表示控制流图中节点的数量,N表示控制流图中边的数量
D. 圈复杂度的数量等于控制流图中的区域数量
正确答案: D:圈复杂度的数量等于控制流图中的区域数量;
二. 填空题(共6题,31.5分)
- (填空题)语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的____。
正确答案:
(1) 执行语句 - (填空题)____的作用是使真、假分支均被执行。
正确答案:
(1) 判定覆盖 - (填空题)____是指判定语句中的每个条件都要取真值、假值各一次。
正确答案:
(1) 条件覆盖 - (填空题)对于判定语句if (a>1 and c<1),测试时要保证a>1、c<1两个条件取真值、假值至少一次,同时,判定语句if (a>1 and c<1)取真值、假值也至少一次,这使用了____覆盖方法。
正确答案:
(1) 判定-条件 - (填空题)____要求判定语句中所有条件取值的可能组合至少出现一次。
正确答案:
(1) 条件组合覆盖 - (填空题)在程序插桩法中,插入程序中的测试代码称为____。
正确答案:
(1) 探针
三. 判断题(共6题,31.8分)
-
(判断题)语句覆盖无法考虑分支组合情况。( )
A. 对
B. 错
正确答案: 对 -
(判断题)目标代码插桩需要重新编译、链接程序。( )
A. 对
B. 错
正确答案: 错 -
(判断题)语句覆盖可以测试程序中的逻辑错误。( )
A. 对
B. 错
正确答案: 错 -
(判断题)判定-条件覆盖没有考虑判定语句与条件判断的组合情况。( )
A. 对
B. 错
正确答案: 对 -
(判断题)对于源代码插桩,探针具有较好的通用性。( )
A. 对
B. 错
正确答案: 对 -
(判断题)圈复杂度用来衡量一个模块判定结构的复杂程度。( )
A. 对
B. 错
正确答案: 对
四. 简答题(共3题,15.9分)
-
(简答题)请简述基本路径法设计测试用例的步骤。
正确答案:
使用基本路径法设计测试用例,主要包括4个步骤。
(1)画出流程图:首先需要分析被测程序的源代码,并画出程序的流程图。
(2)画出控制流图:控制流图是描述程序控制流的一种图示方法。控制流图可以由程序流程图转化而来。如果测试的源程序代码简洁,也可以直接通过分析源程序代码画出控制流图。在画程序的控制流图时,使用圆圈表示一条或多条无分支的语句,使用箭头表示控制流方向。
(3)计算程序的圈复杂度:圈复杂度用来衡量一个模块判定结构的复杂程度。通过计算程序的圈复杂度可以得到程序基本的独立路径数目,从而确定测试用例的数目。
(4)设计测试用例:根据计算出的程序圈复杂度导出基本可执行路径集合,从而设计测试用例的输入数据和预期结果。 -
(简答题)请简述逻辑覆盖法的几种方法及它们之间的区别。
正确答案:
(1)语句覆盖
语句覆盖是最常见的覆盖方式,语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。
(2)判定覆盖
判定覆盖又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。判定覆盖语句一般是由多个逻辑条件组成,如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值,必然会遗漏部分测试路径,因此,判定覆盖也属于弱覆盖。
(3)判定-条件覆盖
判定-条件覆盖要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次,它弥补了判定覆盖和条件覆盖的不足之处。相比于条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖扩展,因此判定-条件覆盖在仍旧存在遗漏测试的情况。
(4)条件组合覆盖
条件组合指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次。它与判定-条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现真与假两种结果,而是要求让这些结果的所有可能组合都至少出现一次。 -
(简答题)请简述目标代码插桩的3种执行模式。
正确答案:
目标代码插桩具有以下3种执行模式。
(1)即时模式:原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。
(2)解释模式:在解释模式中目标代码被视为数据,测试人员插入的测试代码作为目标代码指令的解释语言,每当执行一条目标代码指令,程序就会在测试代码中查找并执行相应的替代指令,测试通过替代指令的执行信息就可以获取程序的运行信息。
(3)探测模式:探测模式使用新指令覆盖旧指令进行测试,这种模式在某些体系结构(如x86体系结构)中比较适用