在读微软的软件测试之道这本书的时候,讲到了测试用例的设计方法分为: 等价类划分、边界值分析、组合测试等。
在讲解等价类划分(ECP)设计测试用例的时候,举的例子是输入年、月、日,来生成下一个日期的测试用例设计。
测试用例的设计方法大家不难想到是等价类划分,划分出等价类的集合,然后再组合生成测试用例。
然而接下来讲到组合测试(例PICT),其生成测试用例的方法是对不同参数通过不同的组合生成的测试用例,这时候我就有了疑问:
等价类划分生成测试用例也是组合而成的,组合测试用例也是通过算法组合产生的,两者的关系是什么? 有什么区别呢?
怀着这样的疑问我微博私信请教了一位微软的大师 史亮,得到了如下的回复:
组合测试的第一步通常是确定参数集合,第二步往往是决定一个参数的取值集合。
第二步的常用技术就是等价类划分。如果是这个顺序,那么组合测试就紧密地依赖于等价类划分。
现在是不是稍微理清了等价类划分和组合测试之间的关系呢?
微软的软件测试之道这本书中,在讲等价类划分的时候用了一个例子是设计一个年、月、日系统的测试用例。
首先是划分等价类的集合,然后是根据这些不同的集合来组合生成测试用例, 这里生成测试用例的方法跟组合测试(PICT)所用的方法是不是一样的呢?或者说这个年、月、日系统的测试用例能不能也用组合测试来生成测试用例呢?
答案是:日期是不能简单地使用等价类划分+组合测试来处理的,因为年月日之间有相互约束,而且日期模型在特定的年份和日期上特殊之处。