软件测试试题Word文档格式.docx
《软件测试试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《软件测试试题Word文档格式.docx(17页珍藏版)》请在冰豆网上搜索。
某保险公司人寿保险的保费计算方式为:
保费=投保额×
保险费率
其中,保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同,体现在不同年龄、性别、婚姻状况和抚养人数,点数设定不同。
10点以上保险费率为0.6%,10点及10点以下保险费率为0.1%;
而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定的,具体规则如下所示:
保险公司计算保费费率的规则
年龄
性别
婚姻
抚养人数
20~39
6点
40~59
4点
其他
2点
M
F
3点
已婚
未婚
5点
1人扣0。
5点,
最多扣3点
假设投保额是1万元,找出保险公司人寿保险保费计算程序的等价类测试用例。
对程序中各个输入条件的要求如下:
年龄是一位或两位非零整数,值的有效范围为1~99;
性别是一位英文字符,有效取值只能为‘M’(表示男性)或’F'
(表示女性);
婚姻的有效取值只能为‘已婚'
或‘未婚’;
抚养人数的有效取值可以是空白或一位非零整数(1~9)。
(1)分析程序的规格说明,列出等价类表(包括有效等价类和无效等价类)。
(2)根据
(1)中的等价类表,设计能覆盖所有等价类的测试用例的输入数据和预期输出。
(1)
(2)
Homework3:
第7章:
一个处理单价为5元钱的饮料自动售货机软件测试用例的设计。
规格说明如下:
若投入5元钱或10元钱,按下“橙汁"
或“啤酒"
的按钮,则相应的饮料就送出来.若售货机没有零钱找,则一个显示“零钱找完"
的红灯亮,这时在投入10元钱并按下按钮后,饮料不送出来而且10元钱也退出来;
若有零钱找,则显示“零钱找完”的红灯灭,在送出饮料的同时退还5元钱。
构造因果图分析规格说明,用决策表设计测试用例。
1)分析这一段说明,列出原因和结果
原因:
1.售货机有零钱找
2.投入1元硬币
3。
投入5角硬币
4。
押下橙汁按钮
5.押下啤酒按钮
结果:
21.售货机〖零钱找完〗灯亮
22。
退还1元硬币
23.退还5角硬币
24。
送出橙汁饮料
25.送出啤酒饮料
2)画出因果图,如图3—11所示。
所有原因结点列在左边,所有结果结点列在右边.建立中间结点,表示处理的中间状态。
中间结点:
11.投入1元硬币且押下饮料按钮
12。
押下〖橙汁〗或〖啤酒〗的按钮
13.应当找5角零钱并且售货机有零钱找
14.钱已付清
图3—11:
售货机因果图
3)转换成判定表:
4)在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。
第16列与第32列因什么动作也没做,也删去。
最后可根据剩下的16列作为确定测试用例的依据。
Homework4:
第9章:
路径测试(测试覆盖指标)
练习一:
求解一元二次方程程序如下:
main()
{floata,b,c,x1,x2,mid;
scanf(“%f,%f,%f”,&
a,&b,&c);
if(a!
=0)
{mid=b*b-4*a*c;
if(mid>
0)
{x1=(—b+sqrt(mid))/(2*a);
x2=(—b-sqrt(mid))/(2*a);
printf(“tworealroots\n”);
}
else{if(mid==0)
{x1=-b/2*a;
printf(“onerealroot\n"
);
}
else{x1=-b/(2*a);
x2=sqrt(—mid)/(2*a);
printf(“twocomplexroots\n"
}
printf(“x1=%f,x2=%f\n”,x1,x2);
}
1、用语句覆盖准则对该程序设计测试用例;
2、用分支覆盖准则对该程序设计测试用例;
1.语句覆盖
由控制图可以很容易看到,可以只选3组(所有的点必须覆盖):
第1组:
2,5,3,
执行顺序为:
1,2,3,4,5,10,11,12,13
第2组:
1,2,1
1,2,3,4,5,6,8,9,11,12,13
第3组:
4,2,1
执行顺序为:
1,2,3,4,5,6,7,9,11,12,13
2。
分支覆盖
由控制图可以很容易看到,可以只选4组(所有的边必须覆盖):
2,5,3(a!
=0,mid>
0),
1,2,3,4,5,10,11,12,13
1,2,1(a!
=0,mid=0),
1,2,3,4,5,6,8,9,11,12,13
第3组:
4,2,1(a!
=0,mid〈0),
1,2,3,4,5,6,7,9,11,12,13
第4组:
0,2,1(a=0)
1,2,3,13
练习二:
程序如下:
{inti,j,k,match;
scanf(“%d%d%d,&i,&
j,&k);
if(i〈=0‖j〈=0‖k<
=0‖i+j<
=k‖i+k〈=j‖j+k<
=i)match=4;
elseif(i==j&&i==k&&j==k)match=1;
elseif(i==j‖i==k‖j==k)match=2;
elsematch=3;
printf(“match=%d\n"
,match);
}
用条件覆盖准则对该程序设计测试用例;
用分支—条件覆盖准则对该程序设计测试用例;
用组合覆盖准则对该程序设计测试用例;
解:
分析:
三组判定:
(1)条件覆盖:
第一组:
if(a<
=0||b<
=0||c〈=0||a+b<
=c||b+c〈=a||c+a〈=b)
有6个条件
第二组:
if(a==b&
&b==c&
&c==a)有3个条件
第三组:
if(a==b||b==c||c==a)有3个条件
实际上只有9个条件
(a〈=0b〈=0c〈=0a+b〈=cb+c<
=ac+a<
=b)a==bb==cc==a
000TTTTTTTTT
234FFFFFFFFF
这样,2组测试用例,使得每个条件,至少各有一次“真"
和“假”。
(2)分支—条件覆盖:
根据流程图,有4条分支:
测试用例为:
000match=1
234match=3
111match=4
223match=2
(3)条件组合覆盖:
Homework5:
第9章(基路径测试)
函数说明:
当i_flag=0;
返回
i_count+100
当i_flag=1;
i_count
*10
否则
返回
*20
输入参数:
inti_count
,
inti_flag
输出参数:
int
i_return;
代码:
1
int
Test(int
i_count,
i_flag)
2
{
3
i_temp
=
0;
4
while
(i_count>
5
6
if
(0
==
7
{
8
+
100;
9
break;
10
11
else
12
13
(1
14
15
10;
16
17
18
19
20;
20
21
22
i_count——;
23
24
return
i_temp;
25
用基路径测试方法,画出DD路径图,计算圈复杂度,并列出基路径,设计对应的测试用例。
(1)基本路径测试步骤:
导出程序流程图的拓扑结构-控制流图G
2.计算控制流图G的环路复杂度V(G)
环路复杂度是一种为程序逻辑复杂性提供定量测试的软件度量。
将该度量用于计算程序的基本独立路径数目。
为确保所有语句至少执行一次的测试数量的上界.
简单的定义就是控制流图的区域数目
3.确定只包含独立路径的基本路径集
4.设计测试用例
(2)控制流图
(3)计算流图G的环路复杂度V(G)
有三种方法计算环路复杂度:
1〉V(G)=区域个数=4
2>
V(G)=E—N+2,E是流图中边的数量,N是流图中结点的数量.
V(G)=10—8+2=4
3〉V(G)=P+1,P是流图G中判定结点的数量
V(G)=3+1=4
(4)基本路径:
1B
(4,24)
2C,E,J
(4,6,8,24)
3C,D,F,H,A,B
(4,6,13,15,22,4,24)
4C,D,G,I,A,B
(4,6,13,19,22,4,24)
(5)测试用例:
1B(4,24)
输入数据:
i_flag=0,或者是i_flag〈0的某一个值。
预期结果:
i_temp=0.
2C,E,J(4,6,8,24)
i_count=1;
i_flag=0
预期结果:
i_temp=101。
3C,D,F,H,A,B(4,6