《软件测试基础》课件第3章 黑盒测试_第1页
《软件测试基础》课件第3章 黑盒测试_第2页
《软件测试基础》课件第3章 黑盒测试_第3页
《软件测试基础》课件第3章 黑盒测试_第4页
《软件测试基础》课件第3章 黑盒测试_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章黑盒测试概述等价类划分边界值分析决策表测试因果图场景法

黑盒测试又称正确性测试,或功能测试,是对产品的各功能进行验证,用于检查产品是否达到用户要求的功能或者说检查软件的功能是否符合规格说明。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。程序P输入

I输出

OP=f(I,O)两个例子三角形问题NextDate函数

三角形问题

三角形问题:输入三个整数a、b和c分别作为三角形的三条边,程序判断由这三条边构成的三角形类型是:等边三角形、等腰三角形、一般三角形或非三角形(不能构成一个三角)。

输入三个整数a、b和c分别作为三角形的三条边,要求a、b和c必须满足:Con1.1≤a≤100Con4.a<b+cCon2.1≤b≤100Con5.b<a+cCon3.1≤c≤100Con6.c<a+b如果a、b和c满足Con1、Con2和Con3,则输出为四种情况之一:1).如果不满足条件Con4、Con5和Con6中有一个,则程序输出为“非三角形”。2).如果三条边相等,则程序输出为“等边三角形”。3).如果恰好有两条边相等,则程序输出为“等腰三角形”。4).如果三条边都不相等,则程序输出为“一般三角形”。

NextDate函数

NextDate是三个变量month、day和year的函数。输出为输入日期后一天的日期。例如,如果输入为:2003年10月29日,则NextDate函数的输出为:2003年10月30日。

要求输入month、day和year都是整数值,满足:

Con1.

1≤month≤12Con2.

1≤day≤31

Con3.

1912≤year≤2050等价类划分测试

等价类划分是一种典型的黑盒测试方法,该方法完全不考虑程序的内部结构,只根据对软件的要求和说明,即需求规格说明书,把程序输入域划分成若干部分,然后从每个部分中选取少数代表性数据为作测试输入。等价类划分等价类划分把程序的输入域划分成若干个互不相交的子集——等价类。所谓等价类是指输入域的某个集合,等价类的并便是整个输入域。这对于测试有两个非常重要的意义:(1)表示整个输入域提供了一种形式的完备性(2)互不相交则可保证一种形式的无冗余性。等价类划分等价类由等价关系决定。因此等价类中的元素有一些共同的特点:如果用等价类中的一个元素作为测试数据进行测试不能发现程序中的故障,那么使用集合中的其它元素进行测试也不可能发现程序故障。

对揭露程序中的故障来说,等价类中的每个元素是等效的。

有效等价类无效等价类有效等价类是指对程序规格说明,是有意义的,合理的输人数据所构成的集合。利用有效等价类,可以检验程序是否实现了规格说明预先规定的功能和性能。在具体问题中,有效等价类可以是一个,也可以是多个。有效等价类

无效等价类是指对程序规格说明,是不合理或无意义的输入数据所构成的集合。利用无效等价类,可以检查程序功能和性能的实现是否有不符合规格说明要求的地方。

对于具体的问题,无效等价类至少应有一个,也可能有多个。

无效等价类根据已列出的等价类表,按以下步骤确定测试用例:1)为每个等价类规定一个唯一的编号。2)设计一个新的测试用例,尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到覆盖了所有的有效等价类。3)设计一个新的测试用例,使其覆盖并且只覆盖一个还没有被覆盖的无效等价类。重复这一步,直至测试用例覆盖了所有的无效等价类。

等价类划分为便于理解,以一个有两个输入变量x1和x2的程序F为例,说明等价类划分。

变量x1和x2无效值:

x1<a,x1>d

和x2<e,x2>g变量x1和x2有效值:a≤x1≤d,区间[a,b],(b,c),[c,d]e≤x2≤g,区间[e,f],[f,g]其中方括号和圆括号分别表示闭区间和开区间的端点abcdefgx1x2在三角形问题中,输入条件要求:

等价类划分测试举例

●整数;●三个数;●取值在1到100之间

三个整数有效等价类号码无效等价类号码整数1一边为非整数二边为非整数三边均为非整数456三个数2只有一条边只有二条边多余三条边7893一边为零二边为零三边为零101112一边<零二边<零三边<零131415一边>100二边>100三边>100161718

abc覆盖的等价类abc覆盖的等价类1.5,4,540,0,0123.5,2.5,55-3,4,6132.5,4.5,5.562,-7,-51437-3,-5,-7154,58101,4,8162,3,4,593,101,101173,0,810101,101,101180,6,011三角形问题的无效等价类测试用例

边界值分析大量的故障发生在输入或输出范围的边界上,而不是在输入范围的内部。实践表明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常常可以取得良好的测试效果。使用边界值分析方法设计测试用例,首先应确定边界情况。输入等价类与输出等价类的边界,就是应着重测试的边界情况。边界值分析方法的测试数据

(1)选取正好等于(2)刚刚大于(3)刚刚小于边界的值而不是选取等价类中

典型值

任意值

边界条件

边界条件是一些特殊情况。程序在处理大量中间数值时都是正确,但是在边界处可能出现错误。比如,在作三角形计算时,要输入三角形的三个边长:a、b和a。当满足a+b>c、a+c>b及b+c>a才能构成三角形。但如果把三个不等式的任何一个大于号“>”错写成大于等于号“≥”,那就无法构成三角形了。/*Initiatizeeachelementto–1*/main(){intdata[10];inti;For(i=1;i<=10;i++)data[i]=-1;}

这段代码的意图是创建包含10个元素的数组,并为数组中的每一个元素赋初值-1,即数组中从第1个元素到第10个元素被赋予数值-1。

data(0)=0;data(1)=-1;data(2)=-1;data(3)=-1;data(4)=-1;data(5)=-1;data(6)=-1;data(7)=-1;data(8)=-1;data(9)=-1;data(10)=-1

data(0)的值是0,而不是-1。边界条件

刚开始时,可能意识不到一组给定数据包含了多少边界。但是仔细分析总可以找到一些不明显的、有趣的和可能产生软件故障的边界。实际上,边界条件就是软件操作界限所在的边缘条件。一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量,等等。边界条件第一个/最后一个

最小值/最大值

开始/完成

超过/在内

空/满

最短/最长

最慢/最快

最早/最迟

最高/最低

相邻/最远边界值分析测试

一个有两个变量x1,x2的程序F,输入变量x1和x2在下列范围内取值:

a≤x1≤bc≤x2≤d区间[a,b]和[c,d]是x1和x2的值域,强类型语言(例如Ada)允许显式地定义这种变量值域。事实上,边界值测试适非强类型语言。cabdx1x2两个变量程序的输入域程序F的输入空间(定义域)如下图所示。带阴影矩形中的任何点都是程序F的有效输入。边界值分析测试

边界值分析的基本思想是利用输入变量值的最小值,稍大于最小值,正常值,稍小于最大值和最大值。

边界值分析测试用例的获得,通过使所有变量取正常值,只使一个变量分别取最小值、略高于最小值、略低于最大值和最大值。N个变量,边界值分析产生4n+1个测试用例。x1abdx2两个变量的边界值分析测试用例c{<xlnom,x2min>,<xlnom,x2min+>,<xlnom,x2nom>,<xlnom,x2max->,<xlnom,x2max>,<xlmin,x2nom>,<xlmin+,x2nom>,<xlmax,x2nom>,<xlmax+,x2nom>}4n+1=4*2+1=9个健壮性边界值测试

健壮性边界值测试是边界值分析的一种扩展。变量除了取min,min+,nom,max-,max五个边界值外,还要考虑略超过最大值(max+)以及略小于最小值(min-)的取值。N个变量,

