数据测试是功能测试的主要内容,或者说功能测试是主要的手段之一就是借助数据的输入/输出来判断功能能否正常运行。在进行数据输入测试时,如果需要证明数据输入不会引起功能上的错误、或者其输出结果在各种输入条件下都是正确的,就需要将可输入数据域内的值完全尝试一遍(即穷举法),这实际是不现实的。假如一个程序P有输入量11和12及输出量0,在字长为32位的计算机上运行。如果Il和12均取整数,则测试数据的最大司能数目为:2”×2”=2“。如果测试程序P,采用穷举法力图无遗漏地发现程序中的所有错误,且假定运行一组(11,12)数据需1毫秒, 天工作24小时,一年工作365天,则2“组测试数据需5亿年。说明穷举的黑盒测试通常是不能实现的,因此只能选取少量有代表性的输入数据,以期用较小的代价暴露H{较多的错误。
为了解决这个问题,人们就设想是否叫以用一组有限的数据去代表近似无限的数
据,这就是等价类划分法的基本思想。等价类划分法选择适当的数据子集来代表整个数据集,通过降低测试的数目实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。等价类划分法基于对输入或输出情况的评估,然后划分到两个或更多子集来进行测试,即将所有可能的输八数据(有效的或无效的)划分成若干个等价类,从每个等价类中选择一定的代表值进行测试。其中有一个假定:等价类·p的所有数据对于暴露程序中的错误是等效的,即如果用这个等价类中的代表值作为测试用例未发现程序错误,那么该类中其他
的测试用例也不会发现程序的错误。有时,在确定输入数据的等价类时常要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。这样就将漫无边际的随机测试变为具有针对性的有效测试,极大地提高了测试效率。先举一个抽象并能完全描述等价类划分法的例子,假设函数需要3个参数(A、B、c),
每个参数的输入域分别在以下的子集里(参见图6—2):
A=Al uA2UA3: B=B1 UB2uB3: C=C1 UC2
C=C1 UC2
文章来源于领测软件测试网 https://www.ltesting.net/