2017 下半年软件评测师考试真题及答案-下午卷
试题一
阅读下列 C 程序,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【C 程序】
Int DoString(char*string){
Char *argv[100];
Int argc=1;
while(1){
while(*string&&*string!='-')
String++;
if(!*string)
break;
argv[argc]=string;
//1
//2,3
//4
//5
//6
while(*string && *string!= '' && *string!= '\n'&&*string!= '\t')//7,8,9,10
string++;
argc++;
}
return 0;
}
【问题 1】(3 分)
//11
//12
//13
请针对上述 C 程序给出满足 100%DC(判定覆盖)所需的逻辑条件。
【问题 2】(2 分)
请画出上述程序的控制流图,并计算其控制流图的环路复杂度 V(G)。
【问题 3】(4 分)
请给出问题 2 中控制流图的线性无关路径。
答案:
【问题 1】(3 分)
*string&&*String!=’-’T/F
!*StringT/F
*string&&*String!=’’&&*String!=’\n’&&*String!=’\t’T/F
【问题 2】(2 分)
V(g)=8
【问题 3】(4 分)
1、2、5、6、13.
1、2、3、5、6、13
1、2、3、4、2、5、6、13
1、2、5、7、12、1...
1、2、5、7、8、12、1...
1、2、5、7、8、9、12、1...
1、2、5、7、8、9、10、12、1...
1、2、5、7、8、9、10、11、7、12、1...
解析:
【问题 1】
需要找出判定覆盖所需的逻辑条件,这种主要从两种结构中查找,即条件结构和循环结
构。
题干代码中有条件为:
while(*string&& *string!='-');
if(!*string);
while(*string && *string!="&& *string!='\n'&& *string!= '\t')
满足问题 1 要求的条件为括号中的代码。即参考答案中的代码段。
【问题 2】
需要绘制控制流图,此题代码中有多个循环,所以在绘制控制流图的时候,要注意走向,
对于循环来说,真假都是从开始结点出发,只是若循环条件为真,则执行循环体,若循环条
件为假,则结束循环,执行循环后面的代码。
控制流图的效果图为参考答案中的图例。环路复杂度为 8,可以数结点数和边数,通过
公式边数-结点数+2 求得;也可以数区域数,数区域数记得是封闭的区域数+1。
【问题 3】
列出线性无关路径:
此题能回答正确的关键在于问题 2 的控制流图是否画对。线性无关路径即不走与之前完
全重复的路径。也就是走之前至少有一条没有走过的路径。
试题二
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某银行 B 和某公司 C 发行联名信用卡,用户使用联名信用卡刷卡可累计积分,积分累计
规则与刷卡金额和刷卡日期有关,具体积分规则如表 2-1 所示。此外,公司 C 的会员分为普
通会员、超级会员和 PASS 会员三个级别,超级会员和 PASS 会员在刷卡时有额外积分奖励,
奖励规则如表 2-2 所示。
表 2-1 积分规则
刷卡日期
积分
每月 9 日、19 日
刷卡金额小数部分四舍五入后的 2 倍
11 月 11 日
12 月 12 日
其他日期
刷卡金额小数部分四舍五入后的 6 倍
刷卡金额小数部分四舍五入后的 4 倍
刷卡金额小数部分四舍五入
表 2-2 额外积分奖励规则
会员级别
级别代码
额外积分奖励
普通会员
超级会员
PASS 会员
M
0%
S
100%
P
200%
银行 B 开发了一个程序来计算用户每次刷卡所累积的积分,程序的输入包括会员级别 L、
刷卡日期 D 和刷卡金额 A,程序的输出为本次积分 S。其中,L 为单个字母且大小写不敏感,
D 由程序直接获取系统日期,A 为正浮点数最多保留两位小数,S 为整数。
【问题 1】(5 分)
采用等价类划分法对该程序进行测试,等价类表如下表所示,请补充表 2-3 中空(1)~
(5)
表 2-3 等价表
输入条件
有效等价类
编号
无效等价类
会员等级 L
M
1
非字母
编号
9
S
(1)
每月 9 日、19 日
11 月 11 日
(2)
其他日期
(3)
2
3
4
5
6
7
8
刷卡日期 D
刷卡金额 A
非单个字母
(4)
非浮点数
(5)
多于两位小数的正浮点数
10
11
12
13
14
【问题 2】(9 分)
根据以上等价类表设计的测试用例如下表所示,请补充表 2-4 中空(1)~(9)
表 2-4 测试用例
编号
1
2
3
4
5
6
7
8
9
10
输入
D
A
1 月 9 号
500.25
11 月 11 日
(2)
12 月 12 日
(4)
L
M
S
P
P
500
500
500
500
500
(5)
其他日期
非单个字母
其他日期
(7)
其他日期
M
M
M
其他日期
非浮点数
其他日期 非正浮点数
其他日期
(9)
覆盖等价类(编号)
预期输出 S
1,4,8
2,5,8
(3)
3,7,8
9,7,8
10,7,8
11,7,8
(8)
1,7,13
1,7,14
(1)
6000
6000
1500
N/A
(6)
N/A
N/A
N/A
N/A
【问题 3】(6 分)
如果规定了单次刷卡的积分上限为 20000(即 S 取值大于等于 0 且小于等于 20000),则
还需要针对 S 的取值补充一些测试用例。假设采用等价类划分法和边界值分析法来补充用
例,请补充表 2-5、表 2-6 中的空(1)~(6)。
表 2-5 补充等价类
编号
等价类
1
2
3
0<=S<=20000
(1)
(2)
表 2-6 边界值
编号
边界值
1
2
3
4
5
6
S=20000
(3)
(4)
S=0
(5)
(6)
答案:
【问题 1】
1:P
2:12 月 12 日
3:正浮点数带 2 位小数
4:MSP 以外的字母
5:非正浮点数
【问题 2】
1:1000
2:500.25(500)
3:3、6、8
4:1 月 8 日(其它日期)
5:1(非字母)
6:N/A
7:K(MSP 以外的单个字母)
8:1、7、12
9:500.12345(多于两位小数的正浮点数)
【问题 3】
1:S<0
2:s>20000
3:S=19999
4:S=-1
5:S=20001
6:S=1
解析:
此题只提醒大家:倍数。要注意一下。
不然,在回答问题 2 中的 1,2 小问,很麻烦。
特定的值,是可以不同于参考答案的。只要符合题意,满足要求的都可以作为测试数据。
只是在能写测试等价类的时候,尽量写这些,因为没有争议。而测试数据多种多类。
试题三
阅读下列说明,回答问题 1 至问题 3,将解答填入答题纸的对应栏内。
【说明】
某公司欲开发一套基于 Web 的通用共享单车系统。该系统的主要功能如下:
1.商家注册、在线支付;后台业务员进行车辆管理与监控、查询统计、报表管理、价格
设置、管理用户信息。
2.用户输入手机号并在取验证码后进行注册、点击用车后扫描并获取开锁密码、锁车(机
械锁由用户点击结束用车)后 3 秒内显示计算的费用,用户确认后支付、查看显示时间与路
线及其里程、预约用车、投诉。
【问题 1】(6 分)
采用性能测试工具在对系统性能测试时,用 Apdex(应用性能指数)对用户使用共享单
车的满意度进行量化,系统需要满足 Apdex 指数为 0.90 以上。
Apdex 量化时,对应用户满意度分为三个区间,通过响应时间数值 T 来划分,T 值代表
着用户对应用性能满意的响应时间界限或者说是“门槛”(Threshold)。
针对用户请求的响应时间,Apdex 的用户满意度区间如下:
满意:(0,T]让用户感到很愉快
容忍:(T,4T]慢了一点,但还可以接受,继续这一应用过程
失望:>4T,太慢了,受不了了,用户决定放弃这个应用
Apdex 的计算如下:
Apdex=(小于 T 的样本数+T~4T 的样本数/2)/总样本数
针对用户功能,本系统设定 T=2 秒,记录响应时间,统计样本数量,2 秒以下记录数 3000,
2~8 秒记录数 1000,大于 8 秒 500。
请计算本系统的 Apdex 指数,并说明本系统是否达到要求。
【问题 2】(6 分)
系统前端采用 HTML5 实现,已使用户可以通过不同的移动设备的浏览器进行访问。设计
兼用行测试矩阵,对系统浏览器兼容性进行测试。