论文部分内容阅读
面向方面编程(AOP)作为一种新的软件开发技术,为系统带来了很多的优点,但是方面和传统模块中存在的各种依赖关系以及AOP带来的新特征给测试带来了新的问题。由于AOP引入了新的特征,使得目前应用于面向过程和面向对象成熟的测试方法不能完全适用于面向方面程序,需要在已有的方法上进行扩展或者提出新的面向方面程序软件测试技术,因此对AOP测试方法进行研究是非常必要的,具有重要的理论意义和实用价值。针对AOP的特征,本文提出了一种基于控制流与数据流的结构测试方法,在前人的基础上完善了一种测试覆盖标准,并将粒子群优化算法(PSO)应用于面向方面测试数据自动生成中,以提高生成效率。主要内容包括:首先,阐述了AOP的可测性、AOP测试的必要性与特殊性,并对目前应用于AOP的测试方法进行了分析与比较。虽然大多数方法设计了测试覆盖标准,如语句覆盖、分支覆盖和路径覆盖等,但是还是不能保证测试完全充分。目前对面向方面测试数据自动生成方法研究较少。其次,提出了一种基于控制流与数据流的结构测试方法。该方法采用模块定义使用控制(BDUC)表达式表示待测AOP程序的控制流与数据流。根据BDUC表达式生成测试子路径,然后生成测试数据覆盖这些子路径。为了达到充分覆盖,本文在前人研究的基础上完善了一种测试覆盖标准,此测试覆盖标准包括两种基于控制流的测试覆盖标准,以及一种基于数据流的测试覆盖标准。实例研究和实验结果表明该测试方法通过增加少量的测试数据,达到了更多的子路径覆盖,从而使得测试覆盖更加充分。在此工作基础上,本文设计并且部分实现了一种面向方面控制流与数据流的测试工具(CDTT-AJ),该工具主要包括BDUC表达式生成器、测试需求生成器、程序插装器、测试执行器、测试度量器五个部件,外部输入为待测源程序、测试覆盖标准和测试数据,输出测试报告。最后,提出了一种基于粒子群优化算法的面向方面测试数据自动生成方法。该方法基于BDUC表达式和完善后的测试覆盖标准生成测试子路径,然后利用粒子群优化算法自动生成覆盖这些子路径的测试数据。实验结果表明采用该方法生成完全覆盖待测程序子路径的测试数据与利用随机算法以及遗传算法生成测试数据相比较,所需要的迭代次数更少,且程序规模越大该方法优势越明显。