思考: 任意输入三角形三边,判断能够构成三角形?
输入3个整数a、b、c构成三角形,设计测试用例数量。
假设在16位计算机上运行,则整数可能的取值是216,那么a、b、c三条边的各种可能组合大约有3*1013种,假设执行1次需要1ms,执行完所有的测试数据也需要1万年。
一、常用测试用例设计分析法
- 等价类分析法
- 边界值分析法
- 判定表分析法
- 因果图分析法
- 正交试验法
- 流程分析法(场景分析法)
- 状态迁移法
- 错误推测法
- 异常处理法
二、等价分析法
某个输入域的集合,在这个集合中每个输入条件都是等效的,如果其中一个的输入不能导致问题发生,那么集合中其他输入条件进行测试也不可能发现错误。
- 通常等价类划分为2种情况:
- 有效等价类:对程序规格说明有意义的、合理的输入数据;
- 无效等价类:对程序规格说明无意义的、不合理的输入数据;
- 划分的原则:
- 规定了输入值的范围或值的个数,可以定义一个有效等价类和两个无效等价类(如: 0<a<33或输入6~8个字符);
- 输入值为布尔值(如:真/假);
- 规定了输入数据的一组值(文化程度:初中、高中、大学);
- 规定了输入规则时,可以划分出一个有效的等价类(符合规则)和若干个无效等价类(从不同角度违反规则);
- 如果输入数据是一组值,且程序对不同的输入做不同处理,则每个允许的输入值是一个有效等价类,并有一个无效等价类;
- 等价类划分的步骤:
- 找输入条件;
- 为每个输入条件找有效、无效等价类;
- 为每个等价类编号;
- 用最少的用例覆盖最多的有效等价类,重复这一步骤直到覆盖完全;
- 每一个无效等价类都有一个用例;
- 并非所有有效等价类都有无效;
- 等价类的覆盖可以重复覆盖;
- 常见的能够划分等价类场景
- 数值范围
- 重复次数
- 字符串长度
- 字符串组中字符的个数
- 文件命名
- 文件大小
- 屏幕的颜色种类
- 超时时间;
- 等价类的优缺点
- 优点: 是考虑了单个输入域的各种情况,避免了盲目或随机选取输入数据的不完整性和覆盖的不稳定性;
- 缺点: 分法虽简单易用,但没有对组合情况进行充分的考虑。需要结合其他测试用例设计的方法进行补充;
案例1: QQ注册,密码输入框
案例2: 根据内容提炼需求写用例
现有一个档案管理系统,容许用户输入年月对档案文件进行检索,系统对查询条件年月的输入限定为1990年1月~2049年12月,并规定由6位数字字符组成,前4位表示年,后2位表示月;
案例3: 根据要求写用例
a、验证长度6~16个
b、不能包含空格
c、不能是9位以下纯数字
d、密码不能与名字相同
三、边界值分析法
边界值分析法是对等价类分析方法的一种补充, 所以边界值的条件落在等价类的边界上。
- 边界条件分析:
- 输入条件明确了一个值的取值范围,或规定了值的个数;
- 输入条件明确了一个有序集合;
- 边界点定义
- 上点: 边界上的点;
- 离点: 离上点最近的点,如果域的边界是封闭的,离点就在域范围外,如果域的边界值是开发的,离点就在域范围内;
- 内点: 顾名思义,就是在域范围内的任意一个点;
闭区间: [10,20] 即 10<=i<=20;
开区间: (5,8) 即 5<i<8;
- 边界值分析原则:
- 如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例;
- 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;
- 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个或最后一个元素作为测试数据;
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据;
- 设计用例的步骤:
- 分析输入参数的类型: 从测试规格中分析得到输入参数类型;
- 等价类划分(可选): 对于输入等价类划分方法进行等价类的划分;
- 确定边界: 运用域测试分析方法确定域范围的边界(上点、离点、内点);
- 相关性分析(可选): 如果存在多个输入域,则需要运用因果图、判定表方法对这些输入域边