CN108170613B - 一种软件测试用例自动生成方法 - Google Patents

一种软件测试用例自动生成方法 Download PDF

Info

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
Application number
CN201810190656.2A
Other languages
English (en)
Other versions
CN108170613A (zh
Inventor
王博
张琨
尹魏昕
吴倩
林星辰
张家旺
徐建
蔡颖
牟甲鹏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nanjing University of Science and Technology
National Computer Network and Information Security Management Center
Original Assignee
Nanjing University of Science and Technology
National Computer Network and Information Security Management Center
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Nanjing University of Science and Technology, National Computer Network and Information Security Management Center filed Critical Nanjing University of Science and Technology
Priority to CN201810190656.2A priority Critical patent/CN108170613B/zh
Publication of CN108170613A publication Critical patent/CN108170613A/zh
Application granted granted Critical
Publication of CN108170613B publication Critical patent/CN108170613B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test 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
式中,vcic∈kc-core且
Figure BDA0001591599760000031
其中,子图节点集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,具体计算公式为:
Figure BDA0001591599760000032
式中,n表示类节点的总个数,bic为节点vcic的介数,具体为:
Figure BDA0001591599760000033
式中,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,则有:
Figure BDA0001591599760000041
其中,kjc out为节点vcjc的出度,s为随机跳转概率;
步骤2.1.3.3、设定阀值ε,若有
Figure BDA0001591599760000042
则节点vcic的PageRank值:
pric=PRic (k+1)
否则k=k+1,执行步骤2.1.3.2。
步骤2.1.4、确定节点vcic的网络效率neic,具体计算公式为:
Figure BDA0001591599760000043
式中,dicjc为有向网络GC中节点vcic和vcjc间的最短路径长度。
步骤2.2、对类级软件网络GC中各节点vcic重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XC=(xcicuc),xcicuc表示重要性测度指标,具体为:
步骤2.2.1、对核数指标core′ic进行归一化处理:
Figure BDA0001591599760000044
对介数中心性指标bc′ic进行归一化处理:
Figure BDA0001591599760000045
对PageRank值pr'ic进行归一化处理:
Figure BDA0001591599760000046
对网络效率指标ne′ic进行归一化处理:
Figure BDA0001591599760000047
式中,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},构建归一化矩阵:
Figure BDA0001591599760000051
式中,m为选定测度的个数。
步骤2.3、根据熵权法确定衡量类节点重要性的测度指标权重,计算类级软件网络GC中各节点vcic的综合重要性,具体方法为:
确定各指标的熵和熵权值,其中,熵的计算公式为:
Figure BDA0001591599760000052
式中,
Figure BDA0001591599760000053
n为类节点的个数,m为选定测度的个数,xcicuc为归一化后的重要性测度指标矩阵X中对应位置的元素;
熵权值的计算公式为:
Figure BDA0001591599760000054
则重要性测度指标的熵权矩阵为WC=(ωcuc)1×m,获得加权规范矩阵:
Figure BDA0001591599760000055
则节点vcic的综合重要性为:
Figure BDA0001591599760000056
式中,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
式中,vpip∈kp-core且
Figure BDA0001591599760000061
子图节点集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,具体计算公式为:
Figure BDA0001591599760000062
式中,N表示包节点的总个数,bip为节点vpip的介数,具体为:
Figure BDA0001591599760000063
式中,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,则有:
Figure BDA0001591599760000064
其中,kjp out为节点vpjp的出度,s为随机跳转概率;
步骤2.4.3.3、设定阀值ε,若有
Figure BDA0001591599760000071
则节点vpip的PageRank值:
prip=PRip (k+1)
否则k=k+1,跳至步骤2.4.3.2。
步骤2.4.4、确定节点vpip的网络效率neip,具体计算公式为:
Figure BDA0001591599760000072
式中,dipjp为有向网络GP中节点vpip和vpjp间的最短路径长度。
步骤2.5、对包级软件网络GP中各节点vpip重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XP=(xpipup),xpipup表示重要性测度指标,具体为:
步骤2.5.1、对核数指标core′ip进行归一化处理:
Figure BDA0001591599760000073
对介数中心性指标bc′ip进行归一化处理:
Figure BDA0001591599760000074
对PageRank值pr′ip进行归一化处理:
Figure BDA0001591599760000075
对网络效率指标ne′ip进行归一化处理:
Figure BDA0001591599760000076
式中,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},构建归一化矩阵:
Figure BDA0001591599760000081
式中,m为选定测度的个数。
步骤2.6、根据熵权法确定衡量包节点重要性的测度指标权重,计算包级软件网络GP中各节点vpip的综合重要性,具体方法具体为:
确定各指标的熵,计算公式为:
Figure BDA0001591599760000082
式中,
Figure BDA0001591599760000083
N为包节点的个数,m为选定测度的个数,xpipup为归一化后的重要性测度指标矩阵X中对应位置的元素;
确定各指标的熵权值:
Figure BDA0001591599760000084
重要性测度指标的熵权矩阵为WP=(ωpup)1×m,获得加权规范矩阵:
Figure BDA0001591599760000085
则节点vpip的综合重要性为:
Figure BDA0001591599760000086
式中,1≤ip≤n,1≤up≤m;
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,确定类级软件网络节点间的状态概率及包级软件网络节点间的转移概率,具体步骤如下:
步骤3.1、计算类级软件网络GC中任意两个节点vcic与vcjc间的依赖强度,具体公式为:
Figure BDA0001591599760000091
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数,此处的依赖包括继承、关联、聚合、组成。
步骤3.2、确定类级软件网络GC中任意节点vcic的状态概率,具体公式为:
Figure BDA0001591599760000092
式中,imp(vcjc)为节点vcjc的综合重要性。
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
Figure BDA0001591599760000093
式中,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,Π),其中:
A为转移概率矩阵,
Figure BDA0001591599760000101
即任意两个隐含状态Xip和Xjp之间的转移概率;
B为状态概率矩阵,
Figure BDA0001591599760000102
若类vcic属于包vpip,则
Figure BDA0001591599760000103
否则,bipic=0。
Π为初始状态分布,Π={π12,…,πN},其中
Figure BDA0001591599760000104
表示t=0时刻,处于隐含状态Xip的概率。
步骤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可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
Figure BDA0001591599760000105
式中,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
式中,vcic∈kc-core且
Figure BDA0001591599760000111
子图节点集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,具体计算公式为:
Figure BDA0001591599760000121
式中,n表示类节点的总个数,bic为节点vcic的介数,具体为:
Figure BDA0001591599760000122
式中,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,则有
Figure BDA0001591599760000123
其中,kjc out为节点vcjc的出度,s为随机跳转概率;
步骤2.1.3.3、设定阀值ε,若有
Figure BDA0001591599760000124
则节点vcic的PageRank值:
pric=PRic (k+1)
否则k=k+1,执行步骤2.1.3.2。
步骤2.1.4、确定节点vcic的网络效率neic,具体计算公式为:
Figure BDA0001591599760000131
式中,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进行归一化处理:
Figure BDA0001591599760000132
对介数中心性指标bc′ic进行归一化处理:
Figure BDA0001591599760000133
对PageRank值pr′ic进行归一化处理:
Figure BDA0001591599760000134
对网络效率指标ne′ic进行归一化处理:
Figure BDA0001591599760000135
式中,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},构建归一化矩阵:
Figure BDA0001591599760000141
式中,m为选定测度的个数,本实施例中m=4。
此时,
Figure BDA0001591599760000142
步骤2.3、根据熵权法确定衡量类节点重要性的测度指标权重,进而计算类级软件网络GC中各节点vcic的综合重要性,具体方法为:
确定各指标的熵,计算公式为:
Figure BDA0001591599760000143
式中,
Figure BDA0001591599760000144
n为类节点的个数,m为选定测度的个数,xcicuc为归一化后的重要性测度指标矩阵X中对应位置的元素;
确定各指标的熵权值:
Figure BDA0001591599760000151
则重要性测度指标的熵权矩阵为WC=(ωcuc)1×m,获得加权规范矩阵:
Figure BDA0001591599760000152
则节点vcic的综合重要性为:
Figure BDA0001591599760000153
式中,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
式中,vpip∈kp-core且
Figure BDA0001591599760000154
子图节点集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,具体计算公式为:
Figure BDA0001591599760000161
式中,N表示包节点的总个数,bip为节点vpip的介数,具体为:
Figure BDA0001591599760000162
式中,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,则有
Figure BDA0001591599760000163
其中,kjp out为节点vpjp的出度,s为随机跳转概率;
步骤2.4.3.3、设定阀值ε,若有
Figure BDA0001591599760000164
则节点vpip的PageRank值:
prip=PRip (k+1)
否则k=k+1,跳至步骤2.4.3.2。
步骤2.4.4、确定节点vpip的网络效率neip,具体计算公式为:
Figure BDA0001591599760000165
式中,dipjp为有向网络GP中节点vpip和vpjp间的最短路径长度。
步骤2.5、对包级软件网络GP中各节点vpip重要性测度值进行归一化处理,得到归一化后的重要性测度指标矩阵XP=(xpipup),xpipup表示重要性测度指标,具体为:
步骤2.5.1、对核数指标core′ip进行归一化处理:
Figure BDA0001591599760000171
对介数中心性指标bc′ip进行归一化处理:
Figure BDA0001591599760000172
对PageRank值pr′ip进行归一化处理:
Figure BDA0001591599760000173
对网络效率指标ne′ip进行归一化处理:
Figure BDA0001591599760000174
式中,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},构建归一化矩阵:
Figure BDA0001591599760000175
式中,m为选定测度的个数,本方案中m=4。
此时,
Figure BDA0001591599760000176
步骤2.6、根据熵权法确定衡量包节点重要性的测度指标权重,进而计算包级软件网络GP中各节点vpip的综合重要性,具体方法具体为:
确定各指标的熵,计算公式为:
Figure BDA0001591599760000181
式中,
Figure BDA0001591599760000182
N为包节点的个数,m为选定测度的个数,xpipup为归一化后的重要性测度指标矩阵X中对应位置的元素;
确定各指标的熵权值:
Figure BDA0001591599760000183
则重要性测度指标的熵权矩阵为WP=(ωpup)1×m,获得加权规范矩阵:
Figure BDA0001591599760000184
则节点vpip的综合重要性为:
Figure BDA0001591599760000185
式中,1≤ip≤n,1≤up≤m;
此时,imp(vp1)=0.881,imp(vp2)=1.000。
步骤3、分别根据类级、包级软件网络结构,计算各网络中节点间的依赖强度,进而确定状态概率及转移概率,具体步骤如下:
步骤3.1、计算类级软件网络GC中任意两个节点vcic与vcjc间的依赖强度,具体公式为:
Figure BDA0001591599760000186
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数,此处的依赖包括继承、关联、聚合、组成。
此时,
Figure BDA0001591599760000191
步骤3.2、确定类级软件网络GC中任意节点vccc的状态概率,具体公式为:
Figure BDA0001591599760000192
式中,imp(vcjc)为节点vcjc的综合重要性。
此时,state1=2.757,state2=1.908,state3=2.208,state4=4.000,state5=1.838。
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
Figure BDA0001591599760000193
式中,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,Π),其中:
A为转移概率矩阵,
Figure BDA0001591599760000194
即任意两个隐含状态Xip和Xjp之间的转移概率;
B为状态概率矩阵,
Figure BDA0001591599760000201
若类vcic属于包vpip,则
Figure BDA0001591599760000202
否则,bipic=0;
Π为初始状态分布,Π={π12,…,πN},其中
Figure BDA0001591599760000203
表示t=0时刻,处于隐含状态Xip的概率;
此时,有:
Figure BDA0001591599760000204
Figure BDA0001591599760000205
Π={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可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
Figure BDA0001591599760000206
式中,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间的依赖强度,具体公式为:
Figure FDA0002932359590000021
式中,FACjc表示节点vcjc包含的属性和方法的数量,relcicjc为节点vcic依赖于vcjc的特征数;
步骤3.2、确定类级软件网络GC中任意节点vcic的状态概率,具体公式为:
Figure FDA0002932359590000022
式中,imp(vcjc)为节点vcjc的综合重要性;
步骤3.3、计算包级软件网络GP中任意两个节点vpip与vpjp间的依赖强度,具体公式为:
Figure FDA0002932359590000023
式中,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,Π),其中:
A为转移概率矩阵,
Figure FDA0002932359590000031
B为状态概率矩阵,
Figure FDA0002932359590000032
若类vcic属于包vpip,则
Figure FDA0002932359590000033
Figure FDA0002932359590000034
否则,bipic=0;
Π为初始状态分布,Π={π1,π2,…,πN},其中
Figure FDA0002932359590000035
表示t=0时刻,处于隐含状态Xip的概率;
步骤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,即
Figure FDA0002932359590000036
选择包节点vpμp所对应的包中,综合重要性数值最大的类节点vcγc,作为测试用例的起始类,记作conditionr,此时r=0,则测试用例选择概率
Figure FDA0002932359590000041
步骤4.2.4、令r=r+1,计算vcγc可达且未遍历的类节点的测试用例选择概率,并取最大,此时:
Figure FDA0002932359590000042
式中,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对应一条测试用例序列。
CN201810190656.2A 2018-03-08 2018-03-08 一种软件测试用例自动生成方法 Active CN108170613B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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手机软件可靠性测试方法

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