分量线性拟合函数驱动的测试数据自动生成技术研究

来源 :南京大学 | 被引量 : 0次 | 上传用户:kkk0089
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
测试技术是保障软件系统质量最重要和最有效的方法之一,一直以来也是工业界保证软件系统正确性最主要的手段。受计算能力和时间、空间资源的限制,测试无法穷尽软件所有可能的执行。实践中,各种测试充分度准则被用于驱动和评估测试过程。因此,面向给定的测试充分度准则,如何生成对应的测试用例集合,以驱动程序的执行覆盖相应的结构,成为测试过程中最关键的技术环节。目前测试用例的设计基本依靠人工手动完成,不仅费时费力,而且用例的有效性也难以得到保证。如何自动地为各种测试充分度准则生成有效的测试用例,已成为测试技术研究的热点问题之一。面向路径的测试覆盖准则,是应用较广泛的一种白箱测试充分度准则,它要求测试用例驱动程序沿着给定的路径执行。理论研究已经证明,不存在通用有效的算法可以为程序中任意路径生成测试输入。已有的研究工作可分为基于静态分析和基于动态执行两类方法。基于静态分析的方法无法有效的处理路径中的非线性约束条件,动态方法容易陷入局部最优点而无法发现可行的输入,它们在处理实际问题时存在很大的局限性。本文针对如何有效地为面向路径的测试覆盖准则生成测试数据这一问题,以动态执行方法为基础,研究了一种新的面向路径的测试用例生成技术。该技术通过追踪程序的执行,记录运行时刻,输入数据在路径上各个判定点的值,并据此构造分量线性拟合函数对判定点上的约束进行表示。进一步地,基于这一组分量线性拟合函数研究了寻找约束集的可行解,从而生成路径可行输入的方法,该方法对约束上的简单条件和复合条件都可以进行有效的处理。用JAVA语言实现了该方法,并开发了相应的原型工具,展开了实例研究。本文主要研究工作如下:●研究了基于动态执行方法构造分量线性拟合函数,对给定路径上每个判定节点的约束进行表示的方法。首先讨论了判定节点上约束的标准形式,引入分支函数作为这一标准形式中表达式部分的标准表示。通过插桩技术,获得每个测试输入向量执行时,各个判定节点上分支函数的值。每次输入两个向量,它们只有一个分量的值不同,计算出通过这两点的直线,就可以得到这个区间上关于该分量的线性拟合函数。·研究了对只包含简单条件判定节点的路径,在分量线性拟合函数驱动下自动生成测试数据的方法。用判定节点上的分量线性拟合函数构造待求解路径的约束系统,该约束系统的解即为一个可能的输入。实际执行该输入,要么得到可行解,要么可以根据执行结果重新修正分支节点上的分量线性拟合函数,得到新的约束系统,并重新计算可行解。这一过程同时引入了扩大各个分量输入域的方法,防止陷入局部最优点。●研究了对包含复合条件判定节点的路径,在分量线性拟合函数驱动下,自动生成测试数据的方法。方法是逐个将不满足的简单条件加入约束系统求解,直到计算约束系统得到的解可以满足整个复合条件为止。●应用上述技术,开发了一个面向路径的测试数据自动生成工具,以NRC++数值计算包中的一组程序为例进行了试验,并与随机数据生成方法进行了比较。实例研究表明,这一技术在处理非线性约束和局部最优点时比较有效。
其他文献
无线传感器网络已成为当前国际上备受关注的、涉及多学科高度交叉、知识高度集成的前沿热点研究领域。传感器技术、现代网络和无线通信等技术的进步,推动了现代无线传感器网