2014 下半年软件评测师考试真题及答案-下午卷
试题一
阅读下列 C 程序,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【C 程序】
int GetMaxDay( int year, int month){
int maxday=0;
if( month>=1&&month<=12){
if(month==2){
if( year%4==0){
if(year%100==0){
if(year%400==0)
maxday= 29;
else
maxday= 28;
}
else
maxday= 29;
}
else
//1
//2,3
//4
//5
//6
//7
//8
//9
//10
maxday = 28;
//11
}
else{
//12
if (month==4||month==6||month==9||month==11) //13, 14,15,16
maxday = 30;
else
maxday = 31;
}
}
return maxday;
}
//17
//18
//19
【问题 1】(6 分)
请针对上述 C 程序给出满足 100%DC(判定覆盖)所需的逻辑条件。
【问题 2】
请画出上述程序的控制流图,并计算其环路复杂度 V(G)。
【问题 3】
请给出问题 2 中控制流图的线性无关路径。
答案:
【问题 1】
Month>=1&&month<=12 T/F
Month==2 T/F
Year%4==0
T/F
Year%100==0
T/F
Year%400==0 T/F
Month==4
(2)(3)Month==6 (4)(5)Month==9 (6)(7)Month==11
T/F
【问题 2】
V(G)=11
【问题 3】
1、2、19
1、2、3、19
1、2、3、4、12、13、17、19
1、2、3、4、12、13、14、17、19
1、2、3、4、12、13、14、15、17、19
1、2、3、4、12、13、14、15、16、17、19
1、2、3、4、12、13、14、15、16、18、19
1、2、3、4、5、11、19
1、2、3、4、5、6、10、19
1、2、3、4、5、6、7、9、19
1、2、3、4、5、6、7、8、19
解析:
【问题 1】
判断覆盖:设计足够的测试用例,使得程序中的每个判定至少都获得一次“真值”或“假值”,
或者说使得程序中的每一个取“真”分支和取“假”分支至少经历一次,因此判定覆盖又称
分支覆盖
对于本题中判定的条件有:(真/假都需要成立)
Month>=1&&month<=12
Month==2
Year%4==0
Year%100==0
Year%400==0
Month==4 ||Month==6||Month==9||Month==11
【问题 2】
控制流图是描述程序控制流的一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流
图中的一个结点,表示一个或多个无分支的语句;带箭头的线段称为边或连接,表示控制流。
基本结构如下所示:
控制流程图的环路复杂性 V(G)等于:
(1)控制流程图中的区域个数。
(2)边数-结点数+2。
(3)判定数+1。
V(G)=11
【问题 3】
线性无关路径是指包括一组以前没有处理的语句或条件的一条路径。从控制流图来看,
一条线性无关路径是至少包含有一条在其他线性无关路径中从未有过的边的路径:
1)1、2、19
2)1、2、3、19
3)1、2、3、4、12、13、17、19
4)1、2、3、4、12、13、14、17、19
5)1、2、3、4、12、13、14、15、17、19
6)1、2、3、4、12、13、14、15、16、17、19
7)1、2、3、4、12、13、14、15、16、18、19
8)1、2、3、4、5、11、19
9)1、2、3、4、5、6、10、19
10)1、2、3、4、5、6、7、9、19
11)1、2、3、4、5、6、7、8、19
试题二(共 15 分)
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某商店为购买不同数量商品的顾客报出不同的价格,其报价规则如表 2-1 所示。
表 2-1 不同数量商品对应的单价
购买数量
单价(单位:元)
头 10 件(第 1 件到第 10 件)
第二个 10 件(第 11 件到第 20 件)
第三个 10 件(第 21 件到 30 件)
超过 30 件
30
27
25
22
如买 11 件需要支付 10*30+1*27=327 元,买 35 件需要支付 10*30+10*27+10*25+5*22=930
元
现在该商家开发一个软件,输入为商品数 C(1<=C<=100),输出为因付的价钱 P。
【问题 1】
请采用等价类划分法为该软件设计测试用例(不考虑 C 为非整数的情况).
【问题 2】
请采用边界值分析法为该软件设计测试用例(不考虑健壮性测试,既不考虑 C 不在 1 到
100 之间或者是非整数的情况).
【问题 3】
列举除了等价类划分法和边界值分析法以外的三种常见的黑盒测试用例设计方法。
答案:
【问题 1】
测试用例 1:31~100 中任意一个数
测试用例 2:101
测试用例 3:0
测试用例 4:1~10 中任意一个数
测试用例 5:11~20 中任意一个数
测试用例 6:21~30 中任意一个数
【问题 2】
(题干中不要求考虑健壮性,和 1~100 以外的)
1、10、11、20、21、30、31、100 (5、15、25、35)
【问题 3】
错误推测法、因果图法、判断表法、正交试验法、功能图法、场景法
解析:
【问题 1】
划分等价类的 6 条原则:
(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两
个无效等价类
(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以
确立一个有效等价类和一个无效等价类
(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
(4)在规定了输入数据的一组值(假定 n 个),并且程序要对每一个输入值分别处理的
情况下,可确立 n 个有效等价类和一个无效等价类
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)
和若干个无效等价类(从不同角度违反规则)
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则再将该
等价类进一步地划分为更小的等价类
本题中主要范围限制为 1<=C<=100,即可以划分为两个无效和一个有效等价,但由于每一个
小的等价类是单独处理的,因此需要再进一步的划分: