软件测试技术ap.ppt

上传人:本田雅阁 文档编号:2641224 上传时间:2019-04-28 格式:PPT 页数:83 大小:3.86MB
返回 下载 相关 举报
软件测试技术ap.ppt_第1页
第1页 / 共83页
软件测试技术ap.ppt_第2页
第2页 / 共83页
软件测试技术ap.ppt_第3页
第3页 / 共83页
亲,该文档总共83页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《软件测试技术ap.ppt》由会员分享,可在线阅读,更多相关《软件测试技术ap.ppt(83页珍藏版)》请在三一文库上搜索。

1、第3章 黑盒测试方法,主要内容,3.1 黑盒测试法概述,又称为功能测试或数据驱动测试,把程序看成一个黑盒子,完全不考虑程序的内部结构和处理程序,只是在程序的接口进行测试,以检查程序功能是否正常,程序是否能适当接收输入数据产生正确的输出数据。 检查程序功能是否按照需求规格说明书的规定正常使用,测试每个功能是否有遗漏,检测性能等特性要求是否满足要求。 检测模块接口是否存在问题。 检测程序初始化和终止方面的错误。,黑盒测试,黑盒测试是依据软件的需求规约,检查程序的功能是否符合需求规约的要求。 主要的黑盒测试方法有: 等价类划分 边界值分析 比较测试 错误猜测 因果图,边界值分析,边界值分析是一种黑盒

2、测试方法,是对等价类划分方法的补充。 人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,其揭露程序中错误的可能性就更大。,这里所说的边界是指,相对于输入等价类和输出等价类而言,直接在其边界上、或稍高于其边界值、或稍低于其边界值的一些特定情况。 使用等价类分析方法设计测试用例时,原则上,等价类中的任一输入数据都可作为该等价类的代表用作测试用例。而边值分析则是专门挑选那些位于边界附近的值(即正好等于、或刚刚大于、或刚刚小于边界的值)作为测试用例。,3.2 边界值测试,任何程序都可以看成是一个函数 程序的输入构成函数的定

3、义域 程序的输出构成函数的值域 基本原理 错误更可能出现在输入变量的极值附近 例如:程序把=误写成了 基本思想是测试时输入变量取 最小值(min) 略高于最小值(min+) 正常值(nom) 略低于最大值(max-) 最大值(max),边界值分析方法选择测试用例的规则如下: 1如果输入条件规定了值的范围,则选择刚刚达到这个范围的边界的值以及刚刚超出这个范围的边界的值作为测试输入数据。 例如,规定输入的考试成绩在0100之间,则取0,100,1,101作为测试输入数据。 2如果输入条件规定了值的个数,则分别选择最大个数、最小个数、比最大个数多1、比最小个数少1的数据作为测试输入数据。 例如,规定

4、一个运动员的参赛项目至少1项,最多3项,那么,可选择参赛项目分别是1项、3项、0项、4项的测试输入数据。,3对每个输出条件使用第1条。 例如,输出的金额值大于等于0且小于104 ,则选择使得输出金额分别为0、9999、1、10000的输入数据作为测试数据。 4对每个输出条件使用第2条。 例如,规定输出的一张发票上,至少有1行内容,至多有5行内容,则选择使得输出发票分别有1行、5行、0行、6行内容的输入数据作为测试数据。 5如果程序的输入或输出是个有序集合,例如,顺序文件、表格,则应把注意力集中在有序集的第1个元素和最后一个元素上。,6如果程序中定义的内部数据结构有预定义的边界,例如,数组的上界

5、和下界、栈的大小,则应选择使得正好达到该数据结构边界以及刚好超出该数据结构边界的输入数据作为测试数据。 例如,程序中数组A的下界是10,上界是20,则可选择使得A的下标为10、20、9、21的输入数据作为测试数据。 7发挥你的智慧,找出其他可能的边界条件。,由于边值分析方法所设计的测试用例更有可能发现程序中的错误,因此经常把边值分析方法与其它设计测试用例方法结合起来使用。,边界值分析设计测试用例的获得 通过使所有变量取正常值,只使一个变量按边界值基本思想循环取值。 例如:两变量函数的边界值分析测试用例为: (X1nom,X2min) (X1nom,X2min+) (X1nom,X2nom) (

6、X1nom,X2max-) (X1nom,X2max) (X1min,X2nom) (X1min+,X2nom) (X1max-,X2nom) (X1max,X2nom) 对于一个n变量函数,测试用例数为4n+1个,健壮性测试 是边界值分析的一种简单扩展,用于观察例外处理情况 基本思想是测试时输入变量取 最小值(min) 略高于最小值(min+) 正常值(nom) 略低于最大值(max-) 最大值(max) 略超过最大值(max+) 略低于最小值(min-),最坏情况测试 考虑多个变量取极值的情况 最坏情况测试用例的获得 所有变量均可取最小值(min)、略高于最小值(min+)、正常值(nom

7、)、略低于最大值(max-)、最大值(max) 这五个元素中的任何一个。 测试用例为五个集合的笛卡儿乘积 N变量的最坏情况测试会产生5n个测试用例 健壮最坏情况测试 N变量的健壮最坏情况测试会产生7n个测试用例,案例分析-三角形问题,案例一:三角形问题 三角形问题接受三个整数a、b、c作为输入,代表三角形的三条边。a,b,c必须满足以下条件: C1.1=a=200 C2.1=b=200 C3.1=c=200 C4.ab+c C5.ba+c C6.ca+b 程序的输出是由这三条边确定的三角形类型 等边三角形 等腰三角形 不等边三角形 非三角形,三角形问题的测试用例-边界值分析,三角形问题的最坏情

