主权项 |
一种基于线性拟合函数驱动的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的路径集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>的扩展区间中随机取值构建测试数据。 |