主权项 |
基于重要语句的分支覆盖测试数据生成方法,其特征在于如下步骤:步骤1.1:针对弱变异测试转化后的新程序P',利用变异测试对象重要度评价方法,对程序原语句进行降序排列;按照上述排序,设计变异分支的覆盖顺序,重要度最高的原语句对应的变异分支拥有最高的覆盖优先级;步骤1.2:针对转化后的新程序P',记执行测试数据t,被覆盖的变异分支集合为f(t);因而,测试数据覆盖变异分支问题,可以表示为:在P'的输入域D中,搜索能够覆盖B中的全部变异真分支的测试数据集T={t<sub>1</sub>,t<sub>2</sub>,…,t<sub>i</sub>,…t<sub>n</sub>},其中t<sub>i</sub>,i=1,2,…,n,是P'的一个测试输入,n是包含的元素个数;记T中所有的测试数据,覆盖的变异分支集合为F(T),F(T)=f(t<sub>1</sub>)∪f(t<sub>2</sub>)∪…∪f(t<sub>i</sub>)∪…∪f(t<sub>n</sub>);因此,未被覆盖的变异分支,可以表示为B‑F(T);基于弱变异测试转化方法,对原程序进行分析处理,将变异语句与原语句组合,并插桩到原语句之前;因而,求解目标变成覆盖所有的变异真分支;如此一来,转化后的问题,可以表示为如下最小化问题:min{B‑F(T)}s.t.T∈D<sub>1</sub>×D<sub>2</sub>×…D<sub>i</sub>×…×D<sub>n</sub>式中,D表示P'的输入域,n为包含的测试数据个数;因而,当B中的全部变异分支均被覆盖时,B‑F(T)为空;步骤1.3:针对步骤1.2中给出的数学模型,设计了一种含约束的进化优化的求解方法,适应度函数表示为:fitness(t)=Appr(t)+dist(t)Appr(t)表示层接近度,dist(t)表示分支距离,由于程序规模较大,分支零散的原因,还根据公式Normal(dist)=1‑1.001<sup>‑dist</sup>,对其进行标准化处理;因此,测试数据的适应度函数最终可以表示为fitness(t)=Appr(t)+Normal(dist(t));步骤1.4:使用遗传算法求解其描述的优化问题,以得到覆盖目标变异分支的测试数据;步骤1.4.1:依据步骤1.1提出的变异分支覆盖优先策略,从B中选择优先级最高的分支b<sub>1</sub>作为目标分支;步骤1.4.2:初始化种群,在定义域内随机生成测试数据t,执行被测程序,计算并评价个体适应值;若t执行了目标分支或B中的其它分支,则保留t,并删除相关分支;步骤1.4.3:实施遗传操作,得到新的测试数据,并依据变异分支的覆盖顺序,选择B中优先级最高的分支作为新的目标分支;往复执行该过程,直到B为空集,或达到算法终止条件,求解过程结束。 |