(共15分)
一、阅读下列C程序,回答问题1至问题3,将解答填入答题纸的对应栏内。
问题:1.1 (3分)
请针对上述C程序给出满足100%DC(判定覆盖)所需的逻辑条件。
本问题考查白盒测试用例设计方法:判定覆盖法。
判定覆盖指设计足够的测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序的每一个分支至少都通过一次。本题中程序有3个判定,所以满足判定覆盖一共需要6个逻辑条件。
问题:1.2 (8分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度V(G)。
控制流图如下,环路复杂度V(G)=4
本问题考查白盒测试用例设计方法:基本路径测试法。涉及到的知识点包括:根据代码绘制控制流图、计算环路复杂度。
控制流图是描述程序控制流的一种图示方式,它由节点和定向边构成。控制流图的节点代表一个基本块,定向边代表控制流的方向。
程序的环路复杂度等于控制流图中判定节点的个数加1,本题控制流图中判定节点个数为3,所以V(G)=4。
问题:1.3 (4分)
请给出问题2中控制流图的线性无关路径。
线性无关路径:
1.1-2-8
2.1-2-3-4-2…8
3.1-2-3-4-5-6-4...2...8
4.1-2-3-4-5-7-4...2...8
本问题考查白盒测试用例设计方法:基本路径法。涉及到的知识点包括:根据控制流图和环路复杂度给出线性无关路径。
线性无关路径是指包含一组以前没有处理的语句或条件的路径。从控制流图上来看,一条线性无关路径是至少包含一条在其他线性无关路径中从未有过的边的路径。程序的环路复杂度等于线性无关路径的条数,所以本题中应该有4条线性无关路径。
(共20分)
二、阅读下列说明,回答问题1和问题2,将解答填入答题纸的对应栏内。
【说明】
某连锁酒店集团实行积分奖励计划,会员每次入住集团旗下酒店均可以获得一定积分,积分由欢迎积分加消费积分构成。其中欢迎积分跟酒店等级有关,具体标准如表2-1所示;消费积分跟每次入住消费金额有关,具体标准为每消费1美元获得2积分(不足1美元的部分不给分)。此外,集团会员分为优先会员、金会员、白金会员三个级别,金会员和白金会员在入住酒店时可获得消费积分的额外奖励,奖励规则如表2-2所示。
该酒店集团开发了一个程序来计算会员每次入住后所累积的积分,程序的输入包括会员级别L、酒店等级C和消费金额A(单位:美元),程序的输出为本次积分S。其中,L为单个字母且大小写不敏感,C为取值1到6的整数,A为正浮点数且最多保留两位小数,S为整数。
问题:2.1 (7分)
采用等价类划分法对该程序进行测试,等价类表如表2-3所示,请补充表2-3中空(1)-(7)。
(1) P
(2) 1
(3) 4,5
(4) 最多保留两位小数的正浮点数
(5) 除M/G/P之外的单个字母
(6) 小于1的整数
(7) 非正的浮点数
本问题考查等价类划分法中等价类表的构造。
等价类划分法的等价类表是把程序的输入域按规则划分为若干子集。
本题中L,C由多个输入值构成,并且需要对每个(或者每组)输入值分别处理,按规则可以划分为n个有效等价类(每个或者每组值确定一个有效等价类)和一个无效等价类(所有不允许输入值的集合)。
对L来说,分成3个有效等价类(L分别取M、G、P)和1个无效等价类(其他情况),而这个无效等价类又可以进一步细分为非字母、非单个字母以及除M/G/P之外其他字母。
对C来说,分成4个有效等价类(C分别取1、2或3、4或5、6)和1个无效等价类(其他情况),而这个无效等价类又可以进一步细分为非整数、小于1的整数以及大于6的整数。
对A来说,规定了输入值集合必须满足的条件(即最多两位小数的正浮点数),根据规则可以划分为1个有效等价类(最多两位小数的正浮点数)和3个无效等价类(非浮点数,非正的浮点数,多于两位小数的正浮点数)。
问题:2.2 (13分)
根据以上等价类表设计的测试用例如下表所示,请补充表2-4中空(1)-(13)。
(1) 300
(2) 100
(3) 3,6,8
(4) 6
(5) 非字母,如1
(6) 非单个字母,如GG
(7) N/A
(8) 非整数,如A
(9) 1,8,13
(10) 大于6的整数,如7
(11) 非浮点数,如A
(12) 非正浮点数,如0
(13) 多于两位小数的正浮点数&#