健壮性边界值分析产生6n+1个测试用例。abdx2两个变量程序的健壮性测试用例x1abdx2x1三角形问题的边界值分析测试用例测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形测试用例abc预期输出Test150501等腰三角形Test250502等腰三角形Test3505050等边三角形Test4505099等腰三角形Test55050100非腰三角形Test650150等腰三角形Test750250等腰三角形Test8509950等腰三角形Test95010050非三角形Test1015050等腰三角形Test1125050等腰三角形Test12995050等腰三角形Test131005050非三角形NextDate函数的测试用例NextDate函数是一个有三个变量month(月份)、day(日期)和year(年)的函数。输出为输入日期后一天的日期。要求输入变量month、day和year都是整数值,并且满足下条件:Con1.1≤month≤12Con2.1≤day≤31Con3.1912≤year≤2050

666661515-112191119121913197520491911年6月16日1911年6月16日1911年6月16日1911年6月16日1911年6月16日测试用例MonthDayYear预期输出151515151520502051197519751975197519751975Test1Test2Test3Test4Test5666661911年6月16日1911年6月16日Day不在有效值域1..31中1975年6月2日1975年6月3日1975年7月1日不可能的输入日期Day不在有效值域1..31中666303132

Test6Test7Test8Test9Test10

Test11Test12Test13

NextDate函数健壮性测试用例151515测试用例MonthDayYear预期输出197519751975197519751975-112month不在有效值域1..12中1975年1月16日1975年2月16日

1975年11月16日

1975年12月16日

month不在有效值域1..12中111213151515Test14Test15Test16

Test17Test18Test19

NextDate函数健壮性测试用例边界值分析的局限性基于函数(程序)输入定义域的测试方法,是所有测试方法中最基本的。这类测试方法都有一种假设,即输入变量是真正独立的。如果不能保证这种假设,则这类方法不能产生令人满意的测试用例。在所有的黑盒测试方法中,基于决策表的测试是最严格,最具有逻辑严格性的测试方法。决策表最突出的优点是,它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。决策表测试

在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的取值,也即针对不同逻辑条件组合值,分别执行不同的操作。描述不同条件集合下采取行动的若干组合情况。

决策表决策表通常由4个部分组成:条件桩部分列出了问题的所有条件

,动作桩则给出了问题规定的可能采取的操作。

在实际使用判定表时,常常先将它简化。简化是以合并相似规则为目标的。若表中有两条或多条规则具有相同的动作,并且在条件项之间存在着极为相似的关系,便可以设法将其合并。合并规则的办法:“不关心”条目(don’tcare)条件无关或条件不适用。

1)确定规则的个数。每个条件可取两个取值,故应有2n种规则。

2)列出所有的条件桩和动作桩。

3)填入条件项。

4)填入动作项,这样便可得到初始决策表。

5)化简,合并相似规则后得到决策表。构造决策表的5个步骤:

如果变量确实是相互独立的,那么使用等价类的笛卡儿积有意义。如果变量间存在逻辑依赖关系,那么这些依赖关系在机械地选取输入值时可能丢失。

决策表方法通过使用“不可能动作”概念表示条件的不可能组合,来强调依赖关系。

NextDate函数能够使用的操作只有5种:Day变量+1Month变量+1Day变量复位Mongth变量复位Year变量+1

M1:{month:month有30天}M2:{month:month有31天,12月除外}M3:{month:month是12月)M4:{month:month是2月)D1:{day:1≤day≤27)D2:{day:day:28)D3:{day:day:29)D4:{day:day:30}D5:{day:day:31)Y1:{year:year是闰年}Y2:{year:year不是闰年}NextDate函数的日、月的等价类集合上建立决策表NextDate函数的测试用例

有30天的月份有31天的月份(非12月)12月份不可能规则可以简化关注2月和闰年使用决策表代数进一步简化这22个测试用例。

进一步简化后的决策表

1-3

4

5

6-9

10

11-14

15

16

17

18

19

20

21,22

条件:

c1:month在

c2:day在

c3:year在

M1

D1,D2,D3

M1

