实践证明,程序往往在输入输出的处理边界情况下发生错误。边界情况指输入等价类
和输出等价类边界上的情况,检查边界情况的测试用例是比较高效的,-,J以蛰出更多的错误。如上面介绍的处理报表日期的例子,等价类划分法就忽略了几个边界条件,如200001(边界有效最小值)、202012(边界有效最大值)以及边界无效值199901、199912、202101、202112等,而程序往往会在这些地方出错。这就是下面要讨论的边界值分析法的优点。边界值分析法就是在某个变量范围的边界上,验证独立的输入/输出是否正确的测试方法。边界值分析法取决于变量的范围和范围的类型,确认所有输入的边界条件或临界值,然后选择这些边界条件/临界值及其附近的值来进行相关功能的测试。边界值分析法处理技巧有:
· 如果输入条件规定了值的范围,则取刚达到这个范围的边界值(如上述200001、
202012),以及刚刚超过这个范围边界的值(如上述199912、202101)a
· 如果输八条件规定了值的个数,则用最大个数、最小个数、比最大个数多1个、比最小个数少1个的数等作为测试数据。
· 根据规格说明的每一个输出条件,分别使用以上两个规则。
· 如果程序的规格随明给出的输入域或输出域是有序集合(如有序表、顺序文件等),则应选取集合的第一个和最后一个元素作为测试数据。
· 如果程序用了一个内部结构,应该选取这个内部数据结构的边界值作为测试数据。
· 分析规格说明,找出其他可能的边界条件。
这里给出测试一个排序程序的边界值分析法的例子,其边界条件有:
· 排序序列为空。
· 排序序列仅有一个数据。
· 排序序列为满,用猜错法补充一下测试用例。
· 排序序列已经按要求排好序。
· 排序序列的顺序与要求的顺序恰好相反。
· 排序序列中的所有数据全部相等。
因为错误最容易发生在边界值附近,所以边界值分析法对于多变量函数的测试很有效,尤其是对于像c,C++这种数据类型要求不足很严格的语言有用。缺点是对布尔值或逻辑变量无效,也不能很好地测试不同的输入组合。边界值分析法也币具有随机性,常被看做是等价类划分法的一种补充,两者结合起来使用史有效。