边界值分析法
概述
实践表明是大量的错误往往发生在程序的输入或输出范围的边界上(程序员往往在容易在这些地方犯错)。
边界值分析法(BVA:Boundary Value Analysis) 是利用关于预知系统行为转换位置的边界的需求和设计来检查那些边界及附近的测试数据的用例设计方法。边界值分析常常采用的边界值是来自等价类区域的边界及其附近选取测试数据,也可以看做是对等价类划分法的一种补充的方法。
边界值分析法是基于可靠性理论中称为”单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起。
边界值分析法的步骤
边界分析法设计测试用例主要分为两个步骤:
- 首先确定边界情况。通常输入或输出等价类的边界就是应该着重测试的边界情况
- 选取测试数据。选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不只是选取等价类中的典型值或任意值
边界值分析法的分类
1. 标准边界值
不考虑无效输入值。每次只改变一个变量的取值,其余变量取正常值。
- min(最小值)
- min+(最小值+1)
- nom(正常值/中间值)
- max-(最大值-1)
- max(最大值)
对于有n个变量的函数,采用标准边界值分析法会产生 4n+1 个测试用例。
2. 健壮边界值
除了对变量的5个边界值分析取值外,还需要增加一个略大于最大值(max+)以及略小于最小值(min-)的取值,检查超过极限值时系统的情况。
对于有n个变量的函数,采用健壮边界值测试需要 6n+1 个测试用例。
边界值分析法的原则
1. 当输入条件规定了值的范围时
选取刚达到这个范围边界的值,以及刚超出这个范围边界的值作为测试输入。
例如,学生成绩输入值规定是0~100整数,那么边界是0和100,则可以设计测试用例:-1、0、1、99、50、100和101。
2. 当输入条件规定了值的个数时
选取最大个数,最小个数、比最小个数少1、比最大个数多1的数作为测试输入。
例如,上传附件的个数1~10个,则测试用例可取1和10,还应取0和11。
3. 当输入、输出是有序集合时
选取集合的第一个元素和最后一个元素作为测试输入。
4. 内部数据结构边界
如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
5. 分析规格说明,找出其它可能的边界条件
边界值检验的类型
通常情况下,软件测试所包含的边界检验有几种类型:数值、字符、位置、数量、速度、尺寸等。
- 第一个/最后一个
- 开始/完成
- 空/满
- 最大值/最小值
- 最快/最慢
- 最高/最低
- 最长/最短
内部边界值条件(次边界值条件)
在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,也是最终用户通常最容易发现问题的。然而,某些边界值条件是不需要呈现给用户的,或者说用户很难注意到这些问题,但这些边界条件同时确实属于检验范畴内的边界条件,称为内部边界值条件或次边界值条件。
1. 数值的边界值检验
计算机是基于二进制进行工作的,因此,任何数值运算都有一定的范围限制:
| 项 | 范围或值 |
|---|---|
| 位(bit) | 0或1 |
| 字节(byte) | 0~255(无符号);-128~127(有符号) |
| 字(word) | 0~65,535(无符号);-32,768~32,767(有符号) |
| 千(K) | 1,024 |
| 兆(M) | 1,048,576 |
| 吉(G) | 1,073,741,824 |
| 太(T) | 1,099,511,627,776 |
2. 字符的边界值检验
在字符的编码方式中,ASCII和Unicode是比较常见的编码方式:
| 字符 | ASCII码值 | 字符 | ASCII码值 |
|---|---|---|---|
| 空(null) | 0 | A | 65 |
| 空格(space) | 32 | a | 97 |
| 斜杠(/) | 47 | 左中括号([) | 91 |
| 0 | 48 | z | 122 |
| 冒号(:) | 58 | Z | 90 |
| @ | 64 | 单引号(‘) | 96 |
3. 其他边界值检验
包括默认值Default、空值Empty、空格Blank、未输入值Null、零Zero、无None、无效数据/不正确数据和干扰数据等。
边界值分析法与等价类划分法的结合
在实际测试用例设计中,需要将基本的软件设计要求和程序定义的要求结合起来,即结合基本边界值条件和次边界值条件来设计有效的测试用例。
边界值分析法经常和等价类法结合使用取测试用例集的并集。
例如,网站登录密码长度必须为6-12位:
- 有效等价类是位数为6~12
- 无效等价类是位数<6以及位数>12
- 边界值为6与12
大题
标准边界值题目
有 n 个变量,就要写 4n+1 个测试用例,具体一个变量写的测试用例有:
- min
- min+1
- max
- max-1
这样一个变量写 4 个用例,最后一个用例所有变量都去中间值,一共 4n+1
健壮边界值题目
在标准边界值题目的基础之上 一个变量多写
- min-1
- max+1
因此需要写 6n+1 个测试用例
练习题:
某在线考试的”成绩录入”模块要求:教师输入的百分制成绩必须是0到100之间的整数(包含0和100)。系统应能正确处理有效成绩,并对无效输入给出明确错误提示。
- 请阐述边界值分析法的基本思想,并说明为什么这种方法在测试中尤为重要
- 请根据边界值分析法,为该成绩输入框设计一组完整的测试用例(需包含输入数据和预期结果)