边界值分析法

        边界值分析法边界值分析法的概念边界值分析法(Boundary Value Analysis,BVA)的测试用例来自于等价类的边界,是一种补充等价类划分法的测试用例设计技术。在软件设计中大量的错误发生在输入或输出范围的边界上,而不是发生在输入 / 输出范围的内部。因此针对各种边界情况设计测试用例,可以达到更好的测试效果。在实际的软件设计过程中,会涉及大量的边界值条件和过程,这里有一个简单的 Java 程序的例子:

double[] test = new double[4];
for(int i = 1; i <= 4; i ++)
    test[i] = i;

        在这个程序中,目标是为了创建一个拥有 4 个元素的一维数组,看似合理,但是,在Java 语言中,当一个数组被定义时,其第一个元素所对应的数组下标是0 而不是1。所以,上述数组定义后,数组中成员的下标最大值为 3,上述程序运行后,会造成数组下标越界错误的产生。 使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于、刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。

        在应用边界值分析法设计测试用例时,应遵循以下几条原则:

◇ 如果输入条件规定了值的范围,则应该选取刚达到这个范围的边界值,以及刚刚超过这个范围边界的值作为测试输入数据。

◇ 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数多1、比最大个数少 1 的数作为测试数据。

◇ 根据规格说明的每一个输出条件,分别使用以上两个原则。

◇ 如果程序的规格说明给出的输入域或者输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个元素和最后一个元素作为测试用例。

◇ 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界值作为测试用例。

◇ 分析规格说明,找出其他可能的边界条件。

比如,有两个输入变量 x 1(a≤x 1≤b)和 x 2(c≤x 2≤d)的程序的边界值分析测试用例的输入项可以这样设计:{<x 1 nom,x 2 min>,<x 1 nom,x 2 min+1>,<x 1 nom,x 2 nom>,<x 1 nom,x 2 max>,<x 1 nom,x 2 max-1>,<x 1 min,x 2 nom>,<x 1 min+1,x 2 nom>,<x 1 max,x 2 nom>,<x 1 max-1,x 2 nom>}

【例 1】有二元函数 f(x,y),x、y 为整数,其中 x∈[1,12],y∈[1,31]。则采用边界值分析法设计的测试用例输入项是:{<6,1>,<6,2>,<6,15>,<6,31>,<6,30>,<1,15>,<2,15>,<12,15>,<11,15>} 

【例 2】有三元函数 f(x,y,z),x、y、z 为整数,其中 x∈[1900,2100],y∈[1,12],z∈[1,31]。请写出该函数采用边界值分析法设计的测试用例。{<2000,6,1>,<2000,6,2>,<2000,6,31>,<2000,6,30>,<2000,1,15>,<2000,2,15>,<2000,12,15>,<2000,11,15>,<1900,6,15>,<1901,6,15>,<2100,6,15>,<2099,6,15>,<2000,6,15>}

推论 1:对于一个含有 n 个变量的程序,采用边界值分析法测试程序会产生 4 n+1 个测试用例。

健壮性测试采用边界值分析法设计测试用例时,为了检查输入数据超过极限值时系统的情况,还需要考虑采用一个略超过最大值(max+)及略小于最小值(min-)的取值。

例 1 考虑健壮性测试时的边界值分析法设计的测试用例输入项是:{<0,15>,<1,15>,<2,15>,<11,15>,<12,15>,<13,15>,<6,15>,<6,0>,<6,1>,<6,2>,<6,30>,<6,31>,<6,32>}。

【例 3】有一个成绩管理系统,在测试考生考试成绩的输入(不计小数点)时,采用边界值分析法设计的健壮性测试用例输入项是:{-1,0,1,50,99,100,101} 推论 2:对于一个含有 n 个变量的程序,健壮性测试时采用边边界值分析法测试程序会产生 6 n+1 个测试用例。


实践案例

        一个计算第二天日期的 NextDate 程序,规定输入的年、月、日的变量分别为 month、day、year,相应的取值范围为 year∈[1950,2050],month∈[1,12],day∈[1,31],下表给出了边界值分析测试用例。

 实验内容

        某一个计算长方体体积的程序要求输入长方体的长、宽、高,分别由 3 个整数 x、y、z 来表示。x、y、z 的上界为 100,下界为 1。

要求列表写出健壮性边界值分析测试用例。

表 1 长方体体积计算程序健壮性边界值分析测试用例

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