软件测试实验(一二三)-答案.doc

上传人:b****9 文档编号:154506 上传时间:2022-10-04 格式:DOC 页数:17 大小:760KB
下载 相关 举报
软件测试实验(一二三)-答案.doc_第1页
第1页 / 共17页
软件测试实验(一二三)-答案.doc_第2页
第2页 / 共17页
软件测试实验(一二三)-答案.doc_第3页
第3页 / 共17页
软件测试实验(一二三)-答案.doc_第4页
第4页 / 共17页
软件测试实验(一二三)-答案.doc_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

软件测试实验(一二三)-答案.doc

《软件测试实验(一二三)-答案.doc》由会员分享,可在线阅读,更多相关《软件测试实验(一二三)-答案.doc(17页珍藏版)》请在冰豆网上搜索。

软件测试实验(一二三)-答案.doc

黑盒测试

(一)和白盒测试

(二)实验

背景知识

结构性测试是知道产品内部工作过程,检测产品内部动作是否按照规格说明书的规定正常进行。

结构性测试允许测试人员利用程序内部的逻辑结构及有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。

通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

一、逻辑覆盖

结构性测试力求提高测试覆盖率。

逻辑覆盖是一系列测试过程的总称,它是在使用白盒测试法时,选用测试用例执行程序逻辑路径的方法。

逻辑覆盖按覆盖程度由低到高大致分为以下几类:

(1)语句覆盖:

设计若干测试用例,使程序中每一可执行语句至少执行一次;

(2)判断覆盖:

设计用例,使程序中的每个逻辑判断的取真取假分支至少经历一次;

(3)条件覆盖:

设计用例,使判断中的每个条件的可能取值至少满足一次;

(4)判断/条件覆盖:

设计用例,使得判断中的每个条件的所有可能结果至少出现一次,而且判断本身所有可能结果也至少出现一次;

(5)条件组合覆盖。

设计用例,使得每个判断表达式中条件的各种可能组合都至少出现一次;显然,满足⑤的测试用例也一定是满足②、③、④的测试用例。

(6)路径覆盖。

设计足够的测试用例,使程序的每条可能路径都至少执行一次。

如果把路径覆盖和条件组合覆盖结合起来,可以设计出检错能力更强的测试数据用例。

二、基本路径测试

如果把覆盖的路径数压缩到一定限度内,例如,程序中的循环体只执行零次和一次,就成为基本路径测试。

它是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。

设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。

①程序的控制流图

控制流图是描述程序控制流的一种图示方法。

符号○称为控制流图的一个结点,一组顺序处理框可以映射为一个单一的结点。

控制流图中的箭头称为边,它表示了控制流的方向,在选择或多分支结构中分支的汇聚处,即使没有执行语句也应该有一个汇聚结点。

边和结点圈定的区域叫做区域,当对区域计数时,图形外的区域也应记为一个区域。

②计算程序环路复杂性

进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。

所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。

只要设计出的测试用例能够确保这些基本路径的执行,就可以使得程序中的每个可执行语句至少执行一次,每个条件的取真分支和取假分支也能得到测试。

基本路径集不是唯一的,对于给定的控制流图,可以得到不同的基本路径集。

通常环路复杂性可用以下三种方法求得。

*将环路复杂性定义为控制流图中的区域数。

*设E为控制流图的边数,N为图的结点数,则定义环路复杂性为V(G)=E-N+2。

*若设P为控制流图中的简单判定结点数,则有V(G)=P+1。

③导出测试用例

利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。

测试用例格式(参考)

表1-2测试用例表

测试项目名称

测试人员

编制日期

测试覆盖标准

测试用例名称编号

测试数据

预期输出

实际输出

测试路径

1

2

测试结果分析

题目:

A.

上图是某银行历史明细帐的查询界面。

历史明细帐功能可以查询查询2年内的存折明细(不包括当天)。

帐号是一个16位的数字,但是后四位的和除以5总是余3。

请根据所学测试用例设计方法给该功能设计测试用例

输入数据

有效等价类

无效等价类

帐号

1.全部为数字,

16位字符,

最后四位数字的和除以5总是3

2.有非数字存在

3.为空

4.<16or>16位字符

5.最后四位数字的和除以5不一定等于5

日期

1.起始日期与截止日期均为数字且截止日期小于20160418

为8位数字

起始日期>=20140418且截止日期<=2016

MM={1.3.5.7.8.10.12}&&{1<=DD<=31}

OrMM={4,6,9,11}&&{1<=DD<=30}

OrMM={2}&&{1<=DD<=28}

2.有非数字存在

3.为空

4.<8or>8位字符

5.起始日期<20140418or截止日期>20160418

6.MM={1.3.5.7.8.10.12}&&{DD>31}

