The invention discloses a test data automatic generation method driven by a linear fitting function. The invention obtains a path set by path analysis, then searches each path for test data that can cover the path, and generates a test data set for the source code to be tested. Among them, for each path for test data can cover the path through the following steps: firstly, through the method of constructing random input vectors, then analysis of the input vector set operation, then the input vector set by linear fitting method, through repeated iteration, test data obtained can cover the path. The method of the invention is highly automated, capable of improving the efficiency of unit testing as much as possible, reducing test costs, and supporting a path oriented test coverage criterion.
【技术实现步骤摘要】
一种线性拟合函数驱动的测试数据自动生成方法
本专利技术涉及一种测试数据自动生成方法,特别涉及自动化单元测试中路径覆盖测试的测试用例数据的生成方法。
技术介绍
测试技术是保障软件系统质量最重要和最有效的方法之一,一直以来也是工业界保证软件系统正确性最主要的手段。受计算能力和时间、空间资源的限制,测试无法穷尽软件所有可能的执行,实践中,各种测试充分度准则被用于驱动和评估测试过程。因此,面向给定的测试充分度准则,如何生成对应的测试用例集合,以驱动程序的执行覆盖相应的结构,成为测试过程中最关键的技术环节。目前测试用例的设计基本依靠人工手动完成,不仅费时费力,而且用例的有效性也难以得到保证。如何自动地为各种测试充分度准则生成有效的测试用例,已成为测试技术研究的热点问题之一。面向路径的测试覆盖准则,是应用较广泛的一种白箱测试充分度准则,它要求测试用例驱动程序沿着给定的路径执行。理论研究已经证明,不存在通用有效的算法可以为程序中任意路径生成测试输入。已有的研究工作可分为基于静态分析和基于动态执行两类方法。基于静态分析的方法无法有效的处理路径中的非线性约束条件,动态方法容易陷入局部最优点而无法发现可行的输入,它们在处理实际问题时存在很大的局限性。科学和工程问题中,通常可以采用诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个逼近于实际函数或者更加密集的离散方程与已知数据相吻合,这个过程叫做拟合。线性拟合是比较简单的拟合方式,数据点使用直线进行连接,结果是一个多边形。线性拟合简单易用,它可以在比较短的时间内得到逼近函数,缩短了算法自动生成测试数据的前 ...
【技术保护点】
一种基于线性拟合函数驱动的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的路径集PS的步骤,其特征在于,该方法还包括对路径集PS中的每一路径P执行以下步骤:S1:根据所述路径P上的各分支节点的各个判断语句,构建关于输入变量向量X的分支函数F
【技术特征摘要】
1.一种基于线性拟合函数驱动的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的路径集PS的步骤,其特征在于,该方法还包括对路径集PS中的每一路径P执行以下步骤:S1:根据所述路径P上的各分支节点的各个判断语句,构建关于输入变量向量X的分支函数Fi,j(X);所述输入变量向量X为所述待测源程序输入变量构成的向量;所述分支函数Fi,j(X)表示第i个分支节点的第j个判断语句的分支函数;S2:构建初始的输入向量集U;所述初始的输入向量集U至少包含两个输入向量;S3:计算以输入向量集U中每个输入向量作为待测源程序的输入执行待测源程序时所述路径P上的每个分支节点上的各分支函数Fi,j(X)获得分支函数值的集合V以及最远公共分支节点m;假如输入向量集U中存在一个输入向量执行待测源程序时覆盖所述路径P,则返回该输入向量作为所述路径P的测试数据;S4:根据各个分支节点上的各分支函数值的集合V以及最远公共分支节点m构建最远公共分支节点m前的每个分支节点中的各分支函数的线性拟合函数LFi,j;LFi,j表示第i个分支的第j个分支函数的线性拟合函数;S5:根据每个分支节点中的各分支函数的线性拟合函数LFi,j和待测源程序计算可行区间I;S6:在可行区间I内随机选取各输入变量的输入值得到测试数据集加入至输入向量集U中;S7:重复执行步骤S3至S6直到步骤S3至S6执行的次数达到限定的次数;S8:从输入向量集U中找出能够覆盖路径P最多分支的输入向量作为路径P的测试数据;所述步骤S5包括如下步骤:S51:计算各个分支节点中各分支函数的可行区间Di,j;S52:合并每个分支节点内的各分支函数的可行区间Di,j得到各分支节点的可行区间Di;S53:合并最远公共分支节点m前的各分支节点的可行区间Di得到可行区间I;所述可行区间I={I1,I2,...,Is},其中,s为输入变量的个数,Ii为第i个输入变量的可行区间,Ii={Ii,1,Ii,2,...,Ii,Mi},其中,Ii,j为第i个输入变量第j个可行分段区间,Mi为第i个输入变量可行分段区间数,所述步骤S6中,当Mi为1时,从Ii为第i个输入变量的可行区间的唯一分段区间Ii,1的扩展区间中随机取值构建测试数据。2.如权利要求1所述的基于线性拟合函数驱动的测试数据自动生成方法,其特征在于,所述步骤S2中...
【专利技术属性】
技术研发人员:陈鑫,成新,欧建生,周岩,鞠秀芳,
申请(专利权)人:南京大学,
类型:发明
国别省市:江苏,32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。