边界值分析法
创始人
2025-05-28 20:52:35

边界值分析法

知识点

  • 边界值划分法概述
  • 边界值分析法案例

引例

我们先来看一个java小程序

public class TestProject{public static void main(String args[]){int data[] = new int[10];for(i=1;i<=10;i++)data[i]=i;sout(data[i]);}
}

运行这个程序会发生什么事情呢?在这个程序中,目标是为了创建一个有10个元素的一维数组,但是,在java语言中,当一个数组被定义时,其第一个元素对应的数组下表是0而不是1.所以,上述数组定义后,数组成员的下表最大值为9,程序运行后,会造成数组下表越界的错误产生。

经验表明,在软件开发中大量的错误都发生在输入或输出范围的边界上,而不是发生在输入/输出范围的内部。开发人员最容易在边界上犯错误,所以,针对软件的各种边界情况设计测试用例,可以达到更好的测试效果。这就需要采用边界值分析法来设计测试用例,接下来看看边界值分析法的使用。

边界值划分法概述

边界值分析法(Boundary Value Analysis,BVA)的测试用例来自于等价类的边界,是等价类划分法的补充。根据边界值划分法,等价类分析法中的测试 数据不是选取等价类中典型值或任意值,而是应当选取正好等于、刚刚大于、刚刚小于边界的值作为测试数据

使用边界值分析法设计测试用例,首先应该确定他的边界。有些边界并不是需求中直接给出的,需要我们分析出来,比如一些常见的边界值。

  • 对于int类型的整数而言,-215和215-1是他的边界,也就是-32768和32767是边界
  • 对于屏幕的光标焦点来说,屏幕上光标的最左上、最右下的位置是他的边界
  • 对于报表来说,报表的第一行和最后一行是它的边界
  • 对于数组来说,数组元素的第一个和最后一个是他的边界
  • 对于训话条件来说,循环的第0次、第1次和倒数第2次以及最后一次是他的边界

同等价类划分法一样,边界值分析法也应该遵循一定的原则:

  • 如果输入/输出条件规定了值的范围,则应该取刚达到这个范围的边界的值,以及刚刚大于最小值以及刚刚小于最大值的值作为测试输入数据。但为了检查输入数据超过极限值时系统的情况,还需要考虑健壮性取值,会增加一个略超过最大值的和略小于最小值的取值。

  • 例如,假设有一个函数f(x),唯一的输入参数x的取值范围为1<=x<=31.根据这条原则的第一句,他的取值应该为{1,2,30,31}.考虑健壮性测试的话,函数fx中的x的边界取值就变为{0,1,2,30,31,32}

  • 如果有多个输入/输出变量,可以用边界值+正常值的组合模式,即其中一个变量取边界值,其他变量取正常值。

例如,有一个二元函数f(x,y),有2个输入变量x和y,他们的取值范围分别为1<=x<=31,y的取值范围1<=y<=12,如何运用边界值法来设计数据呢?运用边界值法可知x和y的健壮性边界取值分别为{0,1,2,30,31,32}和{0,1,2,11,12,13}。先依次取x边界值,y固定为一个正常值,然再依次取y的边界值,x固定为一个正常值。为保险起见,我们还会对x和y各取一个中间值(如x=15以及y=6,也可以取其他有效值)来进行测试。综上,设计测试数据如下,对x和y的组合输入就应该为{<0,6>,<1,6>,<2,6>,<30,6>,<31,6>,<32,6>,<15,6><15,1><15,2>,<15,11>,<15,12>,<15,13>}

同样的对于有3个输入条件的程序,边界值法的运用也如此。

例如,有一个三原函数f(x,y,z),有三个输入变量:x,y,z。他们的取值范围分别为1<=x<=31,1<=y<=12,1949<=z<=2050.那么测试数据应该为{<0,6,2000><1,6,2000>,<2,6,2000>,<30,6,2000>,<31,6,2000>,<32,6,2000>,<15,6,2000>,<15,0,2000>,<15,1,2000>,<15,2,2000>,<15,11,2000><15,12,2000>,<15,13,2000>,<15,6,1949>,<15,6,1950>,<15,6,2049>,<15,6,2050>,<15,6,2051>}

通常,一个参数如果有上下界,就会有6个边界取值,那么对于有n个输入变量的程序,健壮性测试采用边界值分析程序会产生6n+1个测试数据,也就是是6n+1条测试用例,但也有例外,这要具体视边界值的约束而定。

边界值分析法案例

有一个计算长方体体积的程序,要求输入长宽高,分别用xyz来表示,取值均为1-100.如何对长宽高分别采用边界值分析法来设计测试用例呢?

【解析】

xyz的健壮性边界取值均为{0,1,2,99,100,101}再增加一条中间值,设计的健壮性边界值测试用例如下表所示

用例编号xyz预期输出
长方体-00150500z 超出范围
长方体-002505012 500
长方体-003505025 000
长方体-004505050125 000(中间值)
长方体-005505099247 500
长方体-0065050100250 000
长方体-0075050101z 超出范围
长方体-00850050y 超出范围
长方体-009501502 500
长方体-010502505 000
长方体-011509950125 000
长方体-0125010050247 500
长方体-0135010150y 超出范围
长方体-01405050x 超出范围
长方体-015150502 500
长方体-016250505 000
长方体-017995050125 000
长方体-0181005050247 500
长方体-0191015050x 超出范围

小结

边界值一般和等价类一起搭配应用,找到有效数据和无效数据的分界点(最大值和最小值)及其两边的点进行测试,形成一套完整的测试方案。边界值数据本质上可以归为有效和无效的范畴,但从测试技术角度来讲,需要单独拿出来测试。

边界值分析法和等价类划分法之间最大的区别就是,边界值分析考察正处于等价类划分的边界或在边界附近的状态

边界值分析通过选择等价类边界作为测试用例,不仅重视输入条件边界,而且也必须考虑输出域边界。比如某程序需要输出一个0到100的数,那么针对输出域也要取边界进行测试。

图片描述

相关内容

热门资讯

纳斯达克中国金龙指数涨幅扩大,... 每经AI快讯,12月19日,纳斯达克中国金龙指数涨幅扩大,现涨1.0%,最新报7651.42点。
中关村科技租赁(01601)就... 中关村科技租赁(01601)发布公告,于2025年12月19日,公司作为出租人与承租人II青海电子材...
A股深夜重磅!千亿级大并购来了 转自:北京日报客户端交易对价1335.98亿元!12月19日晚间,中国神华披露了购买12家企业的最新...
冰雪节里暖意足 长春贴心服务赢... 银装素裹迎宾客,暖心服务暖人心。12月19日,第29届长春冰雪节开幕式举行,活动举办地长春冰雪新天地...
突发!连续多年财务造假,贵州百... 文/帅可聪12月19日晚,中国证监会贵州监管局(下称“贵州证监局”)发布通报,近日,对贵州百灵(维权...