论文部分内容阅读
软件测试是保证和提高软件质量的一种重要手段。在进行软件测试时,经常会碰到oracle问题,即程序的预期输出难以确定。蜕变测试通过检齐多个执行结果之间的关系来测试程序,有效地解决了oracle问题。但是,已有的研究工作普遍存在缺少适当的覆盖准则、原始测试用例的生成盲目性较大、蜕变关系的选取策略缺乏实用性、与其他测试或验证方法的结合难以应用于大型程序、缺少自动化蜕变测试工具等缺点。
本文通过对现有的蜕变测试技术进行完善,一定程度上解决了蜕变测试充分性分析、蜕变测试过程优化、衍生测试用例自动生成和新测试方法构造等方面所面临的问题,主要工作包括:(1)在蜕变测试充分性分析方面,研究制定适用于蜕变测试的路径覆盖准则及满足它们的测试用例集生成方法。(2)在蜕变测试过程优化方面,研究基于程序路径分析的原始用例选取和有效蜕变关系构造。(3)在衍生测试用例生成方面,研究基于遗传算法的衍生测试用例自动化生成方法。(4)研究使用蜕变方法对演化测试技术进行改进。
论文的主要成果表现在以下几个方面:
·研究了面向路径覆盖的蜕变测试技术。从程序分析技术出发,结合已有的白盒测试覆盖准则,并考虑到蜕变测试的特殊性,提出了三种严格程度不同的蜕变测试准则,从而使得蜕变测试用例的生成过程更加规范化。同时还给出了一组能够自动地生成满足这些覆盖准则的测试用例集的算法,与传统方法相比,这些算法生成的测试用例集具有更好的检错效果。
·探讨了蜕变测试过程的优化方法。提出了基于覆盖准则选取部分衍生用例作为下一轮原始用例的迭代蜕变测试技术。研究了根据命题逻辑的推理规则将蜕变关系结合以得到检错能力更强的复合关系的方法。给出了使用路径组合法构造有效蜕变关系的算法,能够在确保路径覆盖率的前提下降低程序的执行次数。这些方法从原始用例的选取和蜕变关系的构造入手,极大地提高了蜕变测试的效率。
·研究了针对复杂蜕变关系的衍生测试用例自动化生成方法。从蜕变关系的结构出发,首先根据关系蕴含的等式信息构造适应值函数,在此基础上使用遗传算法自动地搜索满足适应值函数的测试用例。实验结果表明,衍生用例的命中效率主要取决于蜕变关系的结构和原始测试用例的取值。
·研究了使用蜕变关系改进适应值函数以提高演化测试搜索效率的技术。在搜索特殊用例时,运用蜕变关系作为适应值函数构造的辅助条件,在比较大的范围内搜索用例:既可以通过直接搜索命中目标,也可以经历演化生成和蜕变计算两个阶段而间接获取用例。实验结果表明,改进方法能够大幅度提高特殊用例的搜索效率,同时也为输出结果的验证提供了方便。