论文部分内容阅读
随着科技的发展,社会的进步,软件已经被广泛应用到各个领域。在很多领域的应用场景中,软件的质量与可靠性至关重要。软件测试是保证软件质量与可靠性的重要手段。路径测试是软件测试中一种常用的测试方法。路径测试尝试使用合适的测试用例覆盖程序中的执行路径。如果试图覆盖的执行路径是一条不可达路径,则找不到任何测试用例可以完成覆盖目标,从而造成测试资源的浪费。大型程序功能繁多,结构复杂,通常会包含大量的不可达路径。因此,在执行路径测试之前,识别出程序中的不可达路径具有重大意义。 国内外众多专家学者提出多种不可达路径检测方法。然而仍然存在很多不足之处。在分析与研究现有检测方法的基础上,本文提出一种基于子路径扩展的不可达路径检测方法,以及一种基于层次聚类的相似执行路径生成方法,最终提出一种基于层次聚类的不可达路径检测方法,并实现了一个针对 Java语言的不可达路径检测工具。 首先,提出基于子路径扩展的不可达路径检测方法。该方法首先生成程序的子路径集,将路径的可达性问题转换为不等式组的求解问题。使用约束求解器判断子路径的可达性,可以分为:可达子路径,不可达子路径和无法判定三个部分,并对后面两部分的子路径扩展出的路径做二次可达性检测,最终获得程序中所有路径的可达性信息。可达性检测工作主要在子路径集上进行,因此有效解决了路径爆炸问题。实验结果表明该方法可以准确有效地检测程序中的不可达路径。 然后,提出基于层次聚类的相似执行路径生成方法。该方法根据软件测试中的等价类划分思想,以分支距离判断路径相似度,从而对已知的执行路径进行层次聚类,并根据得到的聚类模型生成相似的执行路径。实验结果表明该方法可以有效地生成相似执行路径,提高路径测试的效率。 其次,提出基于层次聚类的不可达路径检测方法。在基于子路径扩展的不可达路径检测方法中,在子路径扩展步骤融入基于层次聚类的相似执行路径生成方法,根据路径条件的相似性,扩展并生成相似执行路径,最终完成不可达路径的检测工作。 最后,完成针对Java语言的不可达路径检测工具。在基于子路径扩展的不可达路径检测方法中,比较关键的步骤为扩展子路径集。该工具在扩展子路径集步骤中引入基于层次聚类的相似路径生成方法,结合静态分析结果,将该步骤中引入启发式的搜索信息,使其扩展过程更加高效,节约检测资源,减少检测开销。