[发明专利]一种基于传递依赖的类集成测试序列生成方法有效

专利信息
申请号: 201810696612.7 申请日: 2018-06-29
公开(公告)号: CN110659199B 公开(公告)日: 2021-07-30
发明(设计)人: 姜淑娟;张妙;张艳梅;姜丽 申请(专利权)人: 中国矿业大学
主分类号: G06F11/36 分类号: G06F11/36
代理公司: 暂无信息 代理人: 暂无信息
地址: 221116 江苏省徐*** 国省代码: 江苏;32
权利要求书: 查看更多 说明书: 查看更多
摘要:
搜索关键词: 一种 基于 传递 依赖 集成 测试 序列 生成 方法
【权利要求书】:

1.一种基于传递依赖的类集成测试序列生成方法,其特征在于,首先对程序进行静态分析,构建类间传递依赖模型,识别出类间传递依赖关系;然后,按照各调用语句被执行的概率计算类间传递依赖发生的可能性,即控制耦合复杂度,以此度量为传递依赖关系构建测试桩所需付出的代价;之后,设计新的测试桩复杂度计算公式,计算各个类的测试成本及测试净收益,通过比较测试成本及测试净收益,选择合适的类加入到类集成测试序列,并利用奖惩机制对剩余各个类的测试优先级进行调整,最终形成完整的类集成测试序列,该方法包括如下步骤:

1)构建类间传递依赖模型

定义1:传递依赖,当类i依赖于类k时,若类i以类k为媒介访问类j的属性或调用类j的方法,即类i和类j通过类k建立了依赖关系,则称类i对类j的这种隐含依赖关系为传递依赖;

定义2:传递依赖调用链,类i和类ji, j∈V∧ij)之间的一条传递依赖调用链是一条由类i通向类j的执行路径x→y→…→w,其中,x和w是分别属于ij的方法,该路径中的剩余节点y则是属于其他类kk∈V∧ki, j)的方法,并且满足(1)路径中相邻的两个节点所代表的两个类之间存在方法调用或属性访问,(2)有向路径上的所有节点仅出现一次,即不存在方法或属性的反复调用及获取;

类间传递依赖模型在对象关系图的基础上,增加系统中的传递依赖调用链,类间传递依赖模型表示为有向图ICTRD=(V, L, E),其中,节点集合V表示程序P中的类的集合;标识集合L={D, T, C},表示程序P中类间依赖关系的类型集合;有向边集合E= ED∪ET∪EC,表示程序P中类间依赖关系的集合,ED表示类间直接依赖,ET表示类间传递依赖,EC表示两个类之间既存在直接依赖又存在传递依赖;

2)计算控制耦合复杂度

控制耦合复杂度用于衡量类间传递依赖的发生概率,两个类之间存在传递依赖当且仅当二者之间存在至少一条传递依赖调用链,假定类ij之间存在N条传递依赖调用链,只有当N条传递依赖调用均不成立时,类ij之间才不会存在传递依赖关系,控制耦合复杂度T(i,j)计算公式如下:

其中,k表示传递依赖调用链,tij(k)表示传递依赖调用链的执行概率;

假定某条传递依赖调用链中共包含M个访问操作,每个访问操作x执行的概率pc(x)决定了该传递依赖调用链被执行的可能性,即该传递依赖调用链被执行的概率tij(k)等于其中全部的访问操作执行的概率之积,传递依赖调用链的执行概率tij(k)的计算公式如下:

其中,TRC表示传递关系链;

某一访问操作的执行概率pc(x)的计算步骤如下:

第1步针对该访问操作,获取其所在的全部调用语句,并且针对每条调用语句,提取其路径条件;

第2步根据调用语句的路径条件,计算每条调用语句的执行概率;

