论文部分内容阅读
软件测试可以被视为为了发现错误而执行程序的过程,其中设计和生成有效的测试用例是决定其质量的重要因素之一。作为人工测试的重要补充,测试数据自动生成技术可以节省测试时间,降低开发成本,拓展测试人员的能力,在许多测试领域发挥着不可替代的作用。多年来,人们对它进行了广泛而深入的研究,取得了许多研究成果,使之在功能性测试、结构性测试、性能测试等领域得到广泛应用。本文从组合测试和演化测试的角度,对功能性测试和结构性测试的测试数据自动生成技术进行了深入研究,主要工作包括:(1)在功能性测试领域,基于组合测试模型,提出了若干种测试数据自动生成方法,有助于获得高质量的测试数据集;(2)通过对程序分析与切片技术的研究,探索了结构性测试的基础理论;(3)提出了若干种结构性演化测试方法及优化技术,能够自动生成满足测试目标的测试数据。论文工作的主要成果表现在以下几个方面:在组合覆盖测试模型的基础上,提出了一种基于解空间树的组合测试数据生成方法,所生成的测试数据集与同类方法相比具有一定的特点和优势。提出两种多因素组合测试数据的生成算法,可作为已有方法的有益补充,适用于关键系统的测试。针对面向方面程序(aspect-oriented program)的特点,提出了一种新的程序依赖性分析与切片方法,可以准确地计算面向方面程序的控制依赖和数据依赖。结合程序分析方面的研究,提出了两种测试数据生成方法,可以分别生成满足多重条件覆盖和改进的条件/判定覆盖的测试数据集。提出了一种针对路径覆盖的演化测试方法以及若干种适应值函数的构造方法,可以自动生成测试数据以覆盖指定的路径。实验表明,该方法的效率显著优于随机测试和人工测试。提出了一种自适应的演化测试动态优化方法,可以有效地解决进化停滞问题。在演化测试的静态配置优化方面,通过大量的实验分析,总结出一批针对结构性演化测试的规则与建议,对演化测试的应用有较高的参考价值。