《黑盒测试方法1-等价类划分法.ppt》由会员分享,可在线阅读,更多相关《黑盒测试方法1-等价类划分法.ppt(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、软件测试第3章 黑盒测试方法 等价类划分法目 录测试用例的定义及特征测试用例的定义及特征1等价类划分法的思想等价类划分法的思想2如何划分等价类如何划分等价类3等价类划分原则等价类划分原则4常见等价类划分形式常见等价类划分形式5提出问题:针对三角形问题,你会怎样去做测试?三角形问题三角形问题 输入三个整数输入三个整数a a、b b、c c,分别作为三角形的三条边,分别作为三角形的三条边,现通过程序判断由三条边构成的三角形的类型为等边三角形、现通过程序判断由三条边构成的三角形的类型为等边三角形、等腰三角形、一般三角形(特殊的还有直角三角形),以及等腰三角形、一般三角形(特殊的还有直角三角形),以及
2、构不成三角形。构不成三角形。现在要求输入三个整数现在要求输入三个整数a a、b b、c c,必须满足以下条件:,必须满足以下条件:条件条件1 1a100 1 1a100 条件条件4 4 ab+cab+c 条件条件2 1b100 2 1b100 条件条件5 5 ba+c ba+c 条件条件3 1c100 3 1c100 条件条件6 6 ca+bca+b预备知识:1、测试用例的定义和特征n测试用例的定义:测试用例的定义:(1 1)测测试试用用例例是是为为特特定定的的目目的的而而设设计计的的一一组组测试输入、测试输入、执行条件和预期的结果。执行条件和预期的结果。(2 2)测试用例是执行的最小实体。)
3、测试用例是执行的最小实体。n测试用例的特征:测试用例的特征:(1 1)最有可能抓住错误的;)最有可能抓住错误的;(2 2)不是重复的、多余的;)不是重复的、多余的;(3 3)一组相似测试用例中最有效的;)一组相似测试用例中最有效的;(4 4)既不是太简单,也不是太复杂。)既不是太简单,也不是太复杂。2、设计测试用例的基本准则n测试用例的代表性测试用例的代表性 能够代表并覆盖各种合理的和不合理的、合法能够代表并覆盖各种合理的和不合理的、合法的和非法的、边界的和越界的以及极限的输入数据、的和非法的、边界的和越界的以及极限的输入数据、操作和环境设置等。操作和环境设置等。n测试结果的可判定性测试结果的
4、可判定性 即测试执行结果的正确性是可判定的,每一个即测试执行结果的正确性是可判定的,每一个测试用例都应有相应的期望结果。测试用例都应有相应的期望结果。n测试结果的可再现性测试结果的可再现性 即对同样的测试用例,系统的执行结果应当是即对同样的测试用例,系统的执行结果应当是相同的。相同的。黑盒测试用例设计的几种方法n(一)等价类划分法(一)等价类划分法n(二)边界值分析法(二)边界值分析法n(三)决策表法(三)决策表法n(四)因果图法(四)因果图法n(五)场景法(五)场景法(一)1、等价类划分法的思想1n等价类划分设计方法是把所有可能的输入数据,即程序的输入域划分等价类划分设计方法是把所有可能的输
5、入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少量具有代表性的数成若干部分(子集),然后从每一个子集中选取少量具有代表性的数据作为测试用例。据作为测试用例。等价类划分法的思想2n定义:将程序的输入域划分为若干部分,然后从每定义:将程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据当作测试用例。个部分中选取少数代表性数据当作测试用例。n原因:由于实现穷举测试的不可能性,只有从大量原因:由于实现穷举测试的不可能性,只有从大量的可能数据中选取一部分作为测试用例。的可能数据中选取一部分作为测试用例。n效果:经过类别划分后,每一类的代表性数据在测效果:经过类别划分后,每
6、一类的代表性数据在测试中的作用都等价于这一类中的其他值。试中的作用都等价于这一类中的其他值。n手段:在设计测试用例时,在需求说明的基础上划手段:在设计测试用例时,在需求说明的基础上划分等价类,列出等价表,从而确定测试用例。分等价类,列出等价表,从而确定测试用例。2、等价类的类型n有效等价类有效等价类n对规格说明而言,有意义、合理的输入数据所组成的集合;对规格说明而言,有意义、合理的输入数据所组成的集合;n检验程序是否实现了规格说明预先规定的功能和性能。检验程序是否实现了规格说明预先规定的功能和性能。n无效等价类无效等价类n对规格说明而言,无意义的、不合理的输入数据所组成的集合;对规格说明而言,
7、无意义的、不合理的输入数据所组成的集合;n检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方检查被测对象的功能和性能的实现是否有不符合规格说明要求的地方。n如何划分?如何划分?先从程序的规格说明书中先从程序的规格说明书中找出各个输入条件,再为每个输入条件划找出各个输入条件,再为每个输入条件划分两个或多个等价类,形成若干的互不相分两个或多个等价类,形成若干的互不相交的子集。交的子集。n举例:划分举例:划分 加法器程序的等价类,给出测试用例加法器程序的等价类,给出测试用例.程序功能计算两程序功能计算两个个1 1100100之间整数的和之间整数的和3 3、如何划分等价类、如何划分等价类1
8、1n刚才给出的刚才给出的 测试用例测试用例 都是整数,如果输入的是小数、字符怎么办?都是整数,如果输入的是小数、字符怎么办?n只考虑了输入数据的范围,没有考虑输入数据的类型。只考虑了输入数据的范围,没有考虑输入数据的类型。2 2、如何划分等价类、如何划分等价类2 2考虑输入数据类型和范围n n加数:加数:数值非数值整数小数(4)100(3)字母(5)特殊字符(6)空格(7)空白(8)3、等价类划分步骤n(1 1)先考虑输入数据的类型(合法型和非法型)先考虑输入数据的类型(合法型和非法型)n(2 2)再考虑数据范围(合法型中的合法区间和非法区间)再考虑数据范围(合法型中的合法区间和非法区间)n(
9、3 3)画出示意图,区分等价类)画出示意图,区分等价类n(4 4)为每一个等价类编号。)为每一个等价类编号。n(5 5)考虑输出,进行补充)考虑输出,进行补充4、等价类的划分原则(1 1)按照区间划分按照区间划分在输入条件规定了在输入条件规定了取值范围或值的个数的情况下,可以确定取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。一个有效等价类和两个无效等价类。例:例:例:例:程序输入条件为小于程序输入条件为小于程序输入条件为小于程序输入条件为小于100100100100大于大于大于大于10101010的整数的整数的整数的整数x x x x,则有效等价类为,则有效等价类为,则有
10、效等价类为,则有效等价类为10101010 x x x x100100100100,两个无效等,两个无效等,两个无效等,两个无效等价类为价类为价类为价类为x10 x10 x10 x10和和和和x100 x100 x100 x100。例:例:例:例:程序输入程序输入程序输入程序输入x x x x取值于一个固定的枚举类型取值于一个固定的枚举类型取值于一个固定的枚举类型取值于一个固定的枚举类型1,3,7,151,3,7,151,3,7,151,3,7,15,且程序且程序且程序且程序 中对这中对这中对这中对这4 4 4 4个数值分别进行了处理,则有效等价类个数值分别进行了处理,则有效等价类个数值分别进
11、行了处理,则有效等价类个数值分别进行了处理,则有效等价类为为为为x=1x=1x=1x=1、x=3x=3x=3x=3、x=7x=7x=7x=7、x=15x=15x=15x=15,无效等价类为,无效等价类为,无效等价类为,无效等价类为x1,3,7,15x1,3,7,15x1,3,7,15x1,3,7,15的的的的值的集合。值的集合。值的集合。值的集合。(2 2)按照数值划分)按照数值划分在规定了一组输在规定了一组输入数据(假设包括入数据(假设包括 n n个个 输入值),并且输入值),并且程序要对每一个输入值分别进行处理的情程序要对每一个输入值分别进行处理的情况下,可确定况下,可确定 n n 个有效
12、等价类(每个值个有效等价类(每个值确定一个有效等价类)和一个无效等价类确定一个有效等价类)和一个无效等价类(所有不允许的输入值的集合)。(所有不允许的输入值的集合)。(3 3)按照数值集合划分)按照数值集合划分在输入条件规定了输入值的集合或规定了在输入条件规定了输入值的集合或规定了“必须如何必须如何”的条件下,可以确定一个有效等价类和一个无效等价类的条件下,可以确定一个有效等价类和一个无效等价类(该集合有效值之外)。(该集合有效值之外)。例:例:例:例:程序输入用户口令的长度必须是程序输入用户口令的长度必须是程序输入用户口令的长度必须是程序输入用户口令的长度必须是4 4 4 4位的串,可以确定
13、一个邮箱等位的串,可以确定一个邮箱等位的串,可以确定一个邮箱等位的串,可以确定一个邮箱等价类是串的长度为价类是串的长度为价类是串的长度为价类是串的长度为4 4 4 4,一个无效等价类长度不为,一个无效等价类长度不为,一个无效等价类长度不为,一个无效等价类长度不为4 4 4 4。(4 4)按照限制条件或规则划分)按照限制条件或规则划分在规定了输入数据必须遵守的规在规定了输入数据必须遵守的规则或限制条件的情况下,可确定一个有效等价类(符合规则)和则或限制条件的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。若干个无效等价类(从不同角度违反规则)。例:例:例:例:程
14、序输入条件为取值为奇数的整数程序输入条件为取值为奇数的整数程序输入条件为取值为奇数的整数程序输入条件为取值为奇数的整数x x x x,则有效等价类为,则有效等价类为,则有效等价类为,则有效等价类为x x x x的值为的值为的值为的值为奇数的整数,无效等价类为奇数的整数,无效等价类为奇数的整数,无效等价类为奇数的整数,无效等价类为x x x x的值不为奇数的整数。的值不为奇数的整数。的值不为奇数的整数。的值不为奇数的整数。(5 5)细分等价类)细分等价类在确知已划分的等价类中在确知已划分的等价类中各元素在程序中的处理方式不同的情况下,则各元素在程序中的处理方式不同的情况下,则应再将该等价类进一步
15、划分为更小的等价类,应再将该等价类进一步划分为更小的等价类,并建立等价类表。并建立等价类表。例:程序输入条件为以字符例:程序输入条件为以字符例:程序输入条件为以字符例:程序输入条件为以字符aaaa开头、长度为开头、长度为开头、长度为开头、长度为8 8 8 8的字符串,并且字符串不包含的字符串,并且字符串不包含的字符串,并且字符串不包含的字符串,并且字符串不包含a za za za z之之之之外的其它字符,则有效等价类为满足了上述所外的其它字符,则有效等价类为满足了上述所外的其它字符,则有效等价类为满足了上述所外的其它字符,则有效等价类为满足了上述所有条件的字符串,无效等价类为不以有条件的字符串
16、,无效等价类为不以有条件的字符串,无效等价类为不以有条件的字符串,无效等价类为不以aaaa开开开开头的字符串、长度不为头的字符串、长度不为头的字符串、长度不为头的字符串、长度不为8 8 8 8的字符串和包含了的字符串和包含了的字符串和包含了的字符串和包含了a za za za z之外其它字符的字符串。之外其它字符的字符串。之外其它字符的字符串。之外其它字符的字符串。5、等价类划分法设计测试用例的步骤(1 1)确定等价类)确定等价类(2 2)建立等价类表,列出所有划分出的等价类)建立等价类表,列出所有划分出的等价类 (3 3)从划分出的等价类中按以下的)从划分出的等价类中按以下的3 3个原则设计
17、测个原则设计测试用例:试用例:A A 为每一个等价类规定一个唯一的编号为每一个等价类规定一个唯一的编号 B B 设计一个新的测试用例,使其尽可能多设计一个新的测试用例,使其尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,的覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止。直到所有的有效等价类都被覆盖为止。C C 设计一个新的测试用例,使其仅覆盖一设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。所有的无效等价类都被覆盖为止。6、常见等价类划分测试形式n针对是否对无效数据进
18、行测试,可以将等价类测试分为两种:针对是否对无效数据进行测试,可以将等价类测试分为两种:n标准等价类测试(也称,一般等价类测试)标准等价类测试(也称,一般等价类测试)n健壮等价类测试健壮等价类测试6.1标准(一般)等价类测试n不考虑无效数据值,测试用例使用每个等价类中的一个值;不考虑无效数据值,测试用例使用每个等价类中的一个值;n通常,标准等价类测试用例的数量和最大等价类中元素的数目相等通常,标准等价类测试用例的数量和最大等价类中元素的数目相等。6.2 健壮等价类测试n出发点考虑了无效等价类;出发点考虑了无效等价类;n对有效输入,测试用例从每个有效等价类中取一个值;对无效输对有效输入,测试用例
19、从每个有效等价类中取一个值;对无效输入,一个测试用例有一个无效值,其他值均取有效值;入,一个测试用例有一个无效值,其他值均取有效值;n存在问题:存在问题:n规格说明往往没有定义无效测试用例的期望输出,因此需要定义这规格说明往往没有定义无效测试用例的期望输出,因此需要定义这些测试用例的期望输出;些测试用例的期望输出;n对强类型语言没有必要考虑无效的输入。对强类型语言没有必要考虑无效的输入。举例:几种等价类划分法测试形式n常见的等价类划分测试形式常见的等价类划分测试形式n问题问题:某函数某函数F F有两个变量有两个变量x1,x2x1,x2.要要求两输入变量的取值范围如下求两输入变量的取值范围如下:
20、na x1d,a x1d,区间为区间为a,b,(b,c),c,da,b,(b,c),c,dne x2 g,e x2 g,区间为区间为e,f),f,ge,f),f,gnx1,x2x1,x2的无效区间为的无效区间为:nx1dx1d;x2gx2gn(1)(1)弱一般等价类测试弱一般等价类测试n特点特点:不考虑无效数据不考虑无效数据,测试用例使用每个等价类中的一个值测试用例使用每个等价类中的一个值abcdefgx2x1n(2)(2)强一般等价类测试强一般等价类测试n特点特点:每一个有效等价类要选择至少一个测试用例每一个有效等价类要选择至少一个测试用例abcdefgx2x1n(3)(3)弱健壮等价类测试
21、弱健壮等价类测试n对于有效输入对于有效输入:使用每个有效类的一个值使用每个有效类的一个值n对于无效输入对于无效输入:测试用例只使用一个无效值测试用例只使用一个无效值,其余值都是有效的其余值都是有效的abcdefgx2x1n(4)(4)强健壮等价类测试强健壮等价类测试n每个有效等价类和无效等价类都至少要选择一个测试用例每个有效等价类和无效等价类都至少要选择一个测试用例abcdefgx2x1案例1:1 1、某城市电话号码由三部分组成,分别是:、某城市电话号码由三部分组成,分别是:地区码地区码 空白或三位数字;空白或三位数字;前前 缀缀 非非00或非或非11开头的三位数字;开头的三位数字;后后 缀缀
22、 4 4位数字。位数字。假定被测程序能接受一切符合上述规定的电话号码,假定被测程序能接受一切符合上述规定的电话号码,拒绝所拒绝所有不符合规定的电话号码。有不符合规定的电话号码。多于多于3 3位数字位数字少于少于3 3位数字位数字有非数字字符有非数字字符 空白空白3 3位数字位数字地区码地区码编号编号无效等价类无效等价类编号编号有效等价类有效等价类输入条件输入条件341 12 25 56 67 789101112131415(1)划分等价类、列出等价类表n保险公司计算保费费率的程序保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为:某保险公司的人寿保险的保费计算方式为:投保额投保额
23、保险费率保险费率 其中,保险费率依点数不同而有别,其中,保险费率依点数不同而有别,1010点及点及1010点以上保点以上保险费率为险费率为0.6%0.6%,1010点以下保险费率为点以下保险费率为0.1%0.1%;而点数又是由;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:规则如下:案例2:计算保费费率的程序(1 1)分析程序规格说明中给出和隐含的对输入条件的要求,)分析程序规格说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。列出等价类表(包括有效等价类和无效等价类)。n年龄:一位或两
24、位非零整数,值的有效范围为年龄:一位或两位非零整数,值的有效范围为199199n性别:一位英文字符,只能取值性别:一位英文字符,只能取值MM或或FFn婚姻:字符,只能取值婚姻:字符,只能取值已婚已婚或或未婚未婚n抚养人数:空白或一位非零整数(抚养人数:空白或一位非零整数(1919)n点数点数 :一位或两位非零整数,值的范围为:一位或两位非零整数,值的范围为199199(2 2)根据()根据(1 1)中的等价类表,设计能覆盖所有等价类的)中的等价类表,设计能覆盖所有等价类的 测试用例。测试用例。等价类表等价类表测试用例测试用例练习1n现有一个小程序,能够求出三个在现有一个小程序,能够求出三个在-
25、10000-10000到到+10000+10000间整数中的最间整数中的最大者,程序界面如下大者,程序界面如下:练习2:设计出三角形问题的测试用例n输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程序进行测试用例设计。序进行测试用例设计。n练习练习3 3:NextDateNextDate函数函数nNextDateNextDate函数有三个变量函数有三个变量month,day,yearmonth,day,
26、year的函数,输出为输的函数,输出为输入日期下一天的日期。如:输入为入日期下一天的日期。如:输入为20072007年年7 7月月1919日,输出为日,输出为20072007年年7 7月月2020日。要求三个变量都为整数,且日。要求三个变量都为整数,且满足:满足:n条件:条件:1 month 121 month 12n条件条件2 2:1 day 311 day 31n条件条件3 3:1912 year 20501912 year 2050(1)划分等价类1Year Month DayYear Month Day的有效值区间定义如下:的有效值区间定义如下:nM1=month:1month 12M
27、1=month:1month 12nD1=day:1 day 31D1=day:1 day 31nY1=year:1912 year 2050Y1=year:1912 year 2050(1)划分等价类2n n无效等价类是:无效等价类是:无效等价类是:无效等价类是:nM2=month:month1M2=month:month12M2=month:month12nD2=day:day1D2=day:day31D3=day:day31nY2=year:year1912Y2=year:year2050Y3=year:year2050NextDate函数的强健壮等价类测试用例(部分)续:详细的等价类划
28、分n考虑对考虑对输入日期输入日期输入日期输入日期的处理:的处理:nM1=month:month有有30天天nM2=month:month有有31天天nM3=month:month是是2月月nD1=day:1 day 28nD2=day:day=29nD3=day:day=30nD4=day:day=31nY1=year:year=2000nY2=year:year是闰年是闰年nY3=year:year是平年是平年NextDate函数的弱健壮等价类测试用例弱一般等价类测试用例强一般等价类测试用例总结:等价类测试的指导方针n(1)(1)如果实现的语言是强类型语言如果实现的语言是强类型语言(无效值输
29、入会引起系统运行时出错无效值输入会引起系统运行时出错),),则没有必要使用健壮等价类测试则没有必要使用健壮等价类测试.n(2)(2)如果错误输入检查非常重要如果错误输入检查非常重要,则应进行健壮等价类测试则应进行健壮等价类测试.n(3)(3)如果输入数据以离散区间或集合的形式定义如果输入数据以离散区间或集合的形式定义,则等价类测试是合适的则等价类测试是合适的,当然也适用于变量值越界会造成故障的系统当然也适用于变量值越界会造成故障的系统.n(4)(4)在发现合适的等价关系之前在发现合适的等价关系之前,可能需要多次尝试可能需要多次尝试.作业输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、输入三个整数作为三边的边长构成三角形。当此三角形为一般三角形、等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程等腰三角形、等边三角形时,分别作计算。用等价类划分方法为该程序进行测试用例设计。序进行测试用例设计。