当调用语句的路径条件为空时,该语句被顺序执行,不会由于分支语句的跳转而被打断,因此其执行概率为1;当调用语句的路径条件不为空时,该调用语句的路径条件从分支语句中提取而来,因此针对不同的分支语句,路径条件成立的概率并不相同;对于条件判断语句if而言,当调用语句的路径条件为多个不等式时,首先判断不等式之间是否存在冲突,若存在冲突,此时该调用语句一定不可能被执行;若某一路径条件为不含与、或关系的简单路径条件;反之,若某一路径条件为包含与、或关系的复合路径条件,同样在缺乏其他信息可供参考的情况下,假设共有N个分项,当各分项之间的关系为“与”时,该路径条件成立的概率为1/2N;当各分项之间的关系为“或”时,该路径条件成立的概率为(1-1/2N);对于判断选择语句switch,还需要考虑与case、default关联的代码块的个数,假设关联的代码块个数为N,在缺乏其他信息可供参考的情况下,认为该路径条件成立的概率为1/N;对于循环语句for和while,由于调用语句位于循环体中,表明软件开发人员希望该语句能够被重复执行,因此,在缺乏其他信息可供参考的情况下,认为该路径条件成立的概率为1;

第3步计算访问操作的执行概率,由于每条调用语句的执行互不影响,并且一个访问操作由多条调用语句完成,只有当所有的调用语句均不执行时,该访问操作才不会成立,因此,在计算完每条调用语句的执行概率之后,需考虑其不同的组合情况,最终计算访问操作的执行概率;

3)计算测试桩复杂度

当类i依赖于类j,且需要优先于类j被测试时,需要为类i构建测试桩Stub(i, j),用于模拟类j中提供的方法和属性,测试桩复杂度SCplx(i, j)的计算公式如下:

WA表示属性复杂度的权重,WM表示方法复杂度的权重,WT表示控制耦合复杂度的权重,表示属性复杂度的标准差,表示方法复杂度的标准差,T(i,j) 表示控制耦合复杂度;

4)生成类集成测试序列

第1步根据上述的测试桩复杂度计算公式,计算类间的测试桩复杂度,并构建测试成本矩阵,初始化各类的测试优先级;

第2步利用测试成本矩阵,计算各类的初始测试成本及初始测试净收益,设集合Suntest包含系统中所有未测试过的类u,测试成本TC(i)的计算公式如下:

测试净收益NR(i) 的计算公式如下:

第3步测试成本为零的类将被加入到类集成测试序列;若不存在测试成本为零的类,则将测试收益最大的类加入到类集成测试序列;

第4步对于剩余未被测试的类,根据其测试净收益,利用奖惩机制调整其测试优先级,若该类的测试净收益为正,提高其测试优先级;若该类的测试净收益为负,降低其测试优先级;若该类测试净收益为零,无需对其测试优先级进行调整;

第5步以未测试类同本轮集成类的依赖关系为反馈信息,对剩余未被测试的类的测试净收益进行调整,假设集合Sselect包含本轮被选中进行集成测试的所有类s,即测试净收益最大或测试成本为零的类,未被选中的待测类的测试净收益的调整公式如下:

第6步检查是否所有的类均已加入到类集成测试序列,若是,类集成测试序列生成完毕;否则,跳转至第3-5步继续执行。

下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国矿业大学,未经中国矿业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服

本文链接:http://www.vipzhuanli.com/pat/books/201810696612.7/1.html,转载请声明来源钻瓜专利网。

×

专利文献下载

说明:

1、专利原文基于中国国家知识产权局专利说明书;

2、支持发明专利 、实用新型专利、外观设计专利(升级中);

3、专利数据每周两次同步更新,支持Adobe PDF格式;

4、内容包括专利技术的结构示意图流程工艺图技术构造图

5、已全新升级为极速版,下载速度显著提升!欢迎使用!

请您登陆后,进行下载,点击【登陆】 【注册】

关于我们 寻求报道 投稿须知 广告合作 版权声明 网站地图 友情链接 企业标识 联系我们

钻瓜专利网在线咨询

周一至周五 9:00-18:00

咨询在线客服咨询在线客服
tel code back_top