[发明专利]基于重要语句的分支覆盖测试数据生成方法有效
| 申请号: | 201610257126.6 | 申请日: | 2016-04-22 |
| 公开(公告)号: | CN105930272B | 公开(公告)日: | 2018-10-02 |
| 发明(设计)人: | 巩敦卫;秦备;田甜;姚香娟;王金鑫;杨苏;王子鸣 | 申请(专利权)人: | 中国矿业大学 |
| 主分类号: | G06F11/36 | 分类号: | G06F11/36 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 221116 江苏省*** | 国省代码: | 江苏;32 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | 本发明公布了一种基于重要语句的分支覆盖测试数据生成方法,旨在可以高效地生成覆盖目标分支的测试数据。具体步骤如下:(1)利用弱变异测试转化方法对原程序进行转化;(2)根据语句重要度指标体系对原程序语句进行排序;(3)基于以重要度排序后的原程序语句序列,确定相应的变异分支优先级;(4)建立以分支覆盖为准则的测试数据生成问题的数学模型;(5)设计适应度函数,以优先级最高的变异分支为目标;(6)设置相关遗传操作,采用遗传算法生成覆盖目标分支的测试数据。 | ||
| 搜索关键词: | 基于 重要 语句 分支 覆盖 测试数据 生成 方法 | ||
【主权项】:
1.基于重要语句的分支覆盖测试数据生成方法,其特征在于如下步骤:步骤1.1:针对弱变异测试转化后的新程序P',根据语句的类型、包含关键变量的个数,以及其所含变量被依赖的变量个数,评价程序语句的重要度,并对程序原语句进行降序排序;按照上述排序,设计变异分支的覆盖顺序,重要度最高的原语句对应的变异分支拥有最高的覆盖优先级;步骤1.2:针对转化后的新程序P',可以记这些转化后的变异分支真分支为集合B={b1,b2,…,bi,…,bm},其中1≤i≤m; 记执行测试数据t,被覆盖的变异分支集合为f(t);因而,测试数据覆盖变异分支问题,可以表示为:在P'的输入域D中,搜索能够覆盖B中的全部变异真分支的测试数据集T={t1,t2,…,ti,…tn},其中ti,i=1,2,…,n,是P'的一个测试输入,n是包含的元素个数;记T中所有的测试数据,覆盖的变异分支集合为F(T),F(T)=f(t1)∪f(t2)∪…∪f(ti)∪…∪f(tn);因此,未被覆盖的变异分支,可以表示为B‑F(T);利用变异算子对原程序语句生成变异分支,将变异语句与原语句组合,并插桩到原语句之前;因而,求解目标变成覆盖所有的变异真分支;如此一来,转化后的问题,可以表示为如下最小化问题:min{B‑F(T)}s.t.T∈D1×D2×…Di×…×Dn式中,s.t.T表示T的约束条件,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‑dist,对其进行标准化处理;因此,测试数据的适应度函数最终可以表示为fitness(t)=Appr(t)+Normal(dist(t));步骤1.4:使用遗传算法求解其描述的优化问题,以得到覆盖目标变异分支的测试数据;步骤1.4.1:依据步骤1.1提出的变异分支覆盖优先策略,从B中选择优先级最高的分支b1作为目标分支;步骤1.4.2:初始化种群,在定义域内随机生成测试数据t,执行被测程序,计算并评价个体适应值;若t执行了目标分支或B中的其它分支,则保留t,并删除相关分支;步骤1.4.3:实施遗传操作,得到新的测试数据,并依据变异分支的覆盖顺序,选择B中优先级最高的分支作为新的目标分支;往复执行该过程,直到B为空集,或达到算法终止条件,求解过程结束。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201610257126.6/,转载请声明来源钻瓜专利网。





