软件测试试题.doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Homework1:第5章:边界值测试
1.加法器程序计算两个1~100之间的整数的和。设计加法器边界值测试用例集合。解:加法器测试用例增加如下几条
(1)弱健壮性等价测试类:
A=0 B=10 C=ERROR
A=1 B=10 C=11
A=2 B=10 C=12
A=10 B=0 C=ERROR
A=10 B=1 C=11
A=10 B=2 C=12
A=99 B=10 C=109
A=100 B=10 C=110
A=101 B=10 C=ERROR
A=10 B=99 C=109
A=10 B=100 C=110
A=10 B=101 C=ERROR
(2)是否需要考虑以下情形?
虑到小数,非字符等其它情况测试用例还要增加以下几种情形:
A=3.1 B=5.6 C=ERROR
A=A B=B C=ERROR
A=@ B=# C=ERROR
A=空格B=空格C=ERROR
A= B= C=ERROR
解:
Homework2:第6章:等价类测试
1.保险公司人寿保险保费计算程序的等价类测试
某保险公司人寿保险的保费计算方式为:
保费 = 投保额×保险费率
其中,保险费率根据年龄、性别、婚姻状况和抚养人数的不同而有所不同,体现在不同年龄、性别、婚姻状况和抚养人数,点数设定不同。10点以上保险费率为0.6%,10点及10点以下保险费率为0.1%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定的,具体规则如下所示:
保险公司计算保费费率的规则
假设投保额是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章:路径测试(测试覆盖指标)1.练习一:
求解一元二次方程程序如下:
main()
{float a,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);
print f(“two real roots\n”);}
else{ if(mid==0)
{x1=-b/2*a;
printf(“one real root\n”);}
else{x1=-b/(2*a);
x2=sqrt(-mid)/(2*a);
printf(“two complex roots\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组(所有的边必须覆盖):
第1组:2,5,3(a!=0,mid>0),
执行顺序为:
1,2,3,4,5,10,11,12,13
第2组: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
练习二:
程序如下:
main()
{ int i,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;
else if(i==j&&i==k&&j==k) match=1;
else if(i==j‖i==k‖j==k) match=2;
else match=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个条件