当前位置:文档之家› 软件测试试题

软件测试试题

Homework1:第5章:边界值测试1.加法器程序计算两个1~100之间的整数的和。

设计加法器边界值测试用例集合。

解:加法器测试用例增加如下几条(1)弱健壮性等价测试类:A=0 B=10 C=ERRORA=1 B=10 C=11A=2 B=10 C=12A=10 B=0 C=ERRORA=10 B=1 C=11A=10 B=2 C=12A=99 B=10 C=109A=100 B=10 C=110A=101 B=10 C=ERRORA=10 B=99 C=109A=10 B=100 C=110A=10 B=101 C=ERROR(2)是否需要考虑以下情形?虑到小数,非字符等其它情况测试用例还要增加以下几种情形:A=3.1 B=5.6 C=ERRORA=A B=B C=ERRORA=@ B=# C=ERRORA=空格B=空格C=ERRORA= 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,132.分支覆盖由控制图可以很容易看到,可以只选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=12 3 4 match=31 1 1 match=42 23 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;代码:1int Test(int i_count, int i_flag)2 {3int i_temp = 0;4while (i_count>0)5 {6if (0 == i_flag)7 {8 i_temp = i_count + 100;9break;10 }11else12 {13if (1 == i_flag)14 {15 i_temp = i_temp + 10;16 }17else18 {19 i_temp = i_temp + 20;20 }21 }22 i_count--;23 }24return i_temp;25 }用基路径测试方法,画出DD路径图,计算圈复杂度,并列出基路径,设计对应的测试用例。

解:(1)基本路径测试步骤:1.导出程序流程图的拓扑结构—控制流图G2.计算控制流图G的环路复杂度V(G)环路复杂度是一种为程序逻辑复杂性提供定量测试的软件度量。

将该度量用于计算程序的基本独立路径数目。

为确保所有语句至少执行一次的测试数量的上界。

简单的定义就是控制流图的区域数目3.确定只包含独立路径的基本路径集4.设计测试用例(2)控制流图(3)计算流图G的环路复杂度V(G)有三种方法计算环路复杂度:1>V(G)= 区域个数=42>V(G)=E-N+2,E是流图中边的数量,N是流图中结点的数量。

V(G)=10-8+2=43>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.。

相关主题