OrMM={4,6,9,11}&&{DD>30}

OrMM={2}&&{DD>28}

验证码

1.为1274

2.除1274以外其他字符

密码

1.6-12位字符,

不能有特殊符号,

不能有空格

2.<6or>12位字符

3.存在特殊符号

4.为空

5.存在空格

帐号

1327483658111112

输入有效

1

47127348ifufh233

输入无效

2

输入无效

3

76876875

输入无效

4

3423432345660006

输入无效

5

日期

20150418

20160305

输入有效

1

2016oi-4

2015okij

输入无效

2

输入无效

3

201655

201699999

输入无效

4

20140318

20170505

输入无效

5

20160331

20141302

输入无效

6

验证码

1274

输入有效

1

7657

输入无效

2

密码

Zhangtao1906

输入有效

1

@#$%^#&!

输入无效

2

输入无效

3

Zhnagtao33

输入无效

4

B.

问题描述如下:

1.程序读入三个正整数,这三个正整数代表同一三角形三条边的长度,程序根据这三个值判断三角形属于不等边,等腰,等边三角形中的一种,假定输入的三个正整数的值都是0~100。

2.一元二次方程式

                 AX2+BX+C=0

   的求根程序有以下功能:

①.输入A、B、C三个系数;

②.输出根的性质的信息,包括两个相等或不相等的实根,或无实根

③.打印根的值(如有实根)   

提示:

时,方程的解:

或x=。

要求:

1.根据问题1、2的说明,画出对应的程序流程图

2.根据边界值分析法,等价类划分法给问题1、2设计测试用例

输入数据

有效等价类

无效等价类

三角形三边分别为,x,y,z

1.x+y>z&&x+z>y&&y+z>x

3.0

5.x=yory=zorx=z

6.x=y=z

2.x+y<=zorx+z<=yory+z<=x

4.x>100ory>100orz>100

x=3y=4z=5

输入有效

1,3

x=101y=90z=33

输入无效

4

x=1y=1z=3

输入无效

2

x=2y=2z=3

输入有效

1,3,5

x=2y=2z=2

输入有效

1,3,5,6

输入数据

有效等价类

无效等价类

输入三个系数a,b,c

1.a,b,c均为有理数

3.b*b-4*a*c>0

4.b*b-4*a*c=0

6.a>0&&a<0

2.a,b,c均为无理数

5.b*b-4*a*c<0

7.a=0

a=2,b=5,c=2

输入有效值

1,3,6

a=1,b=2,c=1

输入有效值

1,4,6

a=√2,b=2,c=1

输入无效值

2

a=2,b=3,c=2

输入无效值

5

a=0

输入无效值

7

3.写程序完成问题1、2的功能(语言任选)

问题1:

#include

voidmain()

{

floata,b,c;

printf("请输入三角形的三条边长x,y,z:

\n");

scanf("%f",&a);

scanf("%f",&b);

scanf("%f",&c);

if((a>=1&&a<=100)&&(b>=1&&b<=100)&&(c>=1&&c<=100))

{

if(a+b

printf("不能构成三角形!

\n");

elseif((a==b&&(a!

=c))||(a==c&&(b!

=c))||(b==c&&(a!

=c)))/*判断是否为等腰三角形*/

printf("构成等腰三角形\n");

elseif(a==c&&a==b)/*判断是否为等边三角形*/

printf("构成等边三角形\n");

else

printf("构成一般三角形!

\n");

}

else

printf("请输入1-100之间的数!

\n");

}

问题2:

#include

#include

intmain(void){

doublea,b,c,result,root1,root2;

scanf("%lf%lf%lf",&a,&b,&c);

result=b*b-4*a*c;

if(result>=0)

{

if(result==0)

{

root1=(-b)/(2*a);

printf("有两个相同的实根%.4lf\n",root1);

}

else

{

root1=(-b+sqrt(result))/(2*a);

root2=(-b-sqrt(result))/(2*a);

printf("有两个不同的实根%.4lf和%.4lf\n",root1,root2);

}

}

else

{

printf("无实根\n");

}

}

4.对问题1、2用白盒测试用例的设计方法(语句覆盖、判定覆盖、条件覆盖、条件组合覆盖)设计测试用例

5.语句覆盖:

a)x=2y=4z=3,

b)x=1y=1z=3,

c)x=101y=90z=33,

d)x=2y=2z=3,

e)x=2y=2z=2

6.判定覆盖

a)x=2y=4z=3,

b)x=1y=1z=3,

c)x=101y=90z=33,

d)x=2y=2z=3,

e)x=2y=2z=2

7.条件覆盖

a)x=2y=4z=3,

b)x=1y=1z=3,

c)x=101y=90z=33,

d)x=2y=2z=3,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1