论文部分内容阅读
组合测试是一种重要的软件测试方法。它以覆盖表作为测试用例集,能够以少量的测试用例有效地检测由软件各参数之间的交互作用所触发的失效。 如何得到尽可能小规模的覆盖表是组合测试的关键也是极具挑战性的问题。已有的生成方法,通常会产生大量的冗余组合,使得生成的覆盖表规模较大。于是,人们提出了覆盖表约减的方法:重复不断的替换覆盖表中某些项的值,产生并删除冗余行,从而达到减小覆盖表规模的目的。 如何确定组合测试的覆盖强度也是人们研究的重点问题。经验的结果表明:几乎所有的软件失效都是由少量参数间的交互作用触发的(不超过6)。它说明τ-way测试(较小的τ)就能和穷尽组合的测试几乎同样有效。 本文主要研究以上两个问题,具体工作包括: 1.改进了覆盖表约减的随机算法。证明了组合冗余是导致覆盖表规模较大的根本原因,归纳了覆盖表约减的核心思想。约减的随机算法已被证明非常有效,在理论分析的基础上,提出了一种改进的算法。通过对近300个覆盖表的实验表明,改进的算法更加有效。 2.提出了一个预测覆盖表约减程度的度量。针对约减规模较大的覆盖表比较耗时的问题,我们提出了一个预测约减程度的度量。这也是一些学者提出但尚未解决的问题。实验数据表明,提出的度量相当准确。 3.提出了本质组合的概念,并分析其性质。相比于传统的组合测试只关心组合覆盖率,提出了组合与代码之间的三个映射关系,证明了本质组合是保证代码覆盖最关键的组合,反映了参数之间的交互作用。覆盖本质组合的测试用例集,能实现代码的最大覆盖。 4.基于本质组合,对组合测试覆盖强度进行建模和理论分析。建立一个概率模型,从理论上证明对于n个参数的系统,几乎所有本质组合的维数都不超过logn。这个结果表明几乎所有的交互作用都是发生在logn个参数之间。 5.基于本质组合,研究了组合与软件缺陷的关系。针对组合测试的故障诊断,提出了缺陷组合的概念,分析了缺陷组合与已有的重要结果——极小失效组合的关系。研究结果表明缺陷组合是组合测试故障诊断的最理想目标,极小失效组合是实现这个目标的重要途径。