定义:
边界值分析法是一种重要的测试用例设计方法。主要是关注输入或输出范围的边界情况,用来测试系统在边界条件下的处理能力。假定大多数的错误是发生在各种输入条件的边界上,如果在边界附件的取值不会导致程序出错,那么其它的取值导致程序错误的可能性也很小,在边界值法中,有三个非常重要的名词:上点、离点、内点。
上点:也就是处于边界上的点,如果域的边界是封闭的,上点就在域的范围内;如果域的边界是开放的,上点就在域的范围外。
离点:就是离上点最近的一个点,如果域的边界是封闭的,离点就在域的范围外,如果域的边界是开放的,离点就在域的范围内。
内点:域的范围内的任意一个点。
举个例子,使大家可以更好的理解,如果一个程序处理年龄,规定年龄范围是 18 到 65 岁:
上点:65岁
离点:17 岁和 66 岁。
内点:19 到 64 岁之间的任意年龄。
另外,关于域,也就是区间的定义,有三种类型,分别是:开区间、闭区间、半开半闭区间。
开区间:不包括边界值。
闭区间:包括边界值。
半开半闭区间:一种是左开右闭,一种是左闭右开。
仍然使用上面的处理年龄的程序来举例子:
开区间:一般用小括号表示,年龄范围是(18, 65)表示 18 不包含在内,65 也不包含在内。
闭区间:一般用中括号表示,年龄范围是 [18, 65],18 和 65 都包含在内。
左开右闭区间:(18, 65],18 不包含,65 包含。
左闭右开区间:[18, 65),表示 18 包含,65 不包含。
以下用三张图,分别表示不同区间与上点、离点、内点的关系:
原则:
1、如果输入或输出的条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例数据。
2、如果输入或输出的条件规定了最大数值,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试用例数据。
3、如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意选取有序集合的第一个和最后一个元素作为测试用例数据。
4、如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例数据。
边界值法的条件:
程序输入或输出条件明确了一个值的取值范围,或是规定了值的个数,或是输入条件明确了一个有序集合。
使用边界值法设计测试用例的步骤:
1、分析输入参数的类型:从测试规格中分析得到输入参数类型。
2、确定边界:运用域测试分析方法确定域范围的边界(上点、离点与内点)。
3、形成测试项:选择这些上点、离点与内点或者这些点的组合形成测试项。
总结:
边界值分析法的主要特点是可以相对较少的测试用例来覆盖关键边界,并且具有较强的针对性,着重测试边界情况,容易发现边界处的错误。然而,边界值分析法仍然存在一定的局限性,使用边界值分析法设计测试用例时,可能会忽略某些内部数据的处理情况导致无法完全保证系统的正确性,所以,通常会与其他测试方法结合使用,例如:等价类划分法。