-
1 电子教材
-
2 PPT
-
3 实训任务
使用等价类划分法设计测试用例实例
城市的电话号码由两部分组成。这两部分的名称和内容分别如下。
Ø 地区码:以0开头的 3位或者4位数字(包括0)。
Ø 电话号码:以非0、非1开头的7位或者8位数字。
假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。
(1)划分等价类并编号,如表6-6所示。
表6-6 电话号码的等价类设计
| 输入数据 | 有效等价类 | 无效等价类 |
| 地区码 | (1)以0开头的3位数串 (2)以0开头的4位数串 | (3)以0开头的含有非数字字符的串 (4)以0开头的小于3位的数串 (5)以0开头的大于4位的数串 (6)以非0开头的数串 |
| 电话号码 | (7)以非0、非1开头的7位数串 (8)以非0、非1开头的8位数串
| (9)以0开头的数串 (10)以1开头的数串 (11)以非0、非1开头的含有非法字符7或者8位数串 (12)以非0、非1开头的小于7位数串 (13)以非0、非1开头的大于8位的数串 |
(2)为有效等价类设计测试用例,如表6-7所示。
表6-7 电话号码的有效等价类测试用例设计
| 测试数据 | 期望结果 | 覆盖范围 | 测试数据 | 期望结果 | 覆盖范围 |
| 010 23145678 | 显示有效输入 | (1)、(8) | 0851 3456789 | 显示有效输入 | (2)、(7) |
| 023 2234567 | 显示有效输入 | (1)、(7) | 0851 23145678 | 显示有效输入 | (2)、(8) |
(3)为每一个无效等价类至少设计一个测试用例,如表6-8所示。
表6-8 电话号码的无效等价类测试用例设计
| 测试数据 | 期望结果 | 覆盖范围 | 测试数据 | 期望结果 | 覆盖范围 |
| 0a34 23456789 | 显示无效输入 | (3) | 028 12345678 | 显示无效输入 | (10) |
| 05 23456789 | 显示无效输入 | (4) | 028 qw123456 | 显示无效输入 | (11) |
| 01234 23456789 | 显示无效输入 | (5) | 028 623456 | 显示无效输入 | (12) |
| 2341 23456789 | 显示无效输入 | (6) | 028 886234569 | 显示无效输入 | (13) |
| 028 01234567 | 显示无效输入 | (9) |
(1)每日浏览,工作时间(8 : 00一17 : 30)期间的时间是一个等价类,非工作时间是另外一个等价类。
(2)每周浏览,周一到周五可看成一类,而周六和周日可以看成不同的一类。
(3)每月浏览,每月有 31 日(1 、3 、5 、7 、8 、10 、12 月)可归为一类,每月只有 30 日 ( 4 、6 、9 、11 月)归为第2 类,而2 月份只有28 天或29 天(闰年)需单独归为一类。
(4)还有,在创建事件或活动时,名称中输入的文字内容被归为有效数据的等价类,名称中什么都没输(空)就点击“添加”,应归为无效数据的等价类。
假定一台ATM机允许提取增量为50元人民币,总额为从50元人民币到5000元人民币(含5000元人民币)不等的现金。测试能否提取想提取的钱数(不考虑、由于硬件的原因造成的提取错误)。
解决步骤如下:
(1)划分等价类。
根据测试需求,需要考虑如下3个等价类划分:一个等价类是有效数据,另外两个是无效数据,如图6-3所示。

图6-3 等价类划分
(2)建立等价类表(表6-9)。
表6-9 等价类表
| 序号 | 功能项 | 有效等价类 | 编号 | 无效等价类 | 编号 |
| 1 | 提取现金
| 50=<提取钱的数目<=5000 | 2
| 提取钱的数目<50 提取钱的数目>5000 | 1 3 |
| … | … | … | … | … | … |
(3)确定测试用例(表6-10)。
表6-10 测试用例
| 测试用例编号 | 输入数值 | 所属等价类 | 预期输出 |
| 1 | 20 | 1 | 错误信息 |
| 2 | 1000 | 2 | 正确输出 |
| 3 | 6000 | 3 | 错误信息 |
(4)细化等价类划分。
只要运用等价类划分,只用一个有效的测试用例和两个无效的测试用例就能进行充分的覆盖。还可以尝试将等价类进一步细化,考虑提取钱的数目为负的钱数、零钱数或特别大的数目可能引起ATM机崩溃等。当然,还可以尝试使用其他重要的测试用例,比如特殊字符和带零头的数额(提取145.78元人民币)。
等价类技术提供了一个选择哪些数值,舍弃哪些数值的测试用例设计方法。运用等价类技术,可以把相似输入、输出、操作分成组,这些组就是等价区间。只要从等价区间选择一到两个有代表性的值作为测试用例来执行就等同于测试了所有的值。例如我们测试了18+91的计算结果是正确的,因为是两位数的加法,原理都是一样的,所以可以认为只要在-99到99这个区间之内的所有数值相加都是正确的。当然,也可能存在编程人员编写了异常处理的代码(使用多个测试用例才能发现这个错误),但是在发现这种类型的缺陷方面存在其他更为有效的技术(比如代码审查)。
运用等价类方法的步骤是,在进行等价类划分之前,首先从程序的功能说明中找出各个输入条件,然后为每个输入条件划分两个或更多个等价类。确定了等价类划分后,给出相应的等价类表,再根据等价类表给出测试用例。



