第4章2 黑盒测试之等价类测试

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

编号
a + b > c, 且a≠b≠c
3 4
a+b<c a+b=c a+c<b a+c=b b+c<a b+c=a
24 25 26 27 28 29
构成一般 三角形
a + c > b, 且a≠b≠c b + c > a, 且a≠b≠c
a = b,a ≠ c,且两边之和大 于第三边
5
6 7 8
构成等腰 三角形
等价类的分类
有效等价类 对于程序的规格说明来说,是合理的、有意义的 输入数据所构成的集合; 无效等价类
对于程序的规格说明来说,是不合理的、没有
意义的输入数据所构成的集合;
在设计测试用例时,要同时考虑这两种
等价类。因为用户在使用软件时,有意或无
意输入一些非法的数据是常有的事情。软件
不仅要能接收合理的数据,也要能经受意外
(1) 根据输入条件,划分出有效等价类和无效等价类,
如表4-2-2所示。
表 4-2-2 电话Βιβλιοθήκη Baidu码等价类
等 价 有效等价类 类 输入条件 空白 地区码 四位数字
编号
无效等价类
编 号
1 2
前缀
200~999 之间 的数
3
后缀
4 位数字
4
有非数字字符 少于四位数字 多于 4 位数字 有非数字字符 起始位为‘0’ 起始位为‘1’ 少于 3 位数字 多于 3 位数字 有非数字字符 少于 4 位数字 多于 4 位数字
的考验,这样的测试才能确保软件具有更高
的可靠性。
2.划分等价类的方法
等价类测试的思想就是把全部输入数据合理划分为若 干等价类,在每一个等价类中取一个具有代表性的数据作 为测试的输入条件,这样可以用少量的测试数据取得较好 的测试效果。 在等价类测试中,划分等价类是非常关键的。如果等 价类划分合理,可以大大减少测试用例,并能保证达到要 求的测试覆盖率。那么如何划分等价类呢?一般来讲,首 先要分析程序所有可能的输入情况,然后按照下列规则对 其进行划分。
a = c,a ≠ b,且两边之和大 于第三边 b = c,a ≠ b,且两边之和大 于第三边
构成等边 三角形
a=b=c
9
(3) 设计测试用例,覆盖上表中的等价类,如表4-2-5所
示。
测 试 用 例 编号 1、 2、 3、 4、5 2 3 4 5 6 6 5 6 6 5 6 6 5 6 6 6 等腰三角形 等腰三角形 等腰三角形 等边三角形 6 7 8 9
问题引入
测试的矛盾
从经济的角度来说,我们希望测试没有冗余;
一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。
问题引入
(1)你测试了1+1,1+2,1+3和1+4之后,还有必要测试1+5和
1+6吗?你能放心地认为它们正确吗?
(2)1+15与1+99999999999999999999999999999999有什么区 别呢?
问题引入
等价类方法可令测试事半功倍。
举例:加法器
加法器实例(1)
加法器实例(2)——穷举测试
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
加法器实例(3)——等价类划分法
4.2 等 价 类 测 试
4.2.1 等价类
5 6 7 8 9 10 11 12 13 14 15
(2) 根据等价类表设计测试用例, 覆盖所有的有效等价类和无效等价, 如 下表所示 表 4-2-3 电话号码测试用例
测试用例编号 1 2 3 4 5 6 7 8 9 10 11 12 13 地区码 空白 0816 B123 22 23467 0816 1234 1234 1234 1234 1234 1234 1234 输 入 数 据 前缀 523 678 523 345 345 A67 012 101 45 2234 234 234 234 后缀 6678 4567 4567 4567 4567 4567 4567 4567 4567 4567 B123 23 23456 预期结果 接受 接受 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 拒绝 覆盖等价类 1,3,4 2,3,4 5 6 7 8 9 10 11 12 13 14 15
注意:在寻找等价类划分时,考虑把软件具有 相似输入、相似输出、相似操作的分在一组, 这些组就是等价划分。
问题引入
举例:设计这样的测试用例,来实现一个对所有实 数进行开平方运算( y = sqrt(x) )的程序的测 试。
思考方向: 由于开平方运算只对非负实数有效,这时需 要将所有的实数(输入域x)进行划分,可以分成: 正实数、0 和 负实数。假设我们选定+1.4444代 表正实数,-2.345代表负实数,则为该程序设计 的测试用例的输入为+1.4444、 0 和 -2.345。
6 0 6 -5 6 0 5.6 — 5 — 6 — 5 — 6 7 10 10 6 8
6 6 3.6 6 -2 3.5 4.5 — — 5 — 4 6 — 15 13 5 4 15 15
提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:输入 不符合要求 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 提示:请输 入数据 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形 不能构成三 角形
2.三角形问题
程序规定:“输入三个正整数a、b、c,分别作为三角 形的三条边长。通过程序判定是否能构成三角形。如果能 构成三角形,进一步判断三角形的类型。当此三角形为一 般三角形、等腰三角形及等边三角形时,分别作不同的操 作。”用等价类划分方法为该程序进行测试用例设计。
(1) 分析题目中给出的条件和隐含的输入要求,输入条
的有效等价类。重复这一步,直到所有的有效等价类都被
覆盖为止。 (3) 设计一个测试用例,使其仅覆盖一个尚未被覆盖的
无效等价类。重复这一步,直到所有的无效等价类都被覆
盖为止。
4.2.5 案例
1.电话号码 某城市电话号码由三部分组成,分别是: 地区码——空白或4位数字。 前缀——为三位数字,但不能以“0”或“1”开头。 后缀——4位数字。 假定被测程序能接受一切符合上述规定的电话号码, 拒绝所有不符合规定的电话号码。请用等价类方法进行测 试,设计测试用例。
第4章 黑 盒 测 试
第4章 黑 盒 测 试
4.1 边界值测试 4.2 等价类测试
4.3 基于判定表的测试
4.4 因果图 4.5 其他黑盒测试方法 4.6 综合案例 4.7 本章小结
等价类测试
问题引入
测试的矛盾
为保证软件产品的质量,我们需要进行完备(彻底)的测试;
但这是不现实的,因为:
输入量太大 输出结果太多 软件实现途径太多
(2) 按照数值划分。
例 :在教师上岗方案中规定对教授、副教授、讲师和助
教分别处理。那么可以确定4个有效等价类:教授、副教授、 讲师和助教;1个无效等价类,它是所有不符合以上职称的
人员构成的集合。
例:输入条件要求:x==5, 答案: 有效等价类:1个x==5 无效等价类:1个:x!=5
例:程序输入x取值于一个固定的枚举 类型{1,2,4,12},且程序中对这4个数 值分别进行了处理,请问等价类如 何划分?
4.2.3 用等价类设计测试用例
1.划分等价类 首先根据输入条件或输出条件划分等价类。 2.建立等价类表 根据划分的等价类建立等价类表,如表4-2-1所示。
表 4-2-1 等 价 类 表
输入 有效等价类 无效等价类
3.选择测试用例 从等价类中选取具有代表性的数据设计测试用例。从 等价类中选择测试用例时,一般遵循下列原则: (1) 为每一个等价类规定一个唯一的编号。 (2) 设计一个测试用例,使其尽可能多地覆盖尚未覆盖
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
1.等价类的划分
等价类的重要问题是它们构成集合的划分。划分 是指互不相交的一组子集,这些子集的并是整个集合。 划分可定义为:给定集合B,以及B的一组子集A1、 A2、…、An,这些子集是B的一个划分,当且仅当
A1∪A2∪…∪An=B,且i≠j时,Ai∩Aj=Ø。
划分在软件测试中的作用
划分对于测试有非常重要的意义: (1) 各个子集的并是整个集合,这提供了一种形式 的完备性; (2) 各个子集的交是空,这种互不相交保证了一种 形式的无冗余性。因此采用划分可保证某种程度的完备 性,并减少冗余。
3.等价类的特点
按划分等价类的规则划分出的等价类具有下列特点: (1) 完备性:划分出的各个等价类(子集)的并是输入/输 出的全集,即程序的定义域/值域。 (2) 无冗余性:各个等价类是互不相交的一组子集。 (3) 等价性:划分的各个子集是由等价关系决定的,即 各个输入数据对于揭露程序中的错误都是等效的。因此我 们可以从等价类中选择一个具有代表性的数据进行测试就 可以达到测试目的。
b为非正整数 c为非正整数 a,b为非正整数 a,c为非正整数 b,c为非正整数
10
11 12 13 14 15 16
两边为非正 整数
三边均为非正整数 只输入一个 数
只给a
只给b 只给c
17
18 19
三个数
2
只输入两个 数
只给a,b
只给a,c 只给b,c
20
21 22
输入条件
有效等价类
编号
无效等价类
(1) 按照区间划分。在输入条件规定了取值范围或值的
个数的情况下,则可以确立一个有效等价类和两个无效等 价类。例如:程序的输入是学生成绩,其范围是0~100, 则输入条件的等价类如图4-2-1所示。 其有效等价类为:0≤成绩≤100;无效等价类为:成绩 <0,成绩>100。
图4-2-1 学生成绩的等价类
表 4-2-5 三角形问题的测试用例
输 入 数 据 预 期 输 出 覆盖等价类
a
b
c
1
5
6
7
一般三角形
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
-5 6 6 0 5.6 6 3.5 6 — — 6 6 — — 5 6 4 6 5 7
例:程序输入用户口令的长度必须是4位的串,可以确定一
个邮箱等价类是串的长度为4,一个无效等价类长度不为4。
(4) 在输入条件是一个布尔量的情况下,可确定一个有
效等价类和一个无效等价类。
(5) 进一步细分等价类。在确知已划分的等价类中各元
素在程序处理中的方式不同的情况下,则应再将该等价类 进一步地划分为更小的等价类。 例如:程序用于判断几何图形的形状,则我们可以首先根 据边数划分出三角形、四边形、五边形、六边形等。然后 对于每一种类型,我们可以做进一步的划分,比如三角形 可以进一步分为等边三角形、等腰三角形和一般三角形。 (6) 等价类划分还应特别注意默认值、空值、Null、零 值等的情形。
件如下: ① 正整数。 ② 三个数。 ③ 构成一般三角形。 ④ 构成等腰三角形。 ⑤ 构成等边三角形。 ⑥ 不能构成三角形。
(2) 根据输入条件的要求划分等价类,列出等价类表并编号,如 下表所示。
输入条件 有效等价 类 编号 无效等价类 编号
一边为非正 整数 正整数 三 个 正 整 数 1
a为非正整数
有效等价类为x=1、x=3、 x=7、x=15, 无效等价类为x≠1,3,7,15的值的集合。
解:程序输入x取值于一个固定的枚举类型{1,2,4,12},
并且程序中对这4个数值分别进行了处理,则有效等价类为 x=1、x=2、x=4、x=12,无效等价类为1、2、4、12以外的 值构成的集合。
(3) 按照数值集合划分。在输入条件规定了输入值的集合或 者规定了“必须如何”的情况下,可确立一个有效等价类和一 个无效等价类。 例,某程序中有标识符,其输入条件规定“标识符应以字母 开头……”,则可以这样划分等价类:“以字母开头者”作为 有效等价类,“以非字母开头”作为无效等价类。
等价类测试
等价类的定义: 等价类是输入域的某个子集合,而所有的 等价类的并集是整个输入域。在子集合中,各 个输入数据对于揭露程序中的错误是等效的。
等价类测试
等价类测试的假设:
测试某等价类的代表值,就等效于对这个等价类
中其他值的测试。
等价类测试的思想: 把全部的输入数据划分成若干个等价类,在每
一个等价类中取一个数据来进行测试。
相关文档
最新文档