一、选择题 5. 逻辑路径覆盖法式白盒测试用例的重要设计方法,其中语句覆盖法是较为常用的方法。针对下面的句段,采用语句覆盖法完成测试 的设计。测试用例见下表,对表中的空缺页(TRUE或者FALSE),正确的选择是________。
语句段:
If(A&&(B||C)) x=1;
Else x=0;
用例表:
用例1
用例2
A
TRUE
FALSE
B
(1)
FALSE
C
TRUE
(2)
D
(3)
FALSE
A.(1)TRUE(2)FALSE(3)TRUE B.(1)TRUE(2)FALSE(3)FALSE C.(1)FALSE(2)FALSE(3)TRUE D.(1)TRUE(2)TRUE(3)FALSE
A B C D
11. 以下程序的路径数为______。
If(a<8)
{
If(b>0)
Result=a*b;
}
If(c>8)result+=1;
A B C D
B
[解析] 上面程序可以看做一个嵌套的判定与一个普通判定串接,嵌套型的路径数为n+1,所以整个代码可以看做一个3路径判定和一个2路径判定的串接,所以总路径数为3*2=6条。
二、论述题 1. 采用等价类划分方法为某保险公司计算保费率的程序设计测试用例。
某保险公司的人寿保险的保费计算方式为:投保额×保险费率。其中,保险费率按点数不同而有区别,10点及10点以上,保险费率为0.6%;10点以下,保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定的,具体规则如下表所示。
年龄 性别 婚姻 抚养人数 20~39 40~59 其他 M F 已婚 未婚 1人扣0.5点,最多 扣3点(四舍五入) 6点 4点 2点 5点 3点 3点 5点
分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表如下:
(1)年龄:一位或两位非零整数,有效范围为1~99。
(2)性别:一位英文字符,只能取“M”或“F”。
(3)婚姻:字符,只能取“已婚”或“未婚”。
(4)抚养人数:空白或一位非零整数,取值的范围为1~9。
输入条件
有效等价类
编号
无效等价类
编号
年龄
20~39岁
1
40~59岁
2
1~6岁 60~99岁
3
小于1
12
大于99
13
性别
单个英文字符
4
非英文字符
14
非单个英文字符
15
'M'
5
除'M'和'F'之外 的其他单个字符
16
'F'
6
婚姻
已婚
7
除“已婚”和“未婚” 之外的其他字符
17
未婚
8
抚养人数
空白
9
除空白和数字之 外的其他字符
18
1~6人
10
小于1
19
6~9人
11
大于9
20
根据上表中的等价类,设计测试用例如下表所示
测试用 例编号
输入数据
预期输出 保险费率
年龄
性别
婚姻
抚养人数
1
27
F
未婚
空白
0.6%
2
50
M
已婚
2
0.6%
3
70
F
已婚
7
0.1%
4
0
M
未婚
空白
无法推算
5
100
F
已婚
3
无法推算
6
99
男
已婚
4
无法推算
7
1
Child
未婚
空白
无法推算
8
45
N
已婚
5
无法推算
9
38
F
离婚
1
无法推算
10
62
M
已婚
没有
无法推算
11
18
F
未婚
0
无法推算
12
40
M
未婚
10
无法推算
2. 简述如何测试分布式系统。
对于没有专门的服务器层、由许多并发运行且没有专门控制轨迹的构件所组成的分布式系统,可采用分布式集成测试策略,用于测试松耦合的同级构件的交互关系。常用的集成顺序有以下几种: (1)风险驱动。 (2)反风险驱动。 (3)依赖性驱动。 (4)优先级驱动。 分布式集成的优缺点:类似于C/S集成。 分布式集成的适用范围:分布式软件系统。
3. 论述题3:针对以下C语言程序,请按要求回答问题
下面是一个程序段(C语言),试设计基本路径测试的测试用例,设计出的测试用例要保证每一个基本独立路径至少要执行一次。
函数说明:当i flag=0;返回i count+100
当i flag=l;返回i count*10
否则 返回 i count*20
输入参数:int i count int i flag
输出参数:int i retum
程序代码如下:
(1)画出该函数的控制流程图。
(2)采用基本路径测试法设计一组测试用例,保证每个基本独立路径都至少执行一次。
问题1:
解答:
根据程序的源代码,容易画出对应的控制流图,如图17-4所示。
(其中圈中的数字代表的是语句的行号)
问题2:
解答:
第一步,根据上述控制流图计算该程序的环路复杂性。
由图可以看出,判定节点数为3,边数为10,节点总数为8,故
V(G)=10-8+2=4
或V(G)=3+1=4
第二步,根据环路复杂度为4,可确定4条基本独立路径。
Path1:4—24
Path2:4—6—8—24
Path3:4—6—13—15—22—4—24
Path4:4—6—13—19—22—4—24
第三步,设计测试用例
根据上面4条基本独立路径,可以设计测试用例如下:
测试用例1
输入数据:i_flag=0,或者是i_flag<0的某个值。
预期输出结果:i_temp=0。
测试用例2
输入数据:i_count=1,i_flag=0。
预期输出结果:i_temp=101。
测试用例3
输入数据:i_count=1,i_flag=1。
预期输出结果:i_temp=10。
测试用例4
输入数据:i_count=1,i_flag=2。
预期输出结果;i_temp=20。
但这些测试用例是可以简化的,由于路径path1是path4的真子集,所以path1是可以不要的。故针对该程序最少的测试用例数为3,即上述测试用例2,测试用例3,测试用例4。
[解析] 首先根据程序的源代码,画出控制流图。然后通过控制流图可以计算出该程序的复杂度,找出所有的独立路径,根据基本路径测试法设计测试用例。