您的当前位置:首页正文

软件测试试题.doc

2020-03-31 来源:意榕旅游网
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%;而点数又是由投保人的年龄、性别、婚姻状况和抚养人数来决定的,具体规则如下所示:

保险公司计算保费费率的规则

年龄 20~39 6点

性别 其他 2点 M 4点 F 3点 婚姻 已婚 3点 未婚 5点 抚养人数 1人扣0.5点, 最多扣3点 40~59 4点 假设投保额是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); printf(“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个条件

(a<=0 b<=0 c<=0 a+b<=c b+c<=a c+a<=b) a==b b==c c==a

0 0 0 T T T T T T T T T 2 3 4 F F F F F F F F F 这样,2组测试用例,使得每个条件,至少各有一次“真”和“假”。 (2)分支-条件覆盖:

根据流程图,有4条分支: 测试用例为:

0 0 0 match=1 2 3 4 match=3 1 1 1 match=4 2 2 3 match=2 (3)条件组合覆盖:

Homework5:第9章(基路径测试)

1.函数说明 :当i_flag=0;返回 i_count+100

当i_flag=1;返回 i_count *10 否则 返回 i_count *20

输入参数:int i_count , int i_flag

输出参数: int i_return;

代码:1 int Test(int i_count, int i_flag) 2 {

3 int i_temp = 0; 4 while (i_count>0) 5 {

6 if (0 == i_flag) 7 {

8 i_temp = i_count + 100; 9 break; 10 } 11 else 12 {

13 if (1 == i_flag) 14 {

15 i_temp = i_temp + 10; 16 } 17 else 18 {

19 i_temp = i_temp + 20; 20 } 21 }

22 i_count--; 23 }

24 return i_temp; 25 }

用基路径测试方法,画出DD路径图,计算圈复杂度,并列出基路径,设计对应的测试用例。

解:

(1) 基本路径测试步骤:

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)基本路径: 1 B

(4,24) 2 C,E,J

(4,6,8,24)

3 C,D,F,H,A,B

(4,6,13,15,22,4,24) 4 C,D,G,I,A,B

(4,6,13,19,22,4,24) (5)测试用例: 1 B(4,24)

输入数据:i_flag=0,或者是i_flag<0的某一个值。 预期结果:i_temp=0.

2 C,E,J(4,6,8,24) 输入数据: i_count =1;i_flag=0 预期结果:i_temp=101.

3 C,D,F,H,A,B(4,6,13,15,22,4,24) 输入数据: i_count =1;i_flag=1 预期结果:i_temp=10.

4 C,D,G,I,A,B(4,6,13,19,22,4,24) 输入数据: i_count =1;i_flag=2 预期结果:i_temp=20.

因篇幅问题不能全部显示,请点此查看更多更全内容