论文部分内容阅读
测试用例是软件测试技术中的核心角色,测试用例的人工生成不能满足现代软件开发的需要,使得测试用例自动生成成为研究热点。在测试用例自动生成方法中,有基于规格说明和基于结构两种生成的方法。人工智能技术:粒子群优化算法、遗传算法、BP神经网络算法、混沌理论等也被用于对测试用例自动生成的研究。路径测试是白盒测试中覆盖强度最强的测试,因此基于结构的路径测试用例自动生成一直受人关注。目前,对单路径测试用例自动生成方法的研究较多,在文献中采用了最常见的单路径测试用例自动生成方法,如:随机法、动态法和符号执行法等。全路径是程序的所有可能路径,如果能对程序的所有可能的路径都进行测试则称为全路径测试,单个函数中全路径测试的优点是:测试不需指定路径,因为指定路径本身就比较麻烦;全路径的测试用例覆盖了该程序的所有可执行路径,比较全面的测试了程序的可行路径;对于庞大的程序结构进行人工的穷举路径不可取,因此如何设计出一种基于全路径的搜索方法对实际应用具有重大意义、在论文中以单个函数的全路径为背景,研究测试用例自动生成的方法。本文设计了一个基于SA (Source Analysis)规则的全路径测试用例自动生成系统的框架。这个框架主要由:初始化组件、程序解析组件、优化组件和结果分析组件四部分组成。论文对程序解析组件和优化组件的功能和算法实现进行了较详细地讨论。程序解析组件的工作主要有两个:一是对测试目标进行静态解析,主要着重于源程序的语义分析和语法分析;二是运用SA规则对源程序进行逐行解析,按照关键字分析程序的结构并插装相应的节点,插装的目的是记录执行的语句,得到有向无负权图和插装后的目标函数。SA规则中制定了构造源程序的有向无负权图的方案,有向无负权图可以排除源程序的回路,简化源程序中的路径。优化组件的工作主要有三个:一是不重复路径集的获取,在有向无负权图上搜索所有不重复的路径,并且存放到不重复的路径集合中;二是将初始化的测试数据放到插装后的源程序中执行,得到测试数据的实际执行路径;三是计算已执行路径的相似度,在本工作中,制定了使用粒子群优化算法选择测试用例集的方案。若满足预先设定的阈值,则此组测试数据即为较为合适本程序的测试用例,若不满足,则继续使用粒子群算法进行调整。本文通过一个具体的测试用例自动生成的例子,证明基于SA规则的全路径测试用例自动生成方法是可行的。