D4

M1

D5

M2

D1,D2,D3,D4

M2

D5

M3

D1,D2,D3,D4

M3

D5

M4

D1

M4

D2

Y1

M4

D2

Y2

M4

D3

Y1

M4

D3

Y2

M4

D4,D5

行为:

a1:不可能

a2:day加1

a3:day复位

a4:month加1

a5:month复位

a6:year加1

进一步简化后的决策表

1-3

4

5

6-9

10

11-14

15

16

17

18

19

20

21,22

条件:

c1:month在

c2:day在

c3:year在

M1

D1,D2,D3

M1

D4

M1

D5

M2

D1,D2,D3,D4

M2

D5

M3

D1,D2,D3,D4

M3

D5

M4

D1

M4

D2

Y1

M4

D2

Y2

M4

D3

Y1

M4

D3

Y2

M4

D4,D5

行为:

a1:不可能

a2:day加1

a3:day复位

a4:month加1

a5:month复位

a6:year加1

使用决策表代数进一步简化这22个测试用例。

Test:monthdayyear预期输出Test1-3:816200117/08/2001Test4:83020011/09/2001Test5:8312001不可能Test:Test1-3:Test4:Test5:进一步简化后的决策表

1-3

4

5

6-9

10

11-14

15

16

17

18

19

20

21,22

条件:

c1:month在

c2:day在

c3:year在

M1

D1,D2,D3

M1

D4

M1

D5

M2

D1,D2,D3,D4

M2

D5

M3

D1,D2,D3,D4

M3

D5

M4

D1

M4

D2

Y1

M4

D2

Y2

M4

D3

Y1

M4

D3

Y2

M4

D4,D5

行为:

a1:不可能

a2:day加1

a3:day复位

a4:month加1

a5:month复位

a6:year加1

Test:monthdayyear预期输出Test6-9:116200117/01/2001Test10:13120011/02/2001Test11-14:1216200117/12/2001Test:Test6-9:Test10:Test11-14:Test:monthdayyear预期输出Test15:123120011/01/2002Test16:216200117/02/2001Test17:228200429/02/2004Test:Test15:Test16:Test17:Test:monthdayyear预期输出Test18:22820011/03/2002Test19:22920041/03/2004Test20:2292001不可能Test21-22:2302001不可能Test:Test18:Test19:Test20:Test21-22使用决策表设计测试用例,可以把条件解释为输入,把行动解释为输出。

基于决策表测试的指导方针

与其他测试方法一样,基于决策表的测试对于某些应用程序(例如NextDate函数)很有效,但是对另一些应用程序(例如佣金问题)就不值得费这么大精力。基于决策表测试适用于要发生大量决策的情况(例如三角形问题),或在输入变量之间存在重要的逻辑关系的情况(例如NextDate函数)。

1.决策表方法适用于以下应用程序

if-then-else逻辑突出。输入变量之间存在逻辑关系。涉及输人变量子集的计算。输入与输出之间存在因果关系。

2.适合于使用决策表设计测试用例的情况有:规格说明以决策表形式给出,或是容易转换成决策表。条件的排列顺序不会也不应影响执行的操作。规则的排列顺序不会也不应影响执行的操作。每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。

3.决策表规模较大,有n个条件的有限条目决策表有2n规则。4.与其他方法一样,迭代会有所帮助。

因果图方法适合于描述对于多种条件的组合,产生多个相应动作的测试方法,能够帮助测试人员按照一定的步骤,高效率地开发测试用例,以检测程序输入条件的各种组合情况。

因果图1.分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类,而结果则是输出条件。2.找出原因与结果之间,原因与原因之间的对应关系,并将其表示成连接各个原因与各个结果的“因果图”。3.把因果图转换成判定表。因果图的基本符号约束符号因果图设计测试用例需要如下步骤分析关联转换输出根据组合间的关联、约束,形成因果图由因果图转换为判定表由判定表导出测试用例分析输入、输出数据之间的关系“判读输入的内容”应用举例软件需求规格

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论