8、况测试用例,三个变量:a,b,c 产生53=125个测试用例 存在大量冗余,案例分析- NextDate函数,NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。 变量月份、日期和年都为整数,且满足以下条件: C1.1=月份=12 C2.1=日期=31 C3.1912=年=2050 测试用例设计,比较测试(back to back),在现实中,有些软件有很高的可靠性要求,特别是那些可能危及人的生命安全的软件系统,如航空航天控制软件、核电厂控制软件等,其软件可靠性绝对重要。此时,需要冗余的硬件和软件来减少错误发生的可能性。 通常,可由二支软件开发队伍,根据相

9、同的需求规格说明分别开发二个软件版本,然后,用相同的测试用例对二个版本的软件分别进行测试,比较二个版本软件的测试结果,如果测试结果相同,则可认为二个版本的软件都是正确的,如果测试结果不同,则要分析各个版本,以发现错误的所在。这种测试称为比较测试或称为背靠背测试(backtoback testing)。大多数情况下,可用自动化工具来进行比较测试。,值得注意的是,比较测试并不能保证软件没有错误,如果规格说明本身有错,那么所有的版本都可能反映这种错误。 另外,如果各个版本产生相同的但都不正确的结果,那么比较测试也无法发现这种错误。,等价类划分,由于不能穷举所有可能的输入数据来进行测试,所以只能选择少

10、量有代表性的输入数据,来揭露尽可能多的程序错误 等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例 等价类是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。也就是说,如果该子集中的某个输入数据能检测出某个错误,那么该子集中的其他输入数据也能检测出同样的错误;反之,如果该子集中的某个输入数据不能检测出错误,那么该子集中的其他输入数据也不能检测出错误。,3.3 等价类测试,动机 希望进行完备的测试 希望避免冗余 等价类的划分 根据等价关系对输入或输出数据的集合进行划分

11、将集合划分为互不相交的子集(无冗余性) 这些子集的并是整个集合(完备性) 测试思想 通过每个等价类中的一个元素标识测试用例 例如,在三角形问题中,测试用例(5,5,5)、(6,6,6)、(100,100,100)都可以测试等边三角形,但可以认为在程序中这三个测试用例具有“相同的处理”,因此这些用例是冗余的。,等价类,等价类划分方法把输入数据分为有效输入数据和无效输入数据 有效输入数据指符合规格说明要求的合理的输入数据,主要用来检验程序是否实现了规格说明中的功能 无效输入数据指不符合规格说明要求的不合理或非法的输入数据,主要用来检验程序是否做了规格说明以外的事 在确定输入数据等价类时,常常还要分

12、析输出数据的等价类,以便根据输出数据等价类导出输入数据等价类。,等价类划分设计测试用例的步骤,确定等价类 根据软件的规格说明,对每一个输入条件(通常是规格说明中的一句话或一个短语)确定若干个有效等价类和若干个无效等价类。 可使用如下表格,确定等价类的规则: (1) 如果输入条件规定了取值范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值及大于最大值) 例如,规定输入的考试成绩在0100之间,则有效等价类是“0 成绩 100”,无效等价类是“成绩 0”和“成绩 100”,(2) 如果输入条件规定了值的个数,则可以确定一个有效等价类(输入值的个数等于规定的个数)和

13、两个无效等价类(输入值的个数小于规定的个数和大于规定的个数) 例如,规定输入构成三角形的3条边,则有效等价类是“输入边数 = 3”,无效等价类是“输入边数 3”和“输入边数 3”。,(3) 如果输入条件规定了输入值的集合(即离散值),而且程序对不同的输入值做不同的处理,那么每个允许的值都确定为一个有效等价类,另外还有一个无效等价类(任意一个不允许的值) 例如,规定输入的考试成绩为优、良、中、及格、不及格,则可确定5个有效等价类和一个无效等价类。,(4) 如果输入条件规定了输入值必须遵循的规则,那么可确定一个有效等价类(符合此规则)和若干个无效等价类(从各个不同的角度违反此规则)。 例如,在Pa

