边界值分析方法的理论基础,是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。
边界值分析法是对等价类划分法的一种补充方法。
边界分析使用条件:
- 输入条件明确了一个值的取值范围,或是规定了值的个数
- 输入条件明确了一个有序集合
一、 边值点定义
- 上点:边界上的点,如果域的边界是封闭的(封闭:包括边界上的值),上点就在域范围内;如果域的边界是开放的(开放:不包括边界上的值),上点就在域范围外
- 离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内
- 内点:顾名思义,就是在域范围内的任意一个点
例1:驾照年龄18-65周岁 ,包含18和65(边界是封闭的)
取值范围:18-65
上点:18; 65
内点:56;34…
离点:17;66
例2:某公司招聘,要求年龄在30-50周岁,不包含30和50周岁(边界是开放的)
取值范围:31-49
上点:30;50
内点:34;43…
离点:31;49
二、边界值分析的原则
- 如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试数据
- 如果输入(输出)条件规定了值的个数的取值范围,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据
- 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据;
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据
例:
(1)取值范围:18-65周岁(含)
测试数据:18;65; 17;66
(2)值的个数:图形处理三个数值,判断是否组成三角形
测试数据:3个数值;2个数值;4个数值
(3)值的个数是取值范围:密码的设定,6-16个字符
测试数据:16个字符;6个字符;5个字符;17个字符
(4)有序的集合:月份:01,02…12月
测试数据:01;12
(5)内部数据结构:数组最大存储10个数据(含)
测试数据:空(一个数据都不存);存满10个数据
三、边界值分析法设计用例步骤
- 分析输入参数的类型: 从测试规格中分析得到输入参数类型
- 等价类划分(可选): 对于输入等价类划分方法进行等价类的划分
- 确定边界: 运用域测试分析方法确定域范围的边界(上点、离点与内点)
- 相关性分析(可选): 如果存在多个输入域,则需要运用因果图、判断表方法对这些输入域边界值的组合情况进行进一步分析
- 形成测试项: 选择这些上点、离点与内点或者这些点的组合形成测试项
测试顺序:优先测上点和离点,再测内点
四、边界值分析法例题
现有一个档案管理系统,容许用户通过输入年月对档案文件进行检索,系统对查询条件年月的输入限定为1990年1月-2049年12月,并规定:日期由6位数字组成,前4位表示年,后2位表示月。
输入条件 | 取值范围 | 上点 | 离点 |
---|---|---|---|
日期格式 | 6个数字 | 6个数字 (1) | 5个数字(2);7个数字(3);非数字(4) |
年 | 1990-2049 | 1990(5);2049(6) | 1989(7);2050(8) |
月 | 01-12 | 01(9);12(10) | 00(11);13(12) |
测试输入数据:
199001:(1)(5)(9)
199012:(1)(5)(10)
204901:(1)(6)(9)
204912:(1)(6)(10)
19921:(2)
2021012:(3)
199i01:(4)
198901:(7)
205012:(8)
199200:(11)
199213:(12)