CN108170613B - 一种软件测试用例自动生成方法 - Google Patents
一种软件测试用例自动生成方法 Download PDFInfo
- Publication number
- CN108170613B CN108170613B CN201810190656.2A CN201810190656A CN108170613B CN 108170613 B CN108170613 B CN 108170613B CN 201810190656 A CN201810190656 A CN 201810190656A CN 108170613 B CN108170613 B CN 108170613B
- Authority
- CN
- China
- Prior art keywords
- node
- class
- network
- nodes
- level software
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提出了一种软件测试用例自动生成方法,包括以下步骤:步骤1、根据软件结构,分别生成包级、类级软件网络;步骤2、分别计算类级、包级软件网络中各节点的综合重要度;步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,进而确定状态概率及转移概率;步骤4、根据隐马尔可夫模型,为软件自动生成测试用例。本发明的软件测试用例自动生成方法,借鉴复杂网络相关技术,提供一种从节点重要性角度出发,综合考虑图拓扑结构的软件测试用例自动生成方法,且结果具有较高的可信度。
Description
技术领域
本发明涉及软件测试技术领域,特别是一种软件测试用例自动生成方法。
背景技术
面向对象软件由于具有封装性、多态性和继承性等特点,在软件测试技术上与传统的面向过程软件有很大区别。其中,类的集成测试是在类单元测试完成的基础上,对类集成过程的测试。由于类的测试顺序关系到软件缺陷发现的时间和设计测试桩造成的测试成本,类的集成测试顺序成为集成测试中的一个重要问题。
目前,针对类间集成测试顺序的生成方法主要有两类:(1)基于遗传算法的类间集成测试顺序生成方法。该方法首先初始化一个种群代表类的测试顺序,然后对其进行选择、交叉、变异操作,从而得到一个满足预定条件的类间集成测试顺序;(2)基于图论的启发式类间集成测试顺序生成算法。该方法从类中提取依赖关系,依据打破最多环路、不同类型边的权重等标准移除有环结构的关联边,对类图进行拓扑排序,从而得到类间集成测试顺序。
类间集成测试顺序问题在国内的研究相对较少。陈建勋等(陈建勋,肖亦然.基于动态依赖的类间测试顺序研究[J].传感技术学报,2014(1):64-69.)分析了对象关系图中的类间依赖关系,运用边删除规则去除环路,通过有向无环图的拓扑序列给出类的测试顺序,有效减少了测试桩的数量。柴玉梅等(冯秋燕.基于UML模型和OCL约束的类间交互测试用例生成方法研究[D].郑州大学,2012.)对UML模型的顺序图添加了对象约束语言,给出一种测试路径生成算法。姜淑娟等(姜淑娟,张艳梅,李海洋,等.一种基于耦合度量的类间集成测试序的确定方法[J].计算机学报,2011,34(6):1062-1074.)以降低测试桩复杂度为优化目标,提出一种基于耦合度量的类间集成测试顺序的确定方法。上述方法在解决类间测试排序问题时,仅仅考虑了减少测试桩数目和降低测试桩复杂度两个方面,忽略了重要的类和错误传播概率较大的类应尽早被测试的问题。
发明内容
本发明提出了一种软件测试用例自动生成方法,解决现有技术类间测试排序不准确的问题。
实现本发明的技术解决方案为:一种软件测试用例自动生成方法,具体步骤为:
步骤1、根据软件软件系统的结构,分别生成包级、类级软件网络;
步骤2、分别计算类级、包级软件网络中各节点的综合重要度;
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,确定类级软件网络节点间的状态概率及包级软件网络节点间的转移概率;
步骤4、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔可夫模型,利用隐马尔可夫模型为软件自动生成测试用例。
本发明与现有技术相比,其显著优点为:(1)将节点重要性纳入状态概率和转移概率的确定因素中,综合考虑了节点在软件网络中的局部和全局位置及影响力。(2)将隐马尔科夫模型应用到自动生成软件测试用例的过程中,简化了测试用例的生成过程,从马尔科夫链开始到结束状态的路径就是测试路径。(3)使用隐马尔可夫模型生成测试用例,符合软件测试的随机性,同时重要性越高的类越容易被测试到,因此可以有效保证测试资源不被浪费,算法更加高效。
下面结合附图对本发明做进一步详细的描述。
附图说明
图1为本发明一种软件测试用例自动生成方法的流程图。
图2为本发明实施例1软件网络结构示意图。
具体实施方式
一种软件测试用例自动生成方法,具体步骤为:
步骤1、根据软件软件系统的结构,分别生成包级、类级软件网络,具体步骤为:
步骤1.1、设立一个由n个类、N个包构成的软件系统,将所有的类抽象为类节点集合VC={vc1,vc2,…,vcn},vcn表示类节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为类间连边集合EC={<vcic,vcjc>|vcic,vcjc∈VC},vcic和vcjc表示类节点集合中的任意两个节点,ic,jc∈{1,2,…,n},n为类的个数,软件系统的类间关系即表示为有向网络GC=(VC,EC),GC即类级软件网络;
步骤1.2、将所有的包抽象为包节点集合VP={vp1,vp2,…,vpN},vpN表示包节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为包间连边集合EP={<vpip,vpjp>|vpip,vpjp∈VP},vpip和vpjp表示包节点集合中的任意两个节点,ip,jp∈{1,2,…,N},N为包的个数,软件系统的包间关系即表示为有向网络GP=(VP,EP),GP即包级软件网络;
步骤2、分别计算类级、包级软件网络中各节点的综合重要度,具体步骤为:
步骤2.1、确定类级软件网络GC中各节点vcic的重要性测度值,包括核数coreic、介数中心性bcic、PageRank值pric及网络效率neic;
步骤2.1.1、确定节点vcic的核数coreic,具体计算方法为:
去除有向网络GC中度小于或等于kc的节点,得到子图节点集kc-core,节点vcic的核数coreic:
coreic=kc
其中,子图节点集kc-core的获取方法为:
(1)令ks=0,移除有向网络GC中所有度数小于或等于ks的节点;
(2)令ks=ks+1,移除有向网络GC中所有度数小于或等于ks的节点,此时网络中可能会出现一些新的度数小于或等于ks的节点,则继续移除,直到网络中不再有度数小于或等于ks的节点,从而得到子图节点集kc-core,其中kc=ks。
(3)重复步骤(2),直到所有节点均被划分至子图节点集中。
步骤2.1.2、确定节点vcic的介数中心性bcic,具体计算公式为:
式中,n表示类节点的总个数,bic为节点vcic的介数,具体为:
式中,gcst(vcic)为经过节点vcic的两个节点vcsc和vctc间的最短路径条数,mcst为两个节点vcsc和vctc间最短路径的总条数,且vcsc,vctc∈VC。
步骤2.1.3、确定节点vcic的PageRank值pric,具体计算方法为:
步骤2.1.3.1、初始时刻,赋予软件网络GC中各节点vcic相同的PageRank值,迭代次数k置0;
步骤2.1.3.2、各节点vcic将自己当前PageRank值均分给其所指向的节点,每个节点的新PageRank值等于其原有PageRank值加上被分得的PageRank值,有向网络GC的邻接矩阵为AC=(acicjc)n×n,则有:
其中,kjc out为节点vcjc的出度,s为随机跳转概率;
pric=PRic (k+1)
否则k=k+1,执行步骤2.1.3.2。
步骤2.1.4、确定节点vcic的网络效率neic,具体计算公式为:
式中,dicjc为有向网络GC中节点vcic和vcjc间的最短路径长度。
步骤2.2、对类级软件网络GC中各节点vcic重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XC=(xcicuc),xcicuc表示重要性测度指标,具体为:
步骤2.2.1、对核数指标core′ic进行归一化处理:
对介数中心性指标bc′ic进行归一化处理:
对PageRank值pr'ic进行归一化处理:
对网络效率指标ne′ic进行归一化处理:
式中,1≤ic≤n;
步骤2.2.2、根据归一化后的核数指标结果集合Core′={core′1,core′2,…,core′n},介数中心性结果集合BC′={bc′1,bc′2,…,bc′n},PageRank指标结果集合PR′={pr1',pr2′,…,prn′},网络效率指标结果集合NE′={ne'1,ne′2,…,ne′n},构建归一化矩阵:
式中,m为选定测度的个数。
步骤2.3、根据熵权法确定衡量类节点重要性的测度指标权重,计算类级软件网络GC中各节点vcic的综合重要性,具体方法为:
确定各指标的熵和熵权值,其中,熵的计算公式为:
熵权值的计算公式为:
则重要性测度指标的熵权矩阵为WC=(ωcuc)1×m,获得加权规范矩阵:
则节点vcic的综合重要性为:
式中,1≤ic≤n,1≤uc≤m;
步骤2.4、确定包级软件网络GP中各节点vpip的重要性测度值,包括核数coreip、介数中心性bcip、PageRank值prip及网络效率neip;
步骤2.4.1、确定节点vpip的核数coreip,具体计算方法为:
去除有向网络GP中度小于或等于kp的节点,得到子图节点集kp-core,节点vpip的核数coreip:
coreip=kp
子图节点集kp-core的获取方法为:
(1)令ks=0,移除有向网络GP中所有度数小于或等于ks的节点;
(2)令ks=ks+1,移除有向网络GP中所有度数小于或等于ks的节点,此时网络中可能会出现一些新的度数小于或等于ks的节点,则继续移除,直到网络中不再有度数小于或等于ks的节点,从而得到子图节点集kp-core,其中kp=ks。
(3)重复步骤(2),直到所有节点均被划分至子图节点集中。
步骤2.4.2、确定节点vpip的介数中心性bcip,具体计算公式为:
式中,N表示包节点的总个数,bip为节点vpip的介数,具体为:
式中,gpst(vpip)为经过节点vpip的两个节点vpsp和vptp间的最短路径条数,mpst为两个节点vpsp和vptp间最短路径的总条数,且vpsp,vptp∈VP。
步骤2.4.3、确定节点vpip的PageRank值prip,具体计算方法为:
步骤2.4.3.1、初始时刻,赋予软件网络GP中各节点vpip相同的PageRank值,迭代次数k置0;
步骤2.4.3.2、各节点vpip将自己当前PageRank值均分给其所指向的节点,每个节点的新PageRank值等于其原有PageRank值加上被分得的PageRank值,有向网络GP的邻接矩阵为AP=(vpipjp)N×N,则有:
其中,kjp out为节点vpjp的出度,s为随机跳转概率;
prip=PRip (k+1)
否则k=k+1,跳至步骤2.4.3.2。
步骤2.4.4、确定节点vpip的网络效率neip,具体计算公式为:
式中,dipjp为有向网络GP中节点vpip和vpjp间的最短路径长度。
步骤2.5、对包级软件网络GP中各节点vpip重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XP=(xpipup),xpipup表示重要性测度指标,具体为:
步骤2.5.1、对核数指标core′ip进行归一化处理:
对介数中心性指标bc′ip进行归一化处理:
对PageRank值pr′ip进行归一化处理:
对网络效率指标ne′ip进行归一化处理:
式中,1≤ip≤n;
步骤2.5.2、根据归一化后的核数指标结果集合Core′={core′1,core′2,…,core′N},介数中心性结果集合BC′={bc′1,bc′2,…,bc′N},PageRank指标结果集合PR′={pr1′,pr2′,…,prN′},网络效率指标结果集合NE′={ne′1,ne′2,…,ne′N},构建归一化矩阵:
式中,m为选定测度的个数。
步骤2.6、根据熵权法确定衡量包节点重要性的测度指标权重,计算包级软件网络GP中各节点vpip的综合重要性,具体方法具体为:
确定各指标的熵,计算公式为:
确定各指标的熵权值:
重要性测度指标的熵权矩阵为WP=(ωpup)1×m,获得加权规范矩阵:
则节点vpip的综合重要性为:
式中,1≤ip≤n,1≤up≤m;
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,确定类级软件网络节点间的状态概率及包级软件网络节点间的转移概率,具体步骤如下:
步骤3.1、计算类级软件网络GC中任意两个节点vcic与vcjc间的依赖强度,具体公式为:
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数,此处的依赖包括继承、关联、聚合、组成。
步骤3.2、确定类级软件网络GC中任意节点vcic的状态概率,具体公式为:
式中,imp(vcjc)为节点vcjc的综合重要性。
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
式中,CLAjp表示节点vpjp包含类的数量,relpipjp为节点vpip依赖于vpjp所涉及的类的数量。
步骤3.4、确定包级软件网络GP中任意两个节点vpip与vpjp间的转移概率,具体公式为:
moveipjp=εpipjp×imp(vpjp)
式中,imp(vpjp)为节点vpjp的综合重要性,moveipjp即为节点vpip到节点vpjp的转移概率。
步骤4、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔可夫模型,利用隐马尔可夫模型为软件自动生成测试用例,具体步骤为:
步骤4.1、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔科夫模型λ=(A,B,Π),其中:
步骤4.2、利用隐马尔可夫模型为软件自动生成测试用例,具体步骤为:
步骤4.2.1、构建类级网络孤立节点集合,记做LON;记S=0,S为测试用例的个数;
步骤4.2.2、遍历类级软件网络GC,将孤立节点加入集合LON中,并从网络GC中删除这些节点;
步骤4.2.3、选择包级软件网络GP中综合重要性数值最大的包节点vpμp,即imp(vpμp)=maxNimp(vpip),选择包节点vpμp所对应的包中,综合重要性数值最大的类节点vcγc,作为测试用例的起始类,记作conditionr,此时r=0,则测试用例选择概率pror=maxNπip×bipγc;
步骤4.2.4、令r=r+1,计算vcγc可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
式中,bipic为状态概率矩阵对应位置元素,包节点vpip为类节点vcic所属包,aμpip为转移概率矩阵对应位置元素,即包vpup和vpip间的转移概率;
步骤4.2.5、令μp=ip,γc=ic,重复步骤4.2.3,直到vcγc无子节点,此时conditionr的变化序列即为一条测试用例序列,记为examples;
步骤4.2.6、删除所有已遍历过的类节点及其连边,置r=0,令S=S+1,重复步骤4.2.2至步骤4.2.6,直到类级软件网络GC为空;
步骤4.2.7、记录所有测试用例EXAMPLE={exampleS|s=|EXAMPLE|},EXAMPLE即为自动生成的测试用例的集合,exampleS对应一条测试用例序列。
下面结合实施例对本发明做进一步说明。
实施例1
一种软件测试用例自动生成技术,具体步骤为:
步骤1、根据软件结构,分别生成包级、类级软件网络,具体步骤为:
步骤1.1、设立一个由5个类、2个包构成的软件系统,将所有的类抽象为类节点集合VC={vc1,vc2,…,vc5},vc1,vc2,…,vc5表示类节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为类间连边集合EC={<vcic,vcjc>|vcic,vcjc∈VC},vcic和vcjc表示类节点集合中的任意两个节点,ic,jc∈{1,2,…,5},n为类的个数,即n=5,软件系统的类间关系即表示为有向网络GC=(VC,EC),GC即类级软件网络;
步骤1.2、将所有的包抽象为包节点集合VP={vp1,vp2},vp1,vp2表示包节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为包间连边集合EP={<vpip,vpjp>|vpip,vpjp∈VP},vpip和vpjp表示包节点集合中的任意两个节点,ip,jp∈{1,2},N为包的个数,N=2,软件系统的包间关系即表示为有向网络GP=(VP,EP),GP即包级软件网络;
本实施例中{vc2,vc5}∈vp1,{vc1,vc3,vc4}∈vp2
步骤2、分别计算类级、包级软件网络中各节点的综合重要度,具体步骤如下:
步骤2.1、确定类级软件网络GC中各节点vcic的重要性测度值,包括核数coreic、介数中心性bcic、PageRank值pric及网络效率neic;
步骤2.1.1、确定节点vcic的核数coreic,具体计算方法为:
去除有向网络GC中度小于或等于kc的节点,得到子图节点集kc-core,节点vcic的核数coreic:
coreic=kc
子图节点集kc-core的获取方法为:
(1)令ks=0,移除有向网络GC中所有度数小于或等于ks的节点;
(2)令ks=ks+1,移除有向网络GC中所有度数小于或等于ks的节点,此时网络中可能会出现一些新的度数小于或等于ks的节点,则继续移除,直到网络中不再有度数小于或等于ks的节点,从而得到子图节点集kc-core,其中kc=ks。
(3)重复步骤(2),直到所有节点均被划分至子图节点集中。
步骤2.1.2、确定节点vcic的介数中心性bcic,具体计算公式为:
式中,n表示类节点的总个数,bic为节点vcic的介数,具体为:
式中,gcst(vcic)为经过节点vcic的两个节点vcsc和vctc间的最短路径条数,mcst为两个节点vcsc和vctc间最短路径的总条数,且vcsc,vctc∈VC。
步骤2.1.3、确定节点vcic的PageRank值pric,具体计算方法为:
步骤2.1.3.1、初始时刻,赋予软件网络GC中各节点vcic相同的PageRank值,迭代次数k置0;
步骤2.1.3.2、各节点vcic将自己当前PageRank值均分给其所指向的节点,每个节点的新PageRank值等于其原有PageRank值加上被分得的PageRank值,假设有向网络GC的邻接矩阵为AC=(acicjc)n×n,则有
其中,kjc out为节点vcjc的出度,s为随机跳转概率;
pric=PRic (k+1)
否则k=k+1,执行步骤2.1.3.2。
步骤2.1.4、确定节点vcic的网络效率neic,具体计算公式为:
式中,dicjc为有向网络GC中节点vcic和vcjc间的最短路径长度。
此时,得到类级软件网络GC中各节点vcic的核数为:
Core={2,1,2,2,2}
介数中心性为:
BC={0.333,0.167,0.500,0.667,0.333}
PageRank值为:
PR={0.060,0.050,0.060,0.163,0.060}
网络效率为:
NE={0.010,0.008,0.008,0.025,0.010}
步骤2.2、对类级软件网络GC中各节点vcic重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XC=(xcicuc),xcicuc表示重要性测度指标,具体为:
步骤2.2.1、对核数指标core'ic进行归一化处理:
对介数中心性指标bc′ic进行归一化处理:
对PageRank值pr′ic进行归一化处理:
对网络效率指标ne′ic进行归一化处理:
式中,1≤ic≤n;
此时,得到类级软件网络GC中各节点vcic归一化后的核数为:
Core′={1.000,0.500,1.000,1.000,1.000}
介数中心性为:
BC′={0.777,0.666,0.889,1.000,0.777}
PageRank值为:
PR′={0.907,0.898,0.907,1.000,0.907}
网络效率为:
NE′={0.985,0.983,0.983,1.000,0.985}
步骤2.2.2、根据归一化后的核数指标结果集合Core′={core′1,core′2,…,core'n},介数中心性结果集合BC′={bc′1,bc'2,…,bc′n},PageRank指标结果集合PR′={pr1′,pr2′,…,prn′},网络效率指标结果集合NE′={ne′1,ne′2,…,ne′n},构建归一化矩阵:
式中,m为选定测度的个数,本实施例中m=4。
步骤2.3、根据熵权法确定衡量类节点重要性的测度指标权重,进而计算类级软件网络GC中各节点vcic的综合重要性,具体方法为:
确定各指标的熵,计算公式为:
确定各指标的熵权值:
则重要性测度指标的熵权矩阵为WC=(ωcuc)1×m,获得加权规范矩阵:
则节点vcic的综合重要性为:
式中,1≤ic≤n,1≤uc≤m;
此时,imp(vc1)=0.919,imp(vc2)=0.763,imp(vc3)=0.946,imp(vc4)=1.000,imp(vc5)=0.919。
步骤2.4、确定包级软件网络GP中各节点vpip的重要性测度值,包括核数coreip、介数中心性bcip、PageRank值prip及网络效率neip;
步骤2.4.1、确定节点vpip的核数coreip,具体计算方法为:
去除有向网络GP中度小于或等于kp的节点,得到子图节点集kp-core,节点vpip的核数coreip:
coreip=kp
子图节点集kp-core的获取方法为:
(1)令ks=0,移除有向网络GP中所有度数小于或等于ks的节点;
(2)令ks=ks+1,移除有向网络GP中所有度数小于或等于ks的节点,此时网络中可能会出现一些新的度数小于或等于ks的节点,则继续移除,直到网络中不再有度数小于或等于ks的节点,从而得到子图节点集kp-core,其中kp=ks。
(3)重复步骤(2),直到所有节点均被划分至子图节点集中。
步骤2.4.2、确定节点vpip的介数中心性bcip,具体计算公式为:
式中,N表示包节点的总个数,bip为节点vpip的介数,具体为:
式中,gpst(vpip)为经过节点vpip的两个节点vpsp和vptp间的最短路径条数,mpst为两个节点vpsp和vptp间最短路径的总条数,且vpsp,vptp∈VP。
步骤2.4.3、确定节点vpip的PageRank值prip,具体计算方法为:
步骤2.4.3.1、初始时刻,赋予软件网络GP中各节点vpip相同的PageRank值,迭代次数k置0;
步骤2.4.3.2、各节点vpip将自己当前PageRank值均分给其所指向的节点,每个节点的新PageRank值等于其原有PageRank值加上被分得的PageRank值,假设有向网络GP的邻接矩阵为AP=(apipjp)N×N,则有
其中,kjp out为节点vpjp的出度,s为随机跳转概率;
prip=PRip (k+1)
否则k=k+1,跳至步骤2.4.3.2。
步骤2.4.4、确定节点vpip的网络效率neip,具体计算公式为:
式中,dipjp为有向网络GP中节点vpip和vpjp间的最短路径长度。
步骤2.5、对包级软件网络GP中各节点vpip重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XP=(xpipup),xpipup表示重要性测度指标,具体为:
步骤2.5.1、对核数指标core′ip进行归一化处理:
对介数中心性指标bc′ip进行归一化处理:
对PageRank值pr′ip进行归一化处理:
对网络效率指标ne′ip进行归一化处理:
式中,1≤ip≤n;
步骤2.5.2、根据归一化后的核数指标结果集合Core′={core′1,core′2,…,core′N},介数中心性结果集合BC′={bc′1,bc′2,…,bc′N},PageRank指标结果集合PR′={pr1′,pr2′,…,prN′},网络效率指标结果集合NE′={ne′1,ne′2,…,ne'N},构建归一化矩阵:
式中,m为选定测度的个数,本方案中m=4。
步骤2.6、根据熵权法确定衡量包节点重要性的测度指标权重,进而计算包级软件网络GP中各节点vpip的综合重要性,具体方法具体为:
确定各指标的熵,计算公式为:
确定各指标的熵权值:
则重要性测度指标的熵权矩阵为WP=(ωpup)1×m,获得加权规范矩阵:
则节点vpip的综合重要性为:
式中,1≤ip≤n,1≤up≤m;
此时,imp(vp1)=0.881,imp(vp2)=1.000。
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,进而确定状态概率及转移概率,具体步骤如下:
步骤3.1、计算类级软件网络GC中任意两个节点vcic与vcjc间的依赖强度,具体公式为:
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数,此处的依赖包括继承、关联、聚合、组成。
步骤3.2、确定类级软件网络GC中任意节点vccc的状态概率,具体公式为:
式中,imp(vcjc)为节点vcjc的综合重要性。
此时,state1=2.757,state2=1.908,state3=2.208,state4=4.000,state5=1.838。
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
式中,CLAjp表示节点vpjp包含类的数量,relpipjp为节点vpip依赖于vpjp所涉及的类的数量。
步骤3.4、确定包级软件网络GP中任意两个节点vpip与vpjp间的转移概率,具体公式为:
moveipjp=εpipjp×imp(vpjp)
式中,imp(vpjp)为节点vpjp的综合重要性,moveipjp即为节点vpip到节点vpjp的转移概率。
步骤4、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔可夫模型,利用隐马尔可夫模型为软件自动生成测试用例,具体步骤为:
步骤4.1、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔科夫模型λ=(A,B,Π),其中:
此时,有:
Π={0.468,0.532}
步骤4.2、利用隐马尔可夫模型为软件自动生成测试用例EXAMPLE={exampleS|s=|EXAMPLE|},EXAMPLE为自动生成的测试用例的集合,examples对应一条测试用例序列,具体步骤为:
步骤4.2.1、构建类级网络孤立节点集合,记做LON;记S=0,S为测试用例的个数;
步骤4.2.2、遍历类级软件网络GC,将孤立节点加入集合LON中,并从网络GC中删除这些节点。
步骤4.2.3、选择包级软件网络GP中综合重要性数值最大的包节点vpμp,即imp(vpμp)=maxNimp(vpip),选择包节点vpμp所对应的包中,综合重要性数值最大的类节点vcγc,作为测试用例的起始类,记作conditionr,此时r=0。则此时测试用例选择概率pror=maxNπip×bipγc;
步骤4.2.4、令r=r+1,计算vcγc可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
式中,bipic为状态概率矩阵对应位置元素,包节点vpip为类节点vcic所属包,aμpip为转移概率矩阵对应位置元素,即包vpμp和vpip间的转移概率;
步骤4.2.5、令μp=ip,γc=ic,重复步骤4.2.3,直到vcγc无子节点,此时conditionr的变化序列即为一条测试用例序列,记为exampleS;
步骤4.2.6、删除所有已遍历过的类节点及其连边,置r=0,令S=S+1,重复步骤4.2.2至步骤4.2.6,直到类级软件网络GC为空。
步骤4.2.7、类级网络孤立节点集合LON中所有类节点随机安排在最后进行测试;记录所有测试用例EXAMPLE={exampleS|s=|EXAMPLE|},EXAMPLE即为自动生成的测试用例的集合,exampleS对应一条测试用例序列。
此时,example1={vc4,vc2},example2={vc1,vc3},example3={vc5}。
Claims (5)
1.一种软件测试用例自动生成方法,其特征在于,具体步骤为:
步骤1、根据软件系统的结构,分别生成包级、类级软件网络;
步骤2、分别计算类级、包级软件网络中各节点的综合重要度;
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,确定类级软件网络节点间的状态概率及包级软件网络节点间的转移概率;
步骤4、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔可夫模型,利用隐马尔可夫模型为软件自动生成测试用例;
步骤1中根据软件系统的结构,分别生成包级、类级软件网络的具体步骤为:
步骤1.1、设立一个由n个类、N个包构成的软件系统,将所有的类抽象为类节点集合VC={vc1,vc2,…,vcn},vcn表示类节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为类间连边集合EC={<vcic,vcjc>|vcic,vcjc∈VC},vcic和vcjc表示类节点集合中的任意两个节点,ic,jc∈{1,2,…,n},n为类的个数,软件系统的类间关系即表示为有向网络GC=(VC,EC),GC即类级软件网络;
步骤1.2、将所有的包抽象为包节点集合VP={vp1,vp2,…,vpN},vpN表示包节点集合中的节点,节点之间的所有静态和动态依赖关系抽象为包间连边集合EP={<vpip,vpjp>|vpip,vpjp∈VP},vpip和vpjp表示包节点集合中的任意两个节点,ip,jp∈{1,2,…,N},N为包的个数,软件系统的包间关系即表示为有向网络GP=( VP,EP),GP即包级软件网络。
2.根据权利要求1所述的软件测试用例自动生成方法,其特征在于,步骤2分别计算类级、包级软件网络中各节点的综合重要度的具体步骤为:
步骤2.1、确定类级软件网络GC中各节点vcic的重要性测度值,包括核数coreic、介数中心性bcic、PageRank值pric及网络效率neic;
步骤2.2、对类级软件网络GC中各节点vcic重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XC=(xcicuc),xcicuc表示重要性测度指标;
步骤2.3、根据熵权法确定衡量类节点重要性的测度指标权重,计算类级软件网络GC中各节点vcic的综合重要性imp(vcic);
步骤2.4、确定包级软件网络GP中各节点vpip的重要性测度值,包括核数coreip、介数中心性bcip、PageRank值prip及网络效率neip;
步骤2.5、对包级软件网络GP中各节点vpip重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XP=(xpipup),xpipup表示重要性测度指标;
步骤2.6、根据熵权法确定衡量包节点重要性的测度指标权重,计算包级软件网络GP中各节点vpip的综合重要性imp(vpip)。
3.根据权利要求1所述的软件测试用例自动生成方法,其特征在于,步骤3分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,确定类级软件网络节点间的状态概率及包级软件网络节点间的转移概率,具体步骤为:
步骤3.1、计算类级软件网络GC中任意两个节点vcic与vcjc间的依赖强度,具体公式为:
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数;
步骤3.2、确定类级软件网络GC中任意节点vcic的状态概率,具体公式为:
式中,imp(vcjc)为节点vcjc的综合重要性;
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
式中,CLAjp表示节点vpjp包含类的数量,relpipjp为节点vpip依赖于vpjp所涉及的类的数量;
步骤3.4、确定包级软件网络GP中任意两个节点vpip与vpjp间的转移概率,具体公式为:
moveipjp=εpipjp×imp(vpjp)
式中,imp(vpjp)为节点vpjp的综合重要性,moveipjp为节点vpip到节点vpjp的转移概率。
4.根据权利要求1所述的软件测试用例自动生成方法,其特征在于,步骤4中根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔可夫模型,利用隐马尔可夫模型为软件自动生成测试用例,具体步骤为:
步骤4.1、根据类级软件网络节点间的状态概率及包级软件网络节点间的转移概率构建隐马尔科夫模型λ=(A,B,Π),其中:
步骤4.2、利用隐马尔可夫模型为软件自动生成测试用例EXAMPLE=exampleS|s=|EXAMPLE|},EXAMPLE为自动生成的测试用例的集合,exampleS对应一条测试用例序列。
5.根据权利要求4所述的软件测试用例自动生成方法,其特征在于,步骤4.2中利用隐马尔可夫模型为软件自动生成测试用例,具体步骤为:
步骤4.2.1、构建类级网络孤立节点集合,记做LON;记S=0,S为测试用例的个数;
步骤4.2.2、遍历类级软件网络GC,将孤立节点加入集合LON中,并从网络GC中删除这些节点;
步骤4.2.3、选择包级软件网络GP中综合重要性数值最大的包节点vpμp,即选择包节点vpμp所对应的包中,综合重要性数值最大的类节点vcγc,作为测试用例的起始类,记作conditionr,此时r=0,则测试用例选择概率
步骤4.2.4、令r=r+1,计算vcγc可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
式中,bipic为状态概率矩阵对应位置元素,包节点vpip为类节点vcic所属包,aμpip为转移概率矩阵对应位置元素,即包vpμp和vpip间的转移概率;
步骤4.2.5、令μp=ip,γc=ic,重复步骤4.2.3,直到vcγc无子节点,此时conditionr的变化序列即为一条测试用例序列,记为exampleS;
步骤4.2.6、删除所有已遍历过的类节点及其连边,置r=0,令S=S+1,重复步骤4.2.2至步骤4.2.6,直到类级软件网络GC为空;
步骤4.2.7、记录所有测试用例EXAMPL={exampleS|s=|EXAMPLE|},EXAMPLE即为自动生成的测试用例的集合,exampleS对应一条测试用例序列。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810190656.2A CN108170613B (zh) | 2018-03-08 | 2018-03-08 | 一种软件测试用例自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810190656.2A CN108170613B (zh) | 2018-03-08 | 2018-03-08 | 一种软件测试用例自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108170613A CN108170613A (zh) | 2018-06-15 |
CN108170613B true CN108170613B (zh) | 2021-08-03 |
Family
ID=62511924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810190656.2A Active CN108170613B (zh) | 2018-03-08 | 2018-03-08 | 一种软件测试用例自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108170613B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110083529B (zh) * | 2019-03-20 | 2020-06-05 | 北京字节跳动网络技术有限公司 | 自动化测试方法、装置、介质和电子设备 |
CN110554954B (zh) * | 2019-07-19 | 2020-12-01 | 中国科学院软件研究所 | 一种结合静态依赖和动态执行规则的测试用例选择方法 |
CN110990291A (zh) * | 2019-12-16 | 2020-04-10 | 沈阳信安盟科技有限公司 | 一种基于节点重要度评估的回归测试用例优先级排序方法 |
CN110990292A (zh) * | 2019-12-16 | 2020-04-10 | 沈阳信安盟科技有限公司 | 一种基于uml模型的集成测试模块优先级排序方法 |
CN111597121B (zh) * | 2020-07-24 | 2021-04-27 | 四川新网银行股份有限公司 | 一种基于历史测试用例挖掘的精准测试方法 |
CN112256591A (zh) * | 2020-11-12 | 2021-01-22 | 北京联创信安科技股份有限公司 | 一种测试用例生成方法、装置、测试设备及存储介质 |
CN113157582B (zh) * | 2021-04-28 | 2024-03-08 | 中国工商银行股份有限公司 | 测试脚本执行序列确定方法及装置 |
CN113342699B (zh) * | 2021-07-26 | 2023-08-04 | 中南大学 | 一种软件无线电符合性测试方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8214811B2 (en) * | 2006-10-23 | 2012-07-03 | International Business Machines Corporation | Instantiating an interface or abstract class in application code |
US8826092B2 (en) * | 2011-10-25 | 2014-09-02 | International Business Machines Corporation | Characterization and validation of processor links |
CN104375934B (zh) * | 2014-10-22 | 2017-05-03 | 江苏科技大学 | 一种Android手机软件可靠性测试方法 |
-
2018
- 2018-03-08 CN CN201810190656.2A patent/CN108170613B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108170613A (zh) | 2018-06-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170613B (zh) | 一种软件测试用例自动生成方法 | |
Chung et al. | Connected components in random graphs with given expected degree sequences | |
Li et al. | Correlation decay up to uniqueness in spin systems | |
Boguná et al. | Class of correlated random networks with hidden variables | |
Zou et al. | Finding top-k maximal cliques in an uncertain graph | |
CN109005055B (zh) | 基于多尺度拓扑空间的复杂网络信息节点重要度评价方法 | |
Barrat et al. | Rate equation approach for correlations in growing network models | |
Ma et al. | Identifying and ranking influential spreaders in complex networks with consideration of spreading probability | |
Planken et al. | Computing all-pairs shortest paths by leveraging low treewidth | |
Serrano et al. | Percolation in self-similar networks | |
CN102880799A (zh) | 一种基于多属性决策的复杂网络节点重要度综合评价方法 | |
CN110135092A (zh) | 基于半局部中心性的复杂加权交通网关键节点识别方法 | |
CN110543728B (zh) | 一种城市交通路网关键路口发现方法 | |
CN107276793B (zh) | 基于概率跳转随机游走的节点重要性度量方法 | |
CN106682514B (zh) | 基于子图挖掘的系统调用序列特征模式集生成方法 | |
Borboudakis et al. | Incorporating causal prior knowledge as path-constraints in Bayesian networks and maximal ancestral graphs | |
CN105183796A (zh) | 一种基于聚类的分布式链路预测方法 | |
CN107945036A (zh) | 一种在线社交网络中有影响力传播者识别与量化的方法 | |
CN108549816B (zh) | 一种基于有向加权网络的软件安全性的量化评估方法 | |
CN109614520B (zh) | 一种面向多模式图匹配的并行加速方法 | |
CN102799960B (zh) | 面向数据模型的并行业务流程异常检测方法 | |
CN103559318B (zh) | 对异质信息网络包含的对象进行排序的方法 | |
CN106021170A (zh) | 采用半监督低秩表示模型的图构建方法 | |
Su et al. | A new random-walk based label propagation community detection algorithm | |
CN112486651A (zh) | 一种基于改进遗传算法的云测试平台任务调度方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |