发明名称 一种线性拟合函数驱动的测试数据自动生成方法
摘要 本发明公开了一种基于线性拟合函数驱动的测试数据自动生成方法。本发明通过路径分析得到路径集合,然后对每个路径寻找可覆盖该路径的测试数据产生待测源代码的测试数据集。其中,对每个路径寻找可覆盖该路径的测试数据通过以下方法实现:首先通过随机方法构建输入向量集,然后对输入向量集的运行分析,再通过线性拟合的手段扩展输入向量集,经重复迭代,获得可覆盖该路径的测试数据。本发明方法高度自动化,能够尽可能的提高单元测试的效率,降低测试成本,并且支持面向路径的测试覆盖准则。
申请公布号 CN103942147B 申请公布日期 2017.04.05
申请号 CN201410189411.X 申请日期 2014.05.06
申请人 南京大学 发明人 陈鑫;成新;欧建生;周岩;鞠秀芳
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 江苏银创律师事务所 32242 代理人 何震花
主权项 一种基于线性拟合函数驱动的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的路径集PS的步骤,其特征在于,该方法还包括对路径集PS中的每一路径P执行以下步骤:S1:根据所述路径P上的各分支节点的各个判断语句,构建关于输入变量向量X的分支函数F<sub>i,j</sub>(X);所述输入变量向量X为所述待测源程序输入变量构成的向量;所述分支函数F<sub>i,j</sub>(X)表示第i个分支节点的第j个判断语句的分支函数;S2:构建初始的输入向量集U;所述初始的输入向量集U至少包含两个输入向量;S3:计算以输入向量集U中每个输入向量作为待测源程序的输入执行待测源程序时所述路径P上的每个分支节点上的各分支函数F<sub>i,j</sub>(X)获得分支函数值的集合V以及最远公共分支节点m;假如输入向量集U中存在一个输入向量执行待测源程序时覆盖所述路径P,则返回该输入向量作为所述路径P的测试数据;S4:根据各个分支节点上的各分支函数值的集合V以及最远公共分支节点m构建最远公共分支节点m前的每个分支节点中的各分支函数的线性拟合函数LF<sub>i,j</sub>;LF<sub>i,j</sub>表示第i个分支的第j个分支函数的线性拟合函数;S5:根据每个分支节点中的各分支函数的线性拟合函数LF<sub>i,j</sub>和待测源程序计算可行区间I;S6:在可行区间I内随机选取各输入变量的输入值得到测试数据集加入至输入向量集U中;S7:重复执行步骤S3至S6直到步骤S3至S6执行的次数达到限定的次数;S8:从输入向量集U中找出能够覆盖路径P最多分支的输入向量作为路径P的测试数据;所述步骤S5包括如下步骤:S51:计算各个分支节点中各分支函数的可行区间D<sub>i,j</sub>;S52:合并每个分支节点内的各分支函数的可行区间D<sub>i,j</sub>得到各分支节点的可行区间D<sub>i</sub>;S53:合并最远公共分支节点m前的各分支节点的可行区间D<sub>i</sub>得到可行区间I;所述可行区间I={I<sub>1</sub>,I<sub>2</sub>,...,I<sub>s</sub>},其中,s为输入变量的个数,I<sub>i</sub>为第i个输入变量的可行区间,I<sub>i</sub>={I<sub>i,1</sub>,I<sub>i,2</sub>,...,I<sub>i,Mi</sub>},其中,I<sub>i,j</sub>为第i个输入变量第j个可行分段区间,Mi为第i个输入变量可行分段区间数,所述步骤S6中,当Mi为1时,从I<sub>i</sub>为第i个输入变量的可行区间的唯一分段区间I<sub>i,1</sub>的扩展区间中随机取值构建测试数据。
地址 210000 江苏省南京市鼓楼区汉口路22号