如何选定边界值
很难提供一份如何进行边界值分析的“详细说明”,因为这种方法需要一定程度的创造性,以及对问题采取一定程度的特殊处理办法。
但是可以提供一些通用指南:
- 如果输入条件规定了一个输入值范围,那么应针对范围的边界设计测试用例,针对刚刚越界的情况设计无效输入测试用例。举例,如果输入值的有效范围是-1.0至+1.0,那么应针对-1.0、1.0、-1.001和1.001的情况设计测试用例。
- 如果输入条件规定了输入值的数量,那么应针对最小数量输入值、最大数量输入值,以及比最小数量少一个、比最大数量多一个的情况设计测试用例。举例,如果某个输入文件可容纳1~255条记录,那么应根据0、1、256和255条记录的情况设计测试用例。
- 对每个输出条件应用指南1。举例,如果某个程序按月计算FICA的扣除额,且最小金额是0,最大金额是1165.25,那么应该设计测试用例来测试扣除0和1165.25的情况。此外,还应观察是否可能设计出导致扣除金额为负数或超过1165.25的测试用例。
- (Tips:检查结果空间的边界很重要,因为输入范围的边界并不总是能代表输出范围的边界情况(例如三角正弦函数sin)。但是总是产生超过输出范围的结果也是不大可能的,但无论如何,应该考虑这种可能性。)
- 对每个输出条件应用指南2。如果某个信息检索系统根据输入请求显示关联程度最高的信息摘要,而摘要的数量从未超过4条,则应编写测试用例,使程序显示0条、1条和4条摘要,还应设计测试用例,导致程序错误地显示5条摘要。
- 如果程序的输入或输出是一个有序序列(例如顺序的文件、线性列表或表格),则应特别注意该序列的第一个和最后一个元素。
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
- 此外,发挥聪明才智找出其他的边界条件。
Tips:边界值分析方法和等价类划分之间的重要区别是,边界值分析考察正处于等价划分边界或在边界附近的状态。
设计测试用例
A.确定边界值
在尝试针对划分好的等价类进行边界值取值的时候,一定要有适当的范围,不是根据我们的端点值往左右两侧随意选择测试值,而是也有科学的方法进行选择。
边界值点的定义:
上点:边界上的点,闭内开外(“闭”是指域的边界是封闭的,即闭区间;“开”是指域的边界是开放的,即开区间)。
离点:离上点最近的点称为离点。开内闭外。
内点:域范围内的任意一点。
三点分析法:结合等价类划分的具体情况,针对边界值的选择就包括开区间、闭区间以及半开半闭区间。
- 闭区间:闭区间中的情况,上点为可以取值的点,在上点之间任取一点就是内点。而紧邻上点范围之外的第一对点被称为离点(也称为外点)
- 半开半闭区间:半开半闭区间中,上点与内点的定义不变。离点是开区间一侧上点内部范围内紧邻的点,而在闭区间一侧是上点外部范围内紧邻的点。
- 开区间:开区间中,上点与内点的定义仍然不变。而离点就是上点内部范围内紧邻的一对点。
总结为,上点就是区间的端点值,而内点就是上点之间任意一点。对于离点,要分具体情况,如果开区间的离点,就是开区间中上点内侧紧邻的点;如果是闭区间的离点,就是闭区间中上点外侧紧邻的点。
边界的分类
- 边界条件:可以在产品说明书中有定义或者在使用软件过程中确定;
- 内部边界条件:在软件内部,也称为内部边界条件;
- 其他边界条件:如输入信息为空、非法、错误、不正确和垃圾数据。
A.边界条件的常见数据类型
数值、速度、字符、地址、位置、尺寸、数量、空间
- 例如,“字符”,边界值是起始-1字符、结束+1个字符。测试用例的设计思路是,假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效边界值;输入0个和256个字符作为无效边界值,这几个数值都属于边界条件值。
- 例如“数值”,边界值是最小值-1、最大值+1。测试用例的设计思路是,假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的数值来作为边界条件。
- 例如“空间”,边界值是小于空余空间一点、大于满空间一点。测试用例的设计思路是,例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。
B.内部边界条件
在多数情况下,边界值条件是基于应用程序的功能设计而需要考虑的因素,可以从软件的规格说明或常识中得到,也是最终用户可以很容易发现问题的。然而,在测试用例设计过程中,某些边界值条件是不需要呈现给用户的,或者说用户是很难注意到的,但同时确实属于检验范畴内的边界条件,称为内部边界值条件或子边界值条件。
内部边界值条件主要有下面几种:
- 数值的边界值检验:计算机是基于二进制进行工作的,因此,软件的任何数值运算都有一定的范围限制。
范围或值 | 范围或值 |
位(bit) | 0或1 |
字节 (byte) | 255 |
字(word) | 0~65535(单字)或0~4294967295(双字) |
千(K) | 1024 |
兆(m) | 1048576 |
吉(G) | 1073741824 |
符的边界值检验:在计算机软件中,字符也是很重要的表示元素,其中ASCII和Unicode是常见的编码方式。如下列出了一些常用字符对应的ASCII码值。
字符 | ASCII码值 | 字符 | ASCII码值 |
空(nul1) | 0 | A | 65 |
空格 (space) | 32 | a | 97 |
斜杠(/) | 47 | Z | 90 |
0 | 48 | z | 122 |
冒号( :) | 58 | 单引号(‘) | 96 |
@ | 64 |
其它边界值检验:在不同的行业应用领域,依据硬件和软件的标准不同而具有各自特定的边界值。如下列出部分手机相关的边界值
硬件设备 | 范围或值 |
手机锂电池电压 | 工作电压:3.6-4.2V |
手机正常使用温度 | -25°C~60°C |
使用场景
有数据输入且存在取值边界或长度边界时,一般可以使用边界值法。边界值法往往跟等价类划分法一起使用,从而形成一套较为完善的测试方案。
.划分等价类&选取边界值
步骤一、要求输入6个数字字符yyyynn;参照等价类划分法规则5,划分为一个有效等价类和三个无效等价类。
- 有效等价类(1):输入6个数字字符
- 无效等价类(2):输入6个字符,存在非数字的情况
- 采用边界值,6个字符全为非数字:abcdef
- 采用边界值,6个字符中有1个为非数字:19930m
- 无效等价类(3):输入少于6个数字字符
- 采用边界值,输入5个数字字符
- 无效等价类(4):输入多于6个数字字符
- 采用边界值,输入7个数字字符
步骤二、在有效等价类(1)的基础上,参照等价类划分法规则6,对该等价类进行细分;考察6个数是否满足日期格式要求,1990<=yyyy<=2049,01<=nn<=12,参照规则,划分为一个有效等价类和四个无效等价类。
- 有效等价类(5):日期格式满足要求,1990<=yyyy<=2049,01<=nn<=12
- 采用边界值,[yyyy,nn]取值为:[1990,06],[1991,06],[2020,06],[2048,06],[2049,06],[2020,01],[2020,02],[2020,11],[2020,12]
- 无效等价类(6):yyyy不满足要求,yyyy<1990
- 采用边界值,[yyyy,nn]取值为:[1989,06]
- 无效等价类(7):yyyy不满足要求,yyyy>2049
- 采用边界值,[yyyy,nn]取值为:[2050,06]
- 无效等价类(8):nn不满足要求,nn<01
- 采用边界值,[yyyy,nn]取值为:[2020,00]
- 无效等价类(9):nn不满足要求,nn>12
- 采用边界值,[yyyy,nn]取值为:[2020,13]
例4. 假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客的最少货币个(张)数?(货币面值50元,10元,5元,1元四种)
题目分析:设四种货币的张数分别为n50、n10、n5、n1(均为整数)它们的值即为结果。
- 输入情况有R>100, 0<R<=100, 0<R, P>100, R<=P<=100, P<R。
- 输出情况有n50=1||0, 0<= n10 <5, n5=1||0, 0<= n1 <5。
- 测试实例(R,P)有:
边界值分析的优缺点
- 优点:更全面更系统的测试边界上存在的问题,是最有效的测试用例设计方法之一;
- 缺点:只能作为一个对其他设计方法的补充;这种方法表面上听起来简单,但有的边界值非常微妙,不容易确定下来;只适用于多个变量相互独立又都代表实际物理量的情况,对变量之间的依赖关系则考虑不到。