欢迎来到知嘟嘟! 联系电话:13095918853 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13095918853
知嘟嘟经纪人
收藏
专利号: 2018106966127
申请人: 中国矿业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

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

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

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

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

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

2)计算控制耦合复杂度

控制耦合复杂度用于衡量类间传递依赖的发生概率,两个类之间存在传递依赖当且仅当二者之间存在至少一条传递依赖调用链,假定类i和j之间存在N条传递依赖调用链,只有当N条传递依赖调用均不成立时,类i和j之间才不会存在传递依赖关系,控制耦合复杂度计算公式如下:假定某条传递依赖调用链中共包含M个访问操作,每个访问操作执行的概率决定了该传递依赖调用链被执行的可能性,即该传递依赖调用链被执行的概率等于其中全部的访问操作执行的概率之积,传递依赖调用链的执行概率的计算公式如下:某一访问操作的执行概率pc(x)的计算步骤如下:

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

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

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

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

3)计算测试桩复杂度

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

4)生成类集成测试序列

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

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

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

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

第5步 以未测试类同本轮集成类的依赖关系为反馈信息,对剩余未被测试的类的测试净收益进行调整,假设集合Sselect包含本轮被选中进行集成测试的所有类s,即测试净收益最大或测试成本为零的类,未被选中的待测类的测试净收益的调整公式如下:第6步 检查是否所有的类均已加入到类集成测试序列,若是,类集成测试序列生成完毕;否则,跳转至第3-5步继续执行。

2.根据权利要求1所述的基于传递依赖的类集成测试序列生成方法,其特征在于,在步骤1)构建类间传递依赖模型中,采用类作为模型中的节点,采用类间的直接依赖关系和传递依赖关系作为模型中的边。

3.根据权利要求1所述的基于传递依赖的类集成测试序列生成方法,其特征在于,在步骤2)计算控制耦合复杂度中,采用路径条件的可满足概率作为调用语句的执行概率,采用调用语句的执行概率作为度量访问操作执行概率的标准,采用传递依赖调用链的执行概率作为衡量类间控制耦合复杂度的指标。

4.根据权利要求1所述的基于传递依赖的类集成测试序列生成方法,其特征在于,在步骤3)计算测试桩复杂度中,采用线性加权的方式计算测试桩复杂度。

5.根据权利要求1所述的基于传递依赖的类集成测试序列生成方法,其特征在于,在步骤4)生成类集成测试序列中,采用奖惩机制对类的测试优先级进行调整。