14、scal语言中对变量标识符规定为“以字母开头的串”。那么有效等价类是“以字母开头的串”,而无效等价类有“以数字开头的串”、“以标点符号开头的串”等。,(5) 如果输入条件规定输入数据是整型,那么可以确定三个有效等价类(正整数、零、负整数)和一个无效等价类(非整数)。 (6) 如果输入条件规定处理的对象是表格,那么可以确定一个有效等价类(表有一项或多项)和一个无效等价类(空表)。 以上只是列举了一些规则,实际情况往往是千变万化的,在遇到具体问题时,可参照上述规则的思想来划分等价类。,设计测试用例 在确定了等价类之后,建立等价类表,列出所有划分出的等价类。并为每个有效等价类和无效等价类编号。,弱一

15、般等价类测试 考虑单缺陷假设 测试用例使用每个等价类中的一个值 设两变量x1和x2函数有以下边界和等价区间: a=x1=d,区间为:a,b),b,c),c,d e=x2=g,区间为:e,f),f,g),强一般等价类测试 考虑多缺陷假设 测试用例集合为等价类笛卡儿积 设两变量x1和x2函数有以下边界和等价区间: a=x1=d,区间为:a,b),b,c),c,d e=x2=g,区间为:e,f),f,g),弱健壮等价类测试 考虑单缺陷假设、无效值 用例标识 对于有效输入,使用每个有效类的一个值 对于无效输入,使用一个无效值,并保持其余的值都有效的,强健壮等价类测试 考虑多缺陷假设、无效值 用例标识

16、从所有等价类(包括若干无效等价类)笛卡儿乘积中选取,案例分析-三角形问题的等价类测试用例,使用输出确定等价类 R1=等边三角形 R2=等腰三角形 R3=不等边三角形 R4=不构成三角形 弱一般等价类测试用例(强一般等价类),弱健壮等价类测试用例(考虑a,b,c的无效值),强健壮等价类测试用例(以下为额外测试用例三维立方的一个角),使用输入确定等价类 D1=a=b=c D2=a=b,a!=c D3=a=c,a!=b D4=b=c,b!=a D5=a!=b,a!=c,b!=c D6=a=b+c D7=b=a+c D8=c=a+b 同学们可自己设计等价类测试用例,案例分析-NextDate函数的等价

17、类测试用例,确定等价类(方法一) M1=月份:112 D2=日期:日期31 Y2=年:年2012,弱一般等价类测试 三个独立变量的有效等价类都只有一个,因此弱一般等价类测试与强一般等价类测试相同,弱健壮等价类测试,强健壮等价类测试 以下是强健壮等价类测试用例三维立方的一个角,案例分析-NextDate函数的等价类测试用例,确定等价类(方法二) M1=月份:每月有30天 M2=月份:每月有31天 M3=月份:此月是2月 D1=日期:1=日期=28 D2=日期:日期=29 D3=日期:日期=30 D4=日期:日期=31 Y1=年:年是闰年 Y2=年:年是平年,等价类测试用例 弱一般等价类测试用例应

18、该有4个 强一般等价类测试用例应该有 3个(月份类)x 4个(日期类)x 2(年类)= 24个 强健壮等价类测试用例 对每个变量加上2个无效类 测试用例数为:5 x 6 x 4 = 120个 请同学自己思考各测试用例。 弱一般等价类测试:测试用例使用每个等价类中的一个值 强一般等价类测试:测试用例集合为等价类笛卡儿积,3.4 基于决策表的测试,定义 也称判定表,是分析和表达多逻辑条件下执行不同操作的情况的工具 决策表的用途 能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏,设计出完整的测试用例集合。,决策表举例,读书指南决策表,决策表的组成,条件桩:列出了问题得所有条件。通常认为

19、列出的条件的次序无关紧要。 动作桩:列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。 条件项:列出针对它左列条件的取值。在所有可能情况下的真假值。 动作项:列出在条件项的各种取值情况下应该采取的动作。 规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。,规则合并(化简),将具有相同动作,并且其条件项之间存在着极为相似关系的两条或多条规则合并为一条规则,决策表的建立步骤,实战演习,问题要求:”对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立决策表。,决策表的

