摘要

变异测试是一种有效的基于故障的测试方法,但大量冗余变异体所带来的昂贵的测试成本问题,阻碍了它在实际工程开发中的应用.为解决该问题,本文针对程序中的顺序语句所产生的变异体,基于故障的可达-感染-传播模型,提出了使用区间抽象域来表示程序状态,通过区间运算判断变异体之间冗余关系的算法;针对程序中的条件语句,基于谓词故障层级,分别给出了面向简单谓词和复合谓词的冗余变异体选择算法.并对这两种算法对冗余变异体的判定效果进行了分析,最后给出了在分层抽样背景下,非冗余变异体生成的约束边界条件.对Siemens和开源项目等共8个工程进行了实验,并与随机选择法进行了对比.结果表明,本文所提方法在减少变异测试时间成本的同时,可以保持较高的变异得分.