软件测试之组合爆炸问题解决方法

方法一:两两组合 代替完全组合

绝大部分的缺陷是在两个取值冲突的时候出现的,在时间不允许的情况下,两两测试就可以满足需求,对于一般商业软件就可以满足需求了,软件分为一般商业软件和使命/性命悠关的软件。

软件测试之组合爆炸问题解决方法

在变量越多的时候,完全组合爆炸式增长,而两两组合几乎是线性增长。

方法二:正交试验法

依据伽罗华理论(Galois theory),从大量的(实验)数据(测试例)中 挑选适量的、有代表性的点(条件组合),从而合理地安排实验(测试) 的一种科学实验设计方法 。

软件测试之组合爆炸问题解决方法

由图中可以知道,每个元素都取到三个值,每个面都有三个点,每个截面也是三个点。

软件测试之组合爆炸问题解决方法

对于这种四个因素,其每个水平数是不一样的时候,即3,2,2,2,

软件测试之组合爆炸问题解决方法

此时,取下面这个保证的覆盖率更高,九次试验就可以,可以查正交实验表

确定影响功能的因子与状态 ,看看哪些因素哪些状态,不同的取值就是水平数

软件测试之组合爆炸问题解决方法

选择一个合适的正交表 

利用正交表构造测试数据集 

方法三:分类树法

软件测试之组合爆炸问题解决方法

采用这种方法形成测试用例

 每个参数的优先级 

 参数受到的限制 

 基于缺陷模式自动产生测试(用例) 

 测试预算(时间、资源等)

PS: 从方法论看,更多体现了一种哲学的思想,例如辩证统一的方法,在测试中有许多对立统一体,如静态测试和动态 测试、白盒测试和黑盒测试、自动化测试和手工测试等。  软件测试的方法论来源于软件工程的方法论,例如有面向对象的开发方法,就有面向对象的测试方法;有敏捷方法, 就有和敏捷方法对应的敏捷测试。 

软件测试之组合爆炸问题解决方法