论文部分内容阅读
信息技术高速发展,人们对于计算机的依赖日益增强。软件作为人们与计算机硬件的交互工具,也在呈现爆发式的增长。软件测试作为保证软件质量和可靠性的重要手段,受到了人们的广泛关注。 从是否对程序源码进行分析的角度,软件测试技术可以分为黑盒测试和白盒测试两种。黑盒测试不需要对源码进行分析,而等价类划分技术作为一种有效减少测试用例个数的技术手段广泛应用于黑盒测试。等价类划分的目的在于把输入空间划分为多个不相交的子空间,子空间中的元素可以认为具有相同的程序逻辑。因此,只需要从各个子空间中选取代表性的元素就可以测试程序的总体逻辑,大幅减少了用例个数。然而,程序规模不断扩大导致输入参数个数也不断增加,加之程序的规格说明可能不够充分,都使得正确的等价类划分变得困难。 参数屏蔽是指当一个(或多个)参数符合一定条件时,导致部分参数无效的情况。参数屏蔽存在时,可能导致一些测试技术生成的用例质量下降,达不到原先期望的测试标准。目前已有相关研究致力于在参数屏蔽的条件下进行测试生成,然而参数屏蔽的条件仍然是通过人工发现的方式。随着软件参数个数的增加,人工检测参数屏蔽的方式不仅费时费力而且存在检测不完全的问题。因此,如何自动化检测参数潜在的屏蔽关系具有重要意义。 本文提出一种自动化探测参数的等价类以及参数屏蔽的方法,基于运行时数据进行特征提取,使用聚类与决策树分类技术进行探测。本文中的方法可以作为黑盒测试中测试数据生成的预处理步骤。方法中,首先生成一些输入数据,执行待测程序并收集一些可以反映程序运行时行为的信息。方法中使用程序动态分析工具来提取这些信息。利用聚类算法,使得具有相似程序行为的输入数据被归并到同一类簇中。利用决策树分类算法对聚类结果进行分析,得到类簇中参数满足的约束关系。最后,从分类决策树中找出参数的等价类以及屏蔽关系。本文设计了一套完整的流程用于以上的参数逻辑探测,并对一些广泛使用的程序进行实验,实验结果表明本文方法可以有效发现参数等价类以及参数间的屏蔽关系。