软件测试试题.doc

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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个条件

相关文档
最新文档