20、类型,有限条目决策表 所有条件都是二叉条件(真/假),决策表,扩展条目决策表 条件可以有多个值,案例分析-三角形问题,案例分析-NextDate函数(方法一),NextDate是一个有三个变量(月份、日期和年)的函数。函数返回输入日期后面的那个日期。 变量月份、日期和年都为整数,且满足以下条件: C1.1=月份=12 C2.1=日期=31 C3.1912=年=2050,为什么?,等价类 M1=月份:每月有30天 M2=月份:每月有31天 M3=月份:此月是2月 D1=日期:1=日期=28 D2=日期:日期=29 D3=日期:日期=30 D4=日期:日期=31 Y1=年:年是闰年 Y2=年:年是

21、平年,办法会有的,条件桩 C1:月份在M1中 C2:月份在M2中 C3:月份在M3中 C4:日期在D1中 C5:日期在D2中 C6:日期在D3中 C7:日期在D4中 C8:年是闰年 C9:年是平年,29=512 太大!,规则数?,等价类 M1=月份:每月有30天 M2=月份:每月有31天 M3=月份:此月是2月 D1=日期:1=日期=28 D2=日期:日期=29 D3=日期:日期=30 D4=日期:日期=31 Y1=年:年是闰年 Y2=年:年是平年,条件桩 C1:月份在M1,M2,M3中之一 C2:日期在D1,D2,D3,D4中之一 C3:年在Y1,Y2中之一,新办法,有多少条规则 ?,条件桩

22、 C1:月份在M1,M2,M3中之一 C2:日期在D1,D2,D3,D4中之一 C3:年在Y1,Y2中之一,案例分析-NextDate函数的测试用例,确定行动桩,A1:不可能 A2:日期增1 A3:日期复位(置1) A4:月份增1 A5:月份复位(置1) A6:年增1,NextDate函数的扩展条目决策表,注意规则8,10,案例分析-NextDate函数(方法二),利用等价类 M1=月份:每月有30天 M2=月份:每月有31天,12月除外 M3=月份:此月是12月 M4=月份:此月是2月 D1=日期:1=日期=27 D2=日期:日期=28 D3=日期:日期=29 D4=日期:日期=30 D5=

23、日期:日期=31 Y1=年:年是闰年 Y2=年:年是平年,条件 C1:月份在M1,M2,M3,m4中之一 C2:日期在D1,D2,D3,D4 ,D5中之一 C3:年在Y1,Y2中之一,问题:可得到 ?条规则,新的NextDate函数的扩展条目决策表:,新的NextDate函数的扩展条目决策表续: (结合不关心条目,可得到有22条规则的决策表),同步练习,请写出NextDate函数的前9个测试用例:,案例分析- NextDate函数的测试用例,3.5 错误推测法,依靠经验和直觉猜测程序中可能存在的各种错误,从而有针对性地编写检查这些故障的测试用例。,功能性测试方法总结,精细程度,方法评价,工作量

24、,精细程度,设计测试用例的工作量,精细程度,边界值,等价类,决策表,低,高,各种测试方法的测试用例设计工作量,工作量,总结,边界值分析 基于定义域,不识别数据或逻辑关系 很容易自动化实现 设计工作量小 生成的测试用例数比较多 测试用例执行时间长 等价类技术 考虑数据依赖关系 标识等价类时需要更多的判断和技巧 等价类标识出以后的处理也是机械的 设计工作量和测试用例数属中等 决策表技术 又要考虑数据的逻辑依赖关系 所得测试用例可以是完备的 测试数量在一定意义上讲是最少的 需要通过多次迭代 设计工作量很大,综合案例,保险金计算程序 保险金=500 x 年龄系数 安全驾驶折扣 安全驾驶折扣是投保人驾驶

25、执照上当前点数的函数 年龄系数是投保人年龄的函数 若点数低于等于与年龄有关的点数门限,则给予安全驾驶折扣 程序输入:年龄,点数 驾驶人年龄范围为16-100岁 点数范围为0-12 输出:保险金,年龄系数和安全驾驶折扣计算表,输入变量年龄和点数的边界值条件1,输入变量年龄和点数的边界值条件2,点数边界值共有13个,年龄边界值共有21个 笛卡儿乘积(最坏情况边界值测试用例)共有273个元素,存在严重冗余,等价类划分方法,年龄等价类集合 A1=16=年龄25 A2=25=年龄35 A3=35=年龄45 A4=45=年龄60 A5=60=年龄=100 点数等价类集合 P1=点数=0,1 P2=点数=2,3 P3=点数=4,5 P4=点数=6,7 P5=点数=8,9,10,11,12,保险金程序的强等价类测试用例,等价类测试明显可以缓解冗余,但仍然有改进的余地,决策表方法,保险金程序的决策表测试用例,该方案也存在一些问题 没有考虑边界的问题 没有考虑16岁以下和100岁以上的年龄 没有考虑点数大于12的情况 可将三种方法结合起来考虑以得到更好的测试方案,

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1