论文部分内容阅读
软件测试用于检测软件中可能存在的缺陷,从而改善软件质量。软件测试的一个核心问题是生成高质量的测试用例集,从而检测软件中的缺陷。作为一种面向缺陷的测试技术,变异测试不仅能有效评价现有测试用例集的质量,也能辅助生成高质量的测试用例集,其准则是杀死一定数量的变异体。然而,为数众多的变异体导致高昂的测试代价,严重影响这一技术在实际测试中的广泛应用。已有的基于变异测试的测试用例生成方法,其效率十分低下,因此,研究新的测试用例生成方法是非常必要的。通过约简变异体数量,也非常有助于提高测试用例的生成效率。本文基于变异测试研究新的测试用例生成方法,以高效生成具有很高缺陷检测能力的测试用例集。首先,针对变异测试用例生成问题,提出基于集合进化的测试用例生成方法。所提方法首先基于弱变异测试转化方法,将变异前后的语句组合成能够反映杀死对应变异体的必要性条件,并利用组合后的条件语句构建变异分支。因此,覆盖变异分支真分支的测试用例集,能够以弱变异测试准则杀死对应的变异体。然后,将所有变异分支集成到原程序中,形成新的被测程序,从而将杀死变异体的变异测试问题,转化为覆盖变异分支真分支的分支覆盖测试问题。接着,基于转化后的新程序,建立新的测试用例生成问题的数学模型,对该模型的一次求解,能够生成杀死所有变异体的测试用例集。最后,在利用集合进化方法求解上述模型时,设计具有针对性的适应度函数和进化策略。所提方法能够显著降低基于变异测试的测试用例生成成本。然后,转化后的新程序中集成了为数众多的变异分支,显著增加了转化后新程序的复杂度,从而降低了测试用例生成的效率。针对这一问题,提出基于占优关系的变异体约简方法。所提方法在转化后的新程序中,分析变异分支之间的占优关系,由于覆盖非被占优变异分支的测试用例集,也能够覆盖被占优变异分支,因此,被占优变异分支对应的变异体是冗余的,而非被占优变异分支对应的变异体则是约简后的变异体。在分析非被占优变异分支时,构建占优关系图,并利用图中入度为0的顶点,识别非被占优变异分支。由于仅需覆盖非被占优变异分支,生成的测试用例集就能够以弱变异测试准则杀死所有变异体,因此,所提方法能够约简变异体数量,从而提高测试用例的生成效率。接着,为了提高分析占优关系的效率,增强基于占优关系约简变异体方法的实用性,提出统计占优分析方法。所提方法通过建立统计分析模型,利用测试用例集自动检测新程序中变异分支之间的占优关系,并构建占优关系图。根据占优关系图中入度为0的顶点,得到非被占优变异分支,其对应的变异体就是约简后的变异体。所提方法能够自动检测占优关系,从而有效约简变异体。最后,研究表明具有优先级排序的测试用例集,使得缺陷检测能力强的测试用例能够优先执行,从而降低实际软件测试中缺陷检测的成本。鉴于此,提出基于占优度的测试用例生成方法。所提方法提出占优度的概念,以确定非被占优变异分支的顺序,占优度在数值上等于非被占优变异分支占优的变异分支数量,即占优图中对应顶点的出度;并基于占优度提出两种策略,以选择非被占优变异分支,优先生成缺陷检测能力强的测试用例。此外,针对建立的测试用例生成问题的数学模型,设计和实现了集合进化测试用例生成的原型系统,并详细介绍该系统的使用方法。本文研究成果丰富了变异测试理论,降低了变异测试的成本,提高了测试用例的生成效率。