发明名称 基于重要语句的分支覆盖测试数据生成方法
摘要 本发明公布了一种基于重要语句的分支覆盖测试数据生成方法,旨在可以高效地生成覆盖目标分支的测试数据。具体步骤如下:(1)利用弱变异测试转化方法对原程序进行转化;(2)根据语句重要度指标体系对原程序语句进行排序;(3)基于以重要度排序后的原程序语句序列,确定相应的变异分支优先级;(4)建立以分支覆盖为准则的测试数据生成问题的数学模型;(5)设计适应度函数,以优先级最高的变异分支为目标;(6)设置相关遗传操作,采用遗传算法生成覆盖目标分支的测试数据。
申请公布号 CN105930272A 申请公布日期 2016.09.07
申请号 CN201610257126.6 申请日期 2016.04.22
申请人 中国矿业大学 发明人 巩敦卫;秦备;田甜;姚香娟;王金鑫;杨苏;王子鸣
分类号 G06F11/36(2006.01)I 主分类号 G06F11/36(2006.01)I
代理机构 代理人
主权项 基于重要语句的分支覆盖测试数据生成方法,其特征在于如下步骤:步骤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为空集,或达到算法终止条件,求解过程结束。
地址 221116 江苏省徐州市泉山区中国矿业大学南湖校区