“一步天堂,一步地狱。”
当我们还是学生时,可能仅差一分,就名落孙山;仅多一分,就金榜题名。
我们工作上班,可能就差一秒,就得算迟到罚钱;仅快一秒,就能带来一天的好心情。
当我们勇攀高峰时,可能仅失一步,将跌落万丈深渊;仅多一步,则登上峰巅览尽天下繁华。
这些处于临界的差异会产生截然不同的结果,如同天堂与地狱。
软件也不例外,很多代码对边界处理不当,严重时将导致系统崩溃、项目彻底洗白。
此时,对这些临界值进行分析、测试,就显得尤为重要。
前面是铺垫,精彩在后面:
又该引出今天的主题了——测试用例设计之:边界值分析法。
什么是边界值分析法?
边值分析方法 是假定大多数的错误是发生在各种输入条件的边界上,如果在边界附近的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小。
边界值使用条件包括:输入条件明确了一个值的取值范围,或是规定了值的个数,或输入条件明确了一个有序集合。
边界值是作为等价类的补充,其主要区别是:
①边界值测试设计不是从某一等价类中随便挑一个作为代表,而是要覆盖该等价类的所有边界的测试条件。
②边界值测试设计不仅考虑输入条件,还要考虑输出结果产生的测试情况。譬如,在高速收费站,其收费结果只有 “找零” 或 “无需找零”。当遇到没有现金的司机会怎么样?这就是从输出结果的边界考虑的。
在软件测试中,存在明显边界的有:数值(重量、尺寸、速度等)、字符串、空间(如地理位置)等。
1、数值型边界
闭区间,如用[a,b]来表示(包含两个端点a和b)
开区间,用(a,b)来表示(不包含两个端点a和b)
半开半闭区间 ,用(a,b]表示(不包括a端点,包括b端点)
PS:如果是体育老师教的数学(特别声明:体育老师也有数学猛人),不了解区间的,可以去温习下数学了~
在一个区间内,边界上的点可分类为:
a)上点:边界上的点,即上面区间中的a、b。
b)离点:离上点最近的点称为离点。遵循 开内闭外(即开区间在内,闭区间在外)。
这里要仔细思考下,为什么是开内闭外?结合“上点”,再回忆下上一章小酋提到的等价类划分法,就清楚为什么要这样取离点了。
c)内点:区间内的任意一点。
总之,使用区间中略小于最小值、最小值、正常值、最大值、略大于最大值作为输入值,记为:min-、min、normal、max、max+。通常情况下normal不用考虑。
2、字符型边界
字符型边界也可以转换成数值型边界,譬如密码字符长度为6~16位,可以转换成对区间 [6,16] 进行边界测试分析。
除此之外,对于一个字符串来说,其第一个字符和最后一个字符也被当做边界,如 邮箱名不能以数字或字母以外的开头结尾。
3、空间型边界
空间可以是物理空间或位置,也可以是计算机的磁盘存储。我们之前所讨论的数值或字符,都是在一维空间上分析,但是对于物理空间或位置而言,其边界通常并不是一个数值,而是一个结构体(如平面的二维坐标、立体空间的三维坐标)。
边界值分析的原则:
- 如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试数据;
- 如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;
- 如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试数据;
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试数据;
举几个栗子:
1、腾讯Q币充值
Q币充值取值范围是(0, 10000)的整数,因此我们可以得到边界值:0、1、9999、10000 这四个数值。
2、“测试部落”对注册用户名长度的校验为5-16个字符
5-16个字符,转换为数值区间则为:[5-16]
那么我们得到的边界值为:4、5、16、17 的4个数值
所以,在设计测试用例时,我们可以依次输入:4、5、16、17个字符长度的字符串作为输入值进行测试,分别为:
test
ceshi
softwaretesting
softwaretesting+
3、无人机电子围栏
通常在机场附近都对无人机进行了电子围栏限制,即通过软件算法限制无人机在三维空间的活动区域。把三维空间映射到二维平面上,分别得出禁飞区、30米限飞区、120米限飞区、净空区。
从平面来看,禁飞区边缘附近、30米限飞区边缘附近、120米限飞区边缘附近 就是机场电子围栏的边界值(地理位置)。
从高度来看,禁飞区禁飞,高度=0,30米限飞区高度范围是 [0,30],120米限飞区的高度范围是[0,120],净空区的高度范围是[0,500]。
最后请把 小酋测试 分享给需要的朋友,让小酋的“爱”传递下去吧^_^