2011 下半年软件评测师考试真题及答案-下午卷
试题一
【说明】
场景法是黑盒测试中重要的测试用例设计方法,通过场景描述业务流程(包括基本流(基
本业务流程)和备选流(分支业务流程)),设计测试用例遍历软件系统功能,验证其正确性。
下面是对电子不停车收费系统(ETC)的基本流和备选流的描述。
表 1-1 基本流
步骤描述
用例开始,ETC 准备就绪,自动栏杆放下
ETC 与车辆通信,读取车辆信息
对车辆拍照
根据公式计算通行费用
查找关联账户信息,确认账户余额大于通行费用
从账户中扣除该费用
显示费用信息
自动栏杆打开
车辆通过
步骤
A1
A2
A3
A4
A5
A6
A7
A8
A9
A10
自动栏杆放下,ETC 回到就绪状态
表 1-2 备选流
编号
名称
描述
B
C
D
E
读取车辆信息出错
在基本流 A2 步骤,ETC 读取车辆信息错误(重复读取五次),
不够五次则返回 A2,否则显示告警信息后退出基本流
在基本流 A5 步骤,在银行系统中不存在该账户信息,退出基
账户不存在
本流
账户余额不足
账户状态异常
在基本流 A5 步骤,账户余额小于通行费用,显示账户余额不
足警告,退出基本流
在基本流 A5 步骤,账户已销户、冻结或由于其他原因而无法
使用,显示账户状态异常信息,退出基本流
【问题 1】
使用场景法设计测试用例,指出所涉及到的基本流和备选流。基本流用 A 字母编号表示,
备选流用表 1-2 中对应的字母编号表示。
例如:
T01: A
T02: A、B
【问题 2】
针对问题 1 设计的测试用例,依次将初次读取车辆信息、最终读取车辆信息、账户号码、
账户余额和账户状态等信息填入下述测试用例表中。表中行代表各个测试用例,列代表测试
用例的输入值,用 V 表示有效数据元素,用 I 表示无效数据元素,n/a 表示不适用,例如 T01
表示“成功通过”用例。
表 1-3 测试用例表
测试
初次读取
最终读取
账户
账户
账户
用例
车辆信息
车辆信息
号码
余额
状态
预期结果
V
I
n/a
V
V
V
结束
扣除通行费,车辆顺利通过,用例
I
n/a
n/a
n/a
用例结束
连续 5 次读取失败,显示警告信息,
T01
T02
T03
T04
T05
T06
T07
T08
答案:
【问题 1】
(场景顺序可以任意,重复内容不计分)
共包括 8 个场景:
T01:A (收费停车)
T02:A、B (停车时,读取车辆信息出错)
T03:A、C (停车时,账户不存在)
T04:A、D (停车时,账户余额不足)
T05:A、E (停车时,账户状态异常)
T06:A、B、C (重复读才取得正确车辆信息,但出现账户不存在异常)
T07:A、B、D (重复读才取得正确车辆信息,但出现账户余额不足)
T08:A、B、E
【问题 2】
测试
初次读取
最终读取
账户
账户
账户
用例
车辆信息
车辆信息
号码
余额
状态
预期结果
T01
T02
T03
T04
T05
T06
V
I
V
V
V
I
n/a
V
V
V
结束
扣除通行费,车辆顺利通过,用例
I
n/a
n/a
n/a
用例结束
连续 5 次读取失败,显示警告信息,
n/a
n/a
n/a
V
账户不存在,提示警告信息,用例
n/a
n/a
结束
I
V
n/a
I
账户余额不足,提示警告信息,用
例结束
账户状态异常,提示警告信息,用
例结束
多次读取车辆信息,最终成功;账
n/a
n/a
户不存在,提示警告信息,用例结
I
V
V
I
束
V
V
多次读取车辆信息,最终成功;账
V
I
n/a
户余额不足,提示警告信息,用例
结束
多次读取车辆信息,最终成功;账
V
V
I
户状态异常,提示警告信息,用例
结束
T07
T08
I
I
解析:
【问题 1】
根据题目中题干确定的基本流和备选流,可以设计场景,每个场景覆盖一种在该案例中
事件的不同触发顺序与处理结果形成的事件流,最后得出所有的测试用例。下面是所有的测
试用例以及用例中所涉及的基本流与备选流。
【问题 2】
根据问题 1 中设计的所有测试用例,测试人员需要设计具体的场景分析,其中应包括场
景变化中系统所关心的状态信息的变化,以及测试结束后预期的结果。这样,在测试人员进
行实际测试后,可以用实际输出结果与预期结果进行比较,来评价测试的结果。
试题二
【说明】
逻辑覆盖法是设计白盒测试用例的主要方法之一,它通过对程序逻辑结构的遍历实现程
序的覆盖。针对以下由 C 语言编写的程序,按要求回答问题。
gz_open (const char *mode)
{
}
char * p = (char*)mode;
//1
char fmode[4];
char * m = fmode;
char smode = ’\0’;
char level = ’\0’;
int
strategy = 0;
do {
if (*p == ’r’)
smode = ’r’;
if (*p >= ’0’&& *p <= ’9’) {
level = *p - ’0’;
} else if (*p == ’f’) {
strategy = 1;
} else {
*m++ = *p;
}
*p++;
}while (m != fmode + sizeof(fmode));
//2
//3
//4,5
//6
//7
//8
//9
//10
//11
//12
【问题 1】
请给出满足 100%DC(判定覆盖)所需的逻辑条件。
【问题 2】
请画出上述程序的控制流图,并计算其控制流图的环路复杂度 V(G)。
【问题 3】
假设函数 gz_open 的参数 mode 是由 26 个小写字母'a’-'z’、数字'0'-'9’以及空格组
成的字符串,请使用基本路径测试法构造 1 个测试用例,使之覆盖所有基本路径。
答案:
【问题 1】
判定覆盖即分支覆盖,对于每一个判定,都至少要取得一次真值和假值。在本题中,我
们从程序中不难找出所有的逻辑判断语句,很显然在题目给出的程序中,包含的逻辑判断语
句有:*p == ’r’、*p >= ’0’&& *p <= ’9’、*p == ’f’及 m != fmode + sizeof(fmode)。
那么首先是判定*p == ’r’,应分别设置其为真与为假的情况;然后是*p >= ’0’&& *p <= ’
9’,设置其为真,然后设置其为假,在为假的情况下,出现判定*p == ’f’,分别设计其为
真和假;最后是 m != fmode + sizeof(fmode),分别设置真、假即可。
【问题 2】
控制流图
环路复杂度 V(G)=6
【问题 3】
构造一个 6 个字符构成的字符串(设为 x,y,Z,u,v,w6 个字符),使得每个字符覆
盖一 条基本路径。其中,x='r',y='f,z∈['0'-'9'], u<'0', v>'9' 并且 v!='f', w 任意,
这 6 个字符可任意排列。例如,mode="r0faa"。
试题三
【说明】
在 CNCERT/CC (国家计算机网络应急技术处理协调中心)处理的安全事件中,国内政
府机构和重要信息系统部门的网页篡改类事件数量增长迅速。2011 年 6 月的某一周,中国
境内仅网页被篡改的网站就有 660 个,其中政府网站 105 个。网站内容复制容易,转载速度
快,后果难以预料,网页如果被篡改,将直接危害该网站的利益,尤其是门户网站作为政府
发布重要新闻、重大方针政策、法规和企业信息等的重要渠道,一旦被黑客篡改,将严重损
害政府和企业形象。
从网站页面被篡改的角度来看,存在两种攻击的可能,一种是网站被入侵,也就是说网
站页面确实被篡改了,另外一种是网站被劫持,这种情况下网站的页面实际上并没有被篡改,
但是攻击者劫持了网络访问并发送欺骗页面给来访者,进而造成页面被篡改的表象。
【问题 1】(6 分)
通过入侵从而进行网页篡改的可能途径有哪些?这些途径各对应安全系统防护体系的
哪个层次?
【问题 2】(6 分)
针对网页被篡改的问题,从技术层面看有哪些防范措施?
【问题 3】(3 分)
现在出现了一些基于监测与恢复的页面防篡改系统,这类防篡改系统应具备哪些基本功
能?