1、2.3 等价类分析等价类分析 等价类划分是一种典型的黑盒测试方法。这一方法完全不考等价类划分是一种典型的黑盒测试方法。这一方法完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。虑程序的内部结构,只依据程序的规格说明来设计测试用例。等价类定义:等价类是指某个输入域的子集合,在该子集合等价类定义:等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是中,各个输入数据对于揭露程序中的错误都是等效等效的。的。例:计算平方根的函数的规范例:计算平方根的函数的规范 输入:实数;输出:实数输入:实数;输出:实数 规范:当输入一个规范:当输入一个0 0或比或比0 0大的数
2、的时候,返回其正平大的数的时候,返回其正平方根;当输入一个小于方根;当输入一个小于0 0的数时,显示错误信息的数时,显示错误信息“平方根平方根非法非法-输入值小于输入值小于0”0”并返回并返回0 0;测试用例的选择:测试用例的选择:n0n0,n=0n=0,n0n02.3 等价类分析等价类分析 等价类合理地假设:某个等价类的代表值,与该等价类的其等价类合理地假设:某个等价类的代表值,与该等价类的其他值,对于测试来说是等价的。他值,对于测试来说是等价的。因此,可以把全部的输入数据划分成若干的等价类,在每一因此,可以把全部的输入数据划分成若干的等价类,在每一个等价类中取一个数据来进行测试。个等价类中
3、取一个数据来进行测试。这样就能以较少的具有代表性的数据进行测试,而取得较好这样就能以较少的具有代表性的数据进行测试,而取得较好的测试效果。的测试效果。2.3 等价类分析等价类分析 等价类的划分有两种不同的情况:等价类的划分有两种不同的情况:有效等价类有效等价类:是指对于程序的规格说明来说,是合理的,有:是指对于程序的规格说明来说,是合理的,有意义的输入数据所构成的集合;利用它可以检验程序是否实意义的输入数据所构成的集合;利用它可以检验程序是否实现了预期的功能和性能;现了预期的功能和性能;无效等价类无效等价类:是指对于程序的规格说明来说,是不合理的,:是指对于程序的规格说明来说,是不合理的,没有
4、意义的输入数据所构成的集合;利用它可以检验程序对没有意义的输入数据所构成的集合;利用它可以检验程序对于无效数据的处理。于无效数据的处理。2.3 等价类分析等价类分析 例:有两个变量例:有两个变量x x1 1和和x x2 2的函数的函数F F。如果函数。如果函数F F实现为一个程序,实现为一个程序,则输入两个变量则输入两个变量x x1 1和和x x2 2会有一些会有一些(可能未规定可能未规定)边界:边界:a xa x1 1 d d 区间为区间为aa,b)b),bb,c)c),cc,d d e x e x2 2 g g 区间为区间为ee,f)f),ff,ggabegcdf2.3 等价类分析等价类分
5、析弱一般等价类测试弱一般等价类测试(WN)(WN):弱一般等价类测试是基于单缺陷假设的;弱一般等价类测试是基于单缺陷假设的;弱一般等价类测试通过使用一个测试用例中的每个等价类弱一般等价类测试通过使用一个测试用例中的每个等价类(区间区间)的一个变量实现。的一个变量实现。abegcdf2.3 等价类分析等价类分析强一般等价类测试强一般等价类测试(SN)(SN):强一般等价类测试是基于多缺陷假设的;强一般等价类测试是基于多缺陷假设的;等价类笛卡儿积的每个元素对应的测试用例;等价类笛卡儿积的每个元素对应的测试用例;abegcdf2.3 等价类分析等价类分析弱健壮等价类测试弱健壮等价类测试(WR):对于
6、有效输入,使用每个有效类的一个值对于有效输入,使用每个有效类的一个值(就像我们在所谓就像我们在所谓弱一般等价类测试中所做的一样。弱一般等价类测试中所做的一样。)对于无效输入,测试用例将拥有一个无效值,并保持其余对于无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的。的值都是有效的。abegcdf2.3 等价类分析等价类分析强健壮等价类测试强健壮等价类测试(SR):所有等价类笛卡儿积的每个元素中获得测试用例。所有等价类笛卡儿积的每个元素中获得测试用例。abegcdf2.3 等价类分析等价类分析例:三角形问题例:三角形问题第一步第一步 划分等价类划分等价类R1R1=ac:有三条边:有三条
7、边a a、b b和和c c的等边三角形的等边三角形 R2R2=ac:有三条边:有三条边a a、b b和和c c的等腰三角形的等腰三角形 R3R3=ac:有三条边:有三条边a a、b b和和c c的不等边三角形的不等边三角形 R4R4=ac:三条边:三条边a a、b b和和c c不构成三角形不构成三角形 第二步第二步 选取测试用例选取测试用例测试用例abc预期输出WN1555等边三角形WN2223等腰三角形WN3345三角形WN4412非三角形2.3 等价类分析等价类分析三角形问题的弱健壮等价类测试用例三角形问题的弱健壮等价类测试用例测试用例abc预期输出WR1-155a取值不在允许的范围内WR
8、25-15b取值不在允许的范围内WR355-1c取值不在允许的范围内WR420155a取值不在允许的范围内WR552015b取值不在允许的范围内WR655201c取值不在允许的范围内2.3 等价类分析等价类分析三角形问题的强健壮等价类测试用例三角形问题的强健壮等价类测试用例测试用例abc预期输出SR1-1-15a、b取值不在允许的范围内SR25-1-1b、c取值不在允许的范围内SR3-15-1a、c取值不在允许的范围内SR4-1-1-1a、b、c取值不在允许的范围内2.3 等价类分析等价类分析例例 NextDateNextDate函数的等价类测试用例函数的等价类测试用例第一步第一步 确定等价类
9、确定等价类无效等价类:无效等价类:M2 M2=月份:月份月份:月份11212D2 D2=日期:日期日期:日期13131Y2 Y2=年:年年:年181220122012有效等价类:有效等价类:M1=M1=月份:月份:11月份月份12 12 D1=D1=日期:日期:11日期日期3131Y1=Y1=年:年:18121812年年2012 2012 2.3 等价类分析等价类分析NextDateNextDate函数的弱一般等价类测试用例函数的弱一般等价类测试用例用例ID月份日期年预期输出WN1,SN161519126/16/19122.3 等价类分析等价类分析NextDateNextDate函数的弱健壮等
10、价类测试用例函数的弱健壮等价类测试用例用例ID月份日期年预期输出WR161519126/16/1912WR2-1151912无效输入WR313151912无效输入WR46-11912无效输入WR56321912无效输入WR66151811无效输入WR76152013无效输入2.3 等价类分析等价类分析NextDateNextDate函数的强健壮等价类测试用例函数的强健壮等价类测试用例用例ID月份日期年预期输出SR1-1151912无效输入SR26-11912无效输入SR36151811无效输入SR4-1-11912无效输入SR56-11811无效输入SR6-1151811无效输入SR7-1-1
11、1811无效输入2.3 等价类分析等价类分析例例 佣金问题测试用例佣金问题测试用例 -输入域的等价类测试输入域的等价类测试 -输出域的等价类测试输出域的等价类测试2.3 等价类分析等价类分析输入域的等价类划分输入域的等价类划分输入变量有效类:输入变量有效类:L1=L1=枪机:枪机:11枪机枪机7070L2=L2=枪机:枪机枪机:枪机 =-1=-1S1=S1=枪托:枪托:11枪托枪托8080B1=B1=枪管:枪管:11枪管枪管9090输入变量无效类输入变量无效类L3=L3=枪机:枪机枪机:枪机=0=0或枪机或枪机-17070S2=S2=枪托:枪托枪托:枪托18080B2=B2=枪管:枪管枪管:枪
12、管190 90 2.3 等价类分析等价类分析佣金问题的强健壮测试用例佣金问题的强健壮测试用例用例ID枪机枪托枪管预期输出SR1-14045无效输入SR235-145无效输入SR33540-1无效输入SR4-1-145无效输入SR5-140-1无效输入SR63515-1无效输入SR7-1-1-1无效输入2.3 等价类分析等价类分析输出域的等价类划分输出域的等价类划分S1S1=:销售额:销售额10001000S2S2=:10001000销售额销售额18001800S3S3=:销售额:销售额18001800注:销售额注:销售额 =45 45 枪机枪机 +30+30 枪托枪托 +25+25 枪管枪管
13、2.3 等价类分析等价类分析佣金问题的输出域等价类测试用例佣金问题的输出域等价类测试用例用例ID枪机枪托枪管销售额佣金OR155550050OR21515151500175OR325252525003602.3 等价类分析等价类分析划分等价类的原则:划分等价类的原则:如果输入条件规定了取值范围,或者值的个数,则可以确如果输入条件规定了取值范围,或者值的个数,则可以确定一个有效等价类和两个无效等价类;定一个有效等价类和两个无效等价类;如果输入条件规定了输入值的集合,或者是规定了如果输入条件规定了输入值的集合,或者是规定了“必须必须如何如何”的条件,这时可以确立一个有效等价类和一个无效等的条件,这
14、时可以确立一个有效等价类和一个无效等价类;价类;如果输入条件是一个布尔量,则可以确立一个有效等价类如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类;和一个无效等价类;如果规定了输入数据的一组值,而且程序要对每一个输入值如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个等价分别进行处理,这时要对每一个规定的输入值确立一个等价类,而对于这组值之外的所有值确立一个等价类;类,而对于这组值之外的所有值确立一个等价类;2.3 等价类分析等价类分析划分等价类的原则:划分等价类的原则:如果规定了输入数据必须遵守的规则,则可以确立一个有效如果
15、规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据);度违反规则的数据);如果确知以划分的等价类中的各元素在程序中的处理方式不如果确知以划分的等价类中的各元素在程序中的处理方式不同,则应进一步划分成更小的等价类同,则应进一步划分成更小的等价类2.3 等价类分析等价类分析利用等价类选取测试用例:利用等价类选取测试用例:为每一个等价类规定一个唯一的编号;为每一个等价类规定一个唯一的编号;设计一个新的测试用例,使其尽可能多的覆盖尚未覆盖的有设计一个新的测试用例,使其尽可能多的覆盖尚未
16、覆盖的有效等价类;重复这一步骤,知道所有的有效等价类都被覆盖效等价类;重复这一步骤,知道所有的有效等价类都被覆盖为止;为止;设计一个新的测试用例,使其仅覆盖一个无效等价类,重复设计一个新的测试用例,使其仅覆盖一个无效等价类,重复这一步骤,直到所有的无效等价类都被覆盖为止。这一步骤,直到所有的无效等价类都被覆盖为止。2.3 等价类法举例等价类法举例保险费率计算保险费率计算 人人 人人 保保 险险 公公 司司 承承 担担 人人 寿寿 保保 险险 已已 有有 多多 年年 历历 史史 ,该该 公公 司司 保保 费费 计计 算算 方方 式式 为为 投投 保保 额额 保保 险险 率率 ,保保 险险 率率
17、又又 依依 点点 数数 不不 同同 而而 有有 别别 ,10 10 点点 以以 上上 费费 率率 为为 0.6%0.6%,10 10 点点 以以 下下 费费 率率 为为 0.1%0.1%:等价类法举例2039岁6点4059岁4点年龄年龄60岁以上20岁以下2点MALE5点性别性别FEMALE3点已婚3点婚姻婚姻未婚5点扶养人扶养人数数一 人 扣 0.5 点 最 多 扣 3 点(四 舍 五 入 取 整 数)输入数据说明:输入数据说明:等价类法举例一、分一、分 析析 输输 入入 数数 据据 型型 式式 。年龄年龄 :一或两位数字:一或两位数字 。性别性别 :以英文:以英文MaleMale、Fema
18、le Female 表示表示 。婚姻婚姻 :已婚、未婚。:已婚、未婚。扶养人数扶养人数 :空白或一位数字:空白或一位数字 。保险费率保险费率 :1010点以上,点以上,1010点以下点以下 。数字范围1992039岁4059岁1.年龄等价类60岁以上20岁以下类型英文字之集合类型:英文字集合:Male、M2.性别等价类集合:Female、F等价类法举例二、二、划分输入数据:划分输入数据:已婚3.婚姻等价类未婚选择项 扶养人数可以有,也可没有范围19空白16 人4.扶养人数等价类6 人以上10 点以上10 点以下5.保险费率 等价类等价类法举例有效等价类有效等价类无效等价类无效等价类无效等价类无
19、效等价类1.年龄20 39 任 选 一 个2.年龄40 59 任 选 一 个3.年龄60 岁 以 上、20 岁 以下 任 选 一 个小 於 1,选 一 个大 於 99,选 一 个4.性别英 文 Male,M,F,Female 任 选 一 个非 英 文 字 如 男 5.性别英 文 Male,M 任 选 一个非 Male,M,Female,F 之 任 意 字元,如 Child 三、三、设计输入数据:设计输入数据:有有效效等等价价类类无无效效等等价价类类无无效效等等价价类类6.性别英 文 Female,F 任 选一 个非 Male,M,Female,F 之 任 意 字符,如 Child 7.婚姻 已
20、 婚 非 已 婚 或 未 婚 之 任 意字 符,如 离 婚 8.婚姻 未 婚 非 已 婚 或 未 婚 之 任 意字 符,如 离 婚 9.扶养人数空 白10.扶养人数1 6小 於 1,选 一 个11.扶养人数7 9大 於 9,选 一 个12.保险费率10 点 以 上(0.6%)13.保险费率10 点 以 下(0.6%)等价类法举例四、四、根据以上分析设计测试用例:根据以上分析设计测试用例:用用例例编编号号年年龄龄性别性别婚姻婚姻扶养扶养人数人数保险保险费率费率备注备注1.27Female未婚 空白 0.6%有 效年 龄:20 39 岁性 别:集 合 Female,F 婚 姻:集 合 未 婚 扶
21、养 人 数:空 白保 险 费 率:0.6%2.50Male已婚20.6%有 效年 龄:40 59 岁性 别:集 合 Male,M 婚 姻:集 合 已 婚 扶 养 人 数:1 6人用用例例编编号号年年龄龄性别性别婚姻婚姻扶养扶养人数人数保险保险费率费率备注备注3.70F未婚70.1%有 效年 龄:60 岁 以 上 或 20 岁 以 下性 别:集 合 Female,F 婚 姻:集 合 未 婚 扶 养 人 数:6 人 以 上4.0M已婚4无法推算年 龄 类 无 效,因 此 无 法 推 算 保 险 费率5.100Female未婚5无法推算年 龄 类 无 效,因 此 无 法 推 算 保 险 费率6.1男已婚6无法推算性 别 类 无 效,因 此 无 法 推 算 保 险 费率7.99Child未婚1无法推算性 别 类 无 效,因 此 无 法 推 算 保 险 费率8.30Male离婚3无法推算婚 姻 类 无 效,因 此 无 法 推 算 保 险 费率.9.75Female未婚0无法推算扶 养 人 数 类 无 效,因 此 无 法 推 算 保险 费 率10.17Male已婚10无法推算扶 养 人 数 类 无 效,因 此 无 法 推 算 保险 费 率