为了解决这个问题,人们就设想是否可以用一组有限的数据去代表近似无限的数据,这就是等价类划分法的基本思想。等价类划分法选择适当的数据子集来代表整个数据集,通过降低测试的数目实现“合理的”覆盖,覆盖了更多的可能数据,以发现更多的软件缺陷。
等价类划分基于对输入或输出情况的评估,然后划分到两个或更多子集来进行测试,即将所有可能的输入数据(有效的或无效的)划分成若干个等价类,从每个等价类中选择一定的代表值进行测试。其中有一个假定:等价类中的所有数据对于暴露程序中的错误是等效的,即如果用这个等价类中的代表值作为测试用例未发现程序错误,那么该类中其他的测试用例也不会发现程序的错误。有时,在确定输入数据的等价类时常要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。这样就将慢无边际的随机测试变为具有针对性的有效测试,极大地提高了测试效率。
等价类划分法优点是基于相对较少的测试案例,就能够进行完整覆盖,很大程度上减少了重复性;缺点是缺乏特殊案例的考虑,同时需要深入的系统知识,才能做到有效地处理。