CN110554952B - 一种基于搜索的分层回归测试数据生成方法 - Google Patents

一种基于搜索的分层回归测试数据生成方法 Download PDF

Info

Publication number
CN110554952B
CN110554952B CN201810564743.XA CN201810564743A CN110554952B CN 110554952 B CN110554952 B CN 110554952B CN 201810564743 A CN201810564743 A CN 201810564743A CN 110554952 B CN110554952 B CN 110554952B
Authority
CN
China
Prior art keywords
test data
matrix
target
node
equal
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
CN201810564743.XA
Other languages
English (en)
Other versions
CN110554952A (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.)
Xian University of Posts and Telecommunications
Original Assignee
Xian University of Posts and Telecommunications
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 Xian University of Posts and Telecommunications filed Critical Xian University of Posts and Telecommunications
Priority to CN201810564743.XA priority Critical patent/CN110554952B/zh
Publication of CN110554952A publication Critical patent/CN110554952A/zh
Application granted granted Critical
Publication of CN110554952B publication Critical patent/CN110554952B/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)
  • Debugging And Monitoring (AREA)

Abstract

针对在回归测试中原有的测试数据集往往难以满足新版本软件的测试需求问题,提出一种基于搜索的分层回归测试数据生成方法。方法主要包含目标方法集获取模块和测试数据生成模块。对新版本程序进行抽象分析,提取出方法调用图,利用方法调用轨迹和已有测试数据建立方法覆盖信息,获取目标方法集,并通过计算贝叶斯条件概率对目标方法集进行优先选择;利用Hadamard矩阵设计正交种群,同时结合已有测试数据集进行种群初始化,采用基于种群的全局搜索和基于个体的局部搜索的文化基因算法对目标方法集生成测试数据。本发明通过利用从不同层次依次获取覆盖目标以及文化基因算法进行回归测试数据的生成,以提高测试数据集的覆盖率和检错能力,降低回归测试的成本。

Description

一种基于搜索的分层回归测试数据生成方法
技术领域
本发明属于软件测试技术领域,特别是在回归测试技术领域,用于进行回归测试数据生成,提高回归测试原有数据集的缺陷检错能力,是一种回归测试数据生成优化方法。
背景技术
软件测试是提高软件质量和软件可靠性的重要手段,同时也可以提高被测软件的可信度。所谓回归测试,是指修改了程序代码后,对修改后程序重新测试,以确认修改过程中没有引入新的错误,或导致其他代码产生错误。
目前,回归测试研究往往被分为三大类:测试数据选择、测试数据修复和测试数据生成。其中,测试数据生成技术是指根据程序的新版本和现有测试数据生成新的测试数据,使得新测试数据可以覆盖新版本程序的修改部分和新增部分。与传统的测试数据生成不同,回归测试数据生成的特点是:新的测试数据只需要覆盖新版本软件修改和新增的部分,同时充分根据已有测试数据集和测试执行信息辅助生成新的测试数据集。
在软件生命周期中,由于频繁地对旧版本软件进行修改,使得原有测试数据集中某些测试数据不再满足新版本软件的测试需求,从而难以保证已有测试数据集可以识别到软件修改和新增部分,导致难以发现软件中存在的缺陷或潜在问题。为了补充已有测试数据集的完备性,则需要对原有测试数据集进行扩充,目前回归测试数据生成技术主要针对程序语句级别,分析发生改变的语句、分支或路径,但对于复杂软件而言语句级分析粒度过于精细导致复杂度过大,且将测试数据的覆盖率和测试数据生成效率作为最终评价,而忽视了测试数据的检错能力。
为此提出一种基于搜索的分层回归测试数据生成方法。方法主要包含目标方法集获取模块和测试数据生成模块。对新版本程序进行抽象分析,提取出方法调用图,利用方法调用图和已有测试数据建立程序执行信息,获取目标方法集,之后通过计算贝叶斯条件概率对目标方法集进行优先选择;利用H-矩阵设计正交种群,同时结合已有测试数据集进行种群初始化,采用基于种群的全局搜索和基于个体的局部搜索的文化基因算法(MA)对有序目标方法集生成测试数据。
发明内容
本发明要解决的问题是:现有回归测试数据生成技术中测试数据难以满足新版本软件测试需求问题,提出一种基于搜索的分层回归测试数据生成方法,在提高粒度分析发生程序可能引入错误或者新增方法、提高测试数据检错能力、降低时间资源消耗的情况下,有效提高回归测试效率。
本发明的技术方案为:前期预处理采用程序方法调用图、程序执行信息在方法级别分析程序可能引入错误或者新增部分,获取目标方法集;后期采用启发式搜索算法文化基因算法针对目标方法集进行回归测试数据生成。本发明的特征在于包括以下步骤:
(1)对于一个方法数目为n的新版本Java程序Pnew,采用Doxygen进行处理,得到方法调用图FunCall.html文件;用Jsoup对FunCall.html中的元素类名"dynheader"下的标签area为”id=nodei,title=className.fName,href=xx.html#id"的语句进行解析,其中nodei(1≤i≤n)为方法调用图的节点,className.fName为id对应的类名.方法名,xx.html#id是被调用的方法信息,其中id为被调用方法的名称;解析area中的语句信息,可以将方法调用轨迹信息抽象表示为方法调用矩阵M,若方法i和j之间存在调用关系,则矩阵元素mij=1,否则mij=0;对M进行遍历,用countCall数组统计每个方法的被调用次数c,将c作为每个节点入边权值wk(1≤k≤n),更新矩阵元素mij;将FunCall.html文件中满足id=nodei和title=className.fName的节点信息作为Mapping.txt的一条记录;
(2)利用步骤(1)得到的矩阵M,对Pnew执行原有测试数据集T并收集程序执行信息,该程序执行信息采用二维矩阵A来表示为:
Figure GDA0003920331700000021
其中,第i(1≤i≤m)行为方法f1,f2,…,fm,第j(1≤j≤n)列为测试数据t1,t2,…,tn,如果测试数据tj覆盖了方法fi,则aij=1,否则aij=0;用向量v=[v1,…,vi,…vm]表示测试数据的执行结果,其中元素vi表示第j个测试数据的执行结果:如果成功,则vj=1,否则vj=0;遍历矩阵A,得到目标方法集合Ck={ci∈A|aij=0∩(aij=1∧vi=0)};
(3)假定方法集是相互独立的,通过贝叶斯定理计算出方法集ck的条件概率P(ck|v),即目标方法包含错误的概率为:
Figure GDA0003920331700000031
其中,wk是第k(1≤k≤n)个节点入边权值,从P(v)是一个标准化常数,由所有ck定义,无需直接计算,由于每次执行都是独立的,故
Figure GDA0003920331700000032
其中P(vi|ck)定义为:
Figure GDA0003920331700000033
其中,ε定义为:
Figure GDA0003920331700000034
其中,hj∈[0,1]表示方法j不包含错误的概率。在上述定义中,
Figure GDA0003920331700000035
假定p=0.01,即假定源程序大部分方法都没有引入错误,其中M为方法的个数,|ck|是目标方法集ck包含方法的个数;将ε和P(vi|ck)代入P(v|ck),可以得到P(v|ck)关于hj的表达式,hj是通过最大似然估计
Figure GDA0003920331700000036
得到的,其中H={hj∈[0,1]|j∈ck};将得到的P(v|ck),P(ck)代入到P(ck|v)的计算公式中,将ck按照P(ck|v)值递增的顺序进行排列,得到有序目标方法集c'k={fname1,fname2,…fnamen}(1≤k≤n);
(4)利用步骤(1)得到的Mapping.txt,查找c'k中fname1对应的名为className的class文件,调用静态分析工具soot对该class文件进行分析,得到方法fname1的控制流数据Control.dot,Control为方法名称;Control.dot文件由集合T表示为T={label,fillcolor,Si→Sj},其中label为该方法的名称或方法中的语句,label="VarNumi:var=value",VarNumi(1≤i≤n)为语句行号,var为变量名,value为变量值,fillcolor={gray,lightgray},gray表示为开始节点,hightgray为结束节点,Si→Sj为语句Si和Sj的依赖指向关系,对c'k中的fnamek对应每个class文件进行静态分析可得到方法fnamek的Control.dot文件;
(5)扫描Control.dot,若label中包含goto标签的语句,则分支计数器b累加1,
Figure GDA0003920331700000044
Figure GDA0003920331700000045
,其中任意一条路径pi表示为pi=gray-B-lightgrap,B={1,2,3,…n}表示路径分支节点集;在理论路径集Path中选取路径pi=gray-1-2-…-n-lightgray作为目标路径,同时为目标路径中每个节点插入分支函数,得到最终的目标路径为tpi=gray-1-f1(0)-2-f2(1)-…-n-fb(n-1)-lightgray;fi(x)表示目前测试数据与真分支的距离,x表示上一节点的输出,如果分支距离小于等0表示该真分支被覆盖,则将分支距离f(x)置为0。其中,分支距离是指测试数据x使一个谓词为真或为假的条件满足程度,则适应度函数可表示为标准化分支距离:fitness(x)=1-1.001-f(x),其中,
Figure GDA0003920331700000041
(6)一个n×n阶的H-矩阵可以表示为:
H×HT=HT×H=nI
其中,H-矩阵的所有矩阵元素取值为+1或-1,I为单位矩阵,2n阶的H-矩阵表示为:
Figure GDA0003920331700000042
利用H-矩阵建立正交数组Lm(jn),其中m为正交数组的行数,表示测试次数或测试用例数,n为正交数组的列数,表示被测对象的个数,j为正交数组中的码数,表示被测对象的位级数,当位级数为2时,正交数组只有0或1两种取值;建立Lm(jn)首先需要设计一个阶数为k的矩阵Hk,其中
Figure GDA0003920331700000043
N=max{m,n},m为种群个数,n为被测对象数;接着对Hk的行进行从小到大排序并且删除Hk中元素全为0的第一列,形成矩阵Hk×k-1并将Hk×k-1转化成正交数组Lk(2k-1);最后采用正交数组Lk(jk-1)设计正交种群,再使用正交种群和已有测试数据集进行种群初始化操作;
(7)对步骤(6)中的初始群体进行编码,采用文化基因算法,其中局部迭代生成覆盖目标方法中理论路径集中的测试数据;使用步骤(5)中适应度函数计算初始种群P(0)中个体的适应性评价种群,即fitness(P(0));若达到最大迭代次数或者测试数据覆盖到目标路径,则输出测试数据;转到步骤(4),选取c'k中下一个目标方法fnamek,直至k=n时停止迭代,否则对种群交替进行竞争、协作和局部搜索操作,直到满足输出条件。
2、根据权利要求1所述的一种基于搜索的分层回归测试数据生成方法,其特征在于:该方法可以应用于Java程序回归测试数据生成,分析发生可能引入错误或者新增方法进而对其生成测试数据,以提高测试数据集的检错能力,降低软件测试成本。
本发明通过从Java程序获取方法调用图抽象方法调用矩阵,根据方法调用矩阵和已有测试数据建立程序执行信息获取目标方法集,之后通过计算贝叶斯条件概率对目标方法集进行优先选择;采用H-矩阵设计正交种群和部分原有测试数据集进行种群初始化,最后结合初始种群采用文化基因算法对目标方法集依次进行分析获取目标路径集进而生成测试数据。该回归测试数据生成方法,将分析新版本程序发生改变部分的粒度提到方法级别,先从方法级别分析出可能引入错误和新增部分作为覆盖目标方法集,即提取方法调用图.html文件,根据方法调用矩阵和原有测试数据建立程序执行信息,再利用贝叶斯概率计算方法中可能存在错误的概率,按照概率值的大小进行方法优先选择,得到有序目标方法集c'k={fname1,fname2,…fnamen}(1≤k≤n),再对目标方法集中的方法依次进行静态分析得到控制流图.dot文件,得到理论路径集选取目标路径,最后针对目标路径采用文化基因算法,生成覆盖目标路径的测试数据。该回归测试数据生成方法,可以应用于回归测试,提高回归测试效率。
附图说明
图1是本发明方法的流程图
图2是验证方法的一个Java实例程序
图3是从Java实例程序中提取的方法调用关系组织结构图
图4是从方法调用关系中提取的方法调用矩阵
图5是从class文件中提取的部分方法控制流信息
图6是测试数据生成模块框架图
图7是利用本发明对工业程序空中防撞系统Tcas进行回归测试数据生成与其他三种方法的覆盖率对比图
具体实施方式
以图2的实例程序为例来说明本发明的具体实施过程。
如图1,本发明前期预处理采用程序方法调用图、程序执行信息分析获取覆盖目标方法集,后期采用文化基因算法进行回归测试数据生成,具体步骤如下:
(1)对图2所示程序源代码.java文件用Doxygen工具抽取方法调用图.html文件,如图3所示,用Jsoup解析.html文件,得到方法调用关系矩阵,遍历矩阵更新矩阵元素得到加权方法调用关系矩阵,如图4所示,其中0表示两节点之间无有向边,1表示两节点之间存在行节点到列节点的有向边,2表示返回;
(2)结合原有测试数据集t1=(1,2,3)、t2=(3,4,5)、t3=(3,3,3)、t4=(3,3,4)和方法调用轨迹建立程序执行信息获取覆盖目标方法集,程序执行信息如表1所示,获取覆盖目标方法集为ck={<f4,f6>|<f8>};
表1程序执行信息
Figure GDA0003920331700000061
Figure GDA0003920331700000071
(3)利用贝叶斯概率计算每个方法可能含有错误的概率,通过最大似然估计得到h4=0.6,h6=0.8,h8=0,最后可得目标方法包含错误的概率为:P(c4|v)=0.042367,P(c6|v)=0.372826,P(c8|v)=0;按照值的大小进行方法排序,得到有序覆盖目标方法集为Ck={f6,f4,f8};
(4)如图1所示,将Ck={f6,f4,f8}和源码作为测试数据生成模块的输入,测试数据生成模块架构如图7所示,利用soot工具分析f6得到控制流图diffOfBorders.dot文件,结果如图6所示,分析得到理论路径数为21=2,则目标路径集为path={p1,p2},其中,p1=0-1-2-3-4-5-6-7-8,p1=0-1-2-3-4-7-8,其中,节点0的为开始节点标签fillcolor=gray,节点8为结束节点标签fillcolor=lightgray,依次首先选择p1为目标路径,插入分支函数f[4]=a>b?0:b-a+0.1,其中分支函数插入规则采用分支距离法,如表2所示:
表2不同分支条件距离函数
Figure GDA0003920331700000072
则插入分支函数的源码为:
Figure GDA0003920331700000073
(5)设计正交种群和部分原有测试数据初始化种群;初始化种群个数为m=8,被测对象个数为n=3,则
Figure GDA0003920331700000074
即产生一个H8的H-矩阵且对其行按Walsh值从小到大排序,即:
Figure GDA0003920331700000081
接着删除H8的第一列,即为H8×7
Figure GDA0003920331700000082
最后将矩阵H8×7转换成
Figure GDA0003920331700000083
则正交种群为:P(0)={{0,0,0},{1,2,3},{2,5,6},{1,4,5},{3,4,7},{3,5,6},{2,5,7},{2,4,6}},结合已有测试数据集中t3=(3,3,3)和t4=(3,3,4)进行种群初始化;
(6)计算种群的适应性,如果适应度值为0,则满足条件,输出覆盖目标路径的测试数据,否则,对种群交替进行竞争、协作和局部搜索操作,直到满足输出条件;继续在理论路径集中选择下一条目标路径进行静态分析生成覆盖目标路径的测试数据;接着选取有序覆盖目标方法下一个方法,直至方法集为φ,则停止算法;
通过以上过程可以识别出可能引入错误或新增的方法集合并对目标方法依次分析进行回归测试数据生成。用不同方法对四个基准程序,分别是三角形判定分类程序Triangle、西门子工业程序集中的Schedule和Tcas以及程序NextDay,其基本信息如表3所示:
表3测试程序信息
Figure GDA0003920331700000091
选择基于遗传算法(GA)和基于粒子群算法(PSO)以及随机法与本方法进行比较,在相同条件下分别运行每种方法,记录其生成测试数据时的迭代次数和耗时,实验结果如表4所示:
表4实验结果(迭代次数和耗时)
Figure GDA0003920331700000092
以表4中空中防撞系统Tcas为例,相比遗传算法需要平均迭代189.3次、运行时间6.513s,粒子群算法平均迭代49.1次、运行时间3.235s,以及随机法未能在规定的最大迭代次数中完成测试要求,本文方法只需要迭代26.9次、运行时间0.972s即可生成覆盖目标方法体中目标路径的测试数据。综合各种测试数据生成方法在不同基准程序的扩增效率,本方法与基于粒子群算法和基于遗传算法以及随机法的测试数据生成方法相比,测试数据生成效率平均分别提高了约50.5%和78.2%以及95.2%。由此可看出本发明在生成回归测试数据的效率较高。而且,通过多次运行结果求得的标准差可以看出,本发明在稳定性方面也具有较好的优势。
在同条件下,在实验源码中使用MuJava工具注入变异体,用四种方式生成的测试数据分别运行变异程序计算得出变异分数,变异分数=(杀死的变异体个数/注入的变异体个数)*100,得出平均变异分数如表5所示,本文方法与随机法、遗传法和粒子群法相比,测试数据检错能力平均分别提高了约47.9%和33.6%以及18.2%:
表5变异分数
Figure GDA0003920331700000101
同时从测试数据的覆盖率评价不同回归测试数据生成方法。以空中防撞系统Tcas为例,不同方法生成的测试数据路径覆盖率如图7所示。由图7可以看出,本文方法与其他三种相比有明显的优势。
通过上述实例验证,可以看出利用方法调用图、程序执行信息获取目标方法集和基于搜索的文化基因算法相结合回归测试数据生成方法能够有效地提高测试数据的覆盖率和检错能力,提高回归测试效率。

Claims (2)

1.一种基于搜索的分层回归测试数据生成方法,其特征在于包括以下步骤:
(1)对于一个方法数目为n的新版本Java程序Pnew,采用Doxygen进行处理,得到方法调用图FunCall.html文件;用Jsoup对FunCall.html中的元素类名"dynheader"下的标签area为”id=nodei,title=className.fName,href=xx.html#id"的语句进行解析,其中nodei(1≤i≤n)为方法调用图的节点,className.fName为id对应的类名.方法名,xx.html#id是被调用的方法信息,其中id为被调用方法的名称;解析area中的语句信息,可以将方法调用轨迹信息抽象表示为方法调用矩阵M,若方法i和j之间存在调用关系,则矩阵元素mij=1,否则mij=0;对M进行遍历,用countCall数组统计每个方法的被调用次数c,将c作为每个节点入边权值wk(1≤k≤n),更新矩阵元素mij;将FunCall.html文件中满足id=nodei和title=className.fName的节点信息作为Mapping.txt的一条记录;
(2)利用步骤(1)得到的矩阵M,对Pnew执行原有测试数据集T并收集程序执行信息,该程序执行信息采用二维矩阵A来表示为:
Figure FDA0003920331690000011
其中,第i(1≤i≤m)行为方法f1,f2,…,fm,第j(1≤j≤n)列为测试数据t1,t2,…,tn,如果测试数据tj覆盖了方法fi,则aij=1,否则aij=0;用向量v=[v1,…,vi,…vm]表示测试数据的执行结果,其中元素vi表示第j个测试数据的执行结果:如果成功,则vj=1,否则vj=0;遍历矩阵A,得到目标方法集合Ck={ci∈A|aij=0∩(aij=1∧vi=0)};
(3)假定方法是相互独立的,通过贝叶斯定理计算出方法集ck的条件概率P(ck|v),即目标方法包含错误的概率为:
Figure FDA0003920331690000012
其中,wk是第k(1≤k≤n)个节点入边权值,从P(v)是一个标准化常数,由所有ck定义,无需直接计算,由于每次执行都是独立的,故
Figure FDA0003920331690000021
其中P(vi|ck)定义为:
Figure FDA0003920331690000022
其中,ε定义为:
Figure FDA0003920331690000023
其中,hj∈[0,1]表示方法j不包含错误的概率,在上述定义中,
Figure FDA0003920331690000024
假定p=0.01,即假定源程序大部分方法都没有引入错误,其中M为方法的个数,|ck|是目标方法集ck包含方法的个数;将ε和P(vi|ck)代入P(v|ck),可以得到P(v|ck)关于hj的表达式,hj是通过最大似然估计
Figure FDA0003920331690000025
得到的,其中H={hj∈[0,1]|j∈ck};将得到的P(v|ck),P(ck)代入到P(ck|v)的计算公式中,将ck按照P(ck|v)值递增的顺序进行排列,得到有序目标方法集c'k={fname1,fname2,…fnamen}(1≤k≤n);
(4)利用步骤(1)得到的Mapping.txt,查找c'k中fname1对应的名为className的class文件,调用静态分析工具soot对该class文件进行分析,得到方法fname1的控制流数据Control.dot,Control为方法名称;Control.dot文件由集合T表示为T={label,fillcolor,Si→Sj},其中label为该方法的名称或方法中的语句,label="VarNumi:var=value",VarNumi(1≤i≤n)为语句行号,var为变量名,value为变量值,fillcolor={gray,lightgray},gray表示为开始节点,hightgray为结束节点,Si→Sj为语句Si和Sj的依赖指向关系,对c'k中的fnamek对应每个class文件进行静态分析可得到方法fnamek的Control.dot文件;
(5)扫描Control.dot,若label中包含goto标签的语句,则分支计数器b累加1,可得到理论路径数目为2b以及理论路径集
Figure FDA0003920331690000034
其中任意一条路径pi表示为pi=gray-B-lightgrap,B={1,2,3,…n}表示路径分支节点集;在理论路径集Path中选取路径pi=gray-1-2-…-n-lightgray作为目标路径,同时使用分支距离法为目标路径中每个节点插入分支函数,得到最终的目标路径为:tpi=gray-1-f1(0)-2-f2(1)-…-n-fb(n-1)-lightgray;fi(x)表示目前测试数据与真分支的距离,x表示上一节点的输出,如果分支距离小于等于0表示该真分支被覆盖,则将分支距离f(x)置为0; 其中,分支距离是指测试数据x使一个谓词为真或为假的条件满足程度,则适应度函数可表示为标准化分支距离:fitness(x)=1-1.001-f(x),其中,
Figure FDA0003920331690000031
(6)一个n×n阶的H-矩阵可以表示为:
H×HT=HT×H=nI
其中,H-矩阵的所有矩阵元素取值为+1或-1,I为单位矩阵,2n阶的H-矩阵表示为:
Figure FDA0003920331690000032
利用H-矩阵建立正交数组Lm(jn),其中m为正交数组的行数,表示测试次数或测试用例数,n为正交数组的列数,表示被测对象的个数,j为正交数组中的码数,表示被测对象的位级数,当位级数为2时,正交数组只有0或1两种取值;建立Lm(jn)首先需要设计一个阶数为k的矩阵Hk,其中
Figure FDA0003920331690000033
N=max{pm,pn},pm为种群个数,pn为被测对象数;接着对Hk的行进行从小到大排序并且删除Hk中元素全为0的第一列,形成矩阵Hk×k-1并将Hk×k-1转化成正交数组Lk(2k-1);最后采用正交数组Lk(jk-1)设计正交种群,再使用正交种群和已有测试数据集进行种群初始化操作;
(7)对步骤(6)中的初始群体进行编码,采用文化基因算法,迭代生成覆盖目标方法中理论路径集中的测试数据;使用步骤(5)中适应度函数计算初始种群P(0)中个体的适应性评价种群,即fitness(P(0));若达到最大迭代次数或者测试数据覆盖到目标路径,则输出测试数据;转到步骤(4),选取c'k中下一个目标方法fnamek,直至k=n时停止迭代,否则对种群交替进行竞争、协作和局部搜索操作,直到满足输出条件。
2.根据权利要求1所述的一种基于搜索的分层回归测试数据生成方法,其特征在于:该方法可以应用于Java程序回归测试数据生成,分析发生可能引入错误或者新增方法进而对其生成测试数据,以提高测试数据集的检错能力,降低软件测试成本。
CN201810564743.XA 2018-06-04 2018-06-04 一种基于搜索的分层回归测试数据生成方法 Active CN110554952B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810564743.XA CN110554952B (zh) 2018-06-04 2018-06-04 一种基于搜索的分层回归测试数据生成方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810564743.XA CN110554952B (zh) 2018-06-04 2018-06-04 一种基于搜索的分层回归测试数据生成方法

Publications (2)

Publication Number Publication Date
CN110554952A CN110554952A (zh) 2019-12-10
CN110554952B true CN110554952B (zh) 2023-01-20

Family

ID=68736031

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810564743.XA Active CN110554952B (zh) 2018-06-04 2018-06-04 一种基于搜索的分层回归测试数据生成方法

Country Status (1)

Country Link
CN (1) CN110554952B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111666221B (zh) * 2020-07-03 2022-09-27 西安邮电大学 基于天牛须搜索的软件测试数据集扩增方法
CN111881654B (zh) * 2020-08-01 2023-07-18 牡丹江师范学院 一种基于多目标优化的刑罚测试数据扩增方法

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908020A (zh) * 2010-08-27 2010-12-08 南京大学 一种基于分类挖掘和版本变更的测试用例优先化方法
CN102750153A (zh) * 2012-06-29 2012-10-24 南京大学 一种基于程序变更的回归测试用例集构建方法
CN102831060A (zh) * 2012-08-24 2012-12-19 东南大学 一种基于修改影响分析的部件软件回归测试用例更新方法
CN102915271A (zh) * 2012-10-31 2013-02-06 北京邮电大学 基于控制流图的单元回归测试用例集合优化方法
CN105718368A (zh) * 2016-01-15 2016-06-29 西安邮电大学 一种软件测试数据扩增方法
CN105760295A (zh) * 2015-12-28 2016-07-13 天津大学 基于搜索算法的多缺陷定位方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10289532B2 (en) * 2015-04-08 2019-05-14 Opshub, Inc. Method and system for providing delta code coverage information
US20170024403A1 (en) * 2015-06-21 2017-01-26 Dan Tocchini System and Method for Dynamic Predictive Analytics for Pattern Search and Publishing Engine for Responsive Graphical Design

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101908020A (zh) * 2010-08-27 2010-12-08 南京大学 一种基于分类挖掘和版本变更的测试用例优先化方法
CN102750153A (zh) * 2012-06-29 2012-10-24 南京大学 一种基于程序变更的回归测试用例集构建方法
CN102831060A (zh) * 2012-08-24 2012-12-19 东南大学 一种基于修改影响分析的部件软件回归测试用例更新方法
CN102915271A (zh) * 2012-10-31 2013-02-06 北京邮电大学 基于控制流图的单元回归测试用例集合优化方法
CN105760295A (zh) * 2015-12-28 2016-07-13 天津大学 基于搜索算法的多缺陷定位方法
CN105718368A (zh) * 2016-01-15 2016-06-29 西安邮电大学 一种软件测试数据扩增方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A Clustering-Bayesian Network Based Approach for Test Case Prioritization;Xiaobin Zhao;《2015 IEEE 39th Annual Computer Software and Applications Conference》;20150924;全文 *
回归测试中的测试用例优先排序技术述评;陈翔等;《软件学报》;20130523(第08期);全文 *
基于变异分析和覆盖准则的回归测试用例集缩减;郑炜等;《西北工业大学学报》;20170615(第03期);全文 *

Also Published As

Publication number Publication date
CN110554952A (zh) 2019-12-10

Similar Documents

Publication Publication Date Title
Meng et al. Semi-supervised software defect prediction model based on tri-training.
Xia et al. Collective personalized change classification with multiobjective search
Kessentini et al. Search-based design defects detection by example
CN107862327B (zh) 一种基于多特征的安全缺陷识别系统和方法
Kaur et al. An empirical study of software entropy based bug prediction using machine learning
Yun et al. Do Vision-Language Pretrained Models Learn Composable Primitive Concepts?
CN109542783B (zh) 一种基于变量分割的扩展有限状态机测试数据生成方法
CN110554952B (zh) 一种基于搜索的分层回归测试数据生成方法
CN113326187A (zh) 数据驱动的内存泄漏智能化检测方法及系统
Du et al. A quantitative analysis framework for recurrent neural network
CN115935372A (zh) 一种基于图嵌入和双向门控图神经网络的漏洞检测方法
CN113904844B (zh) 基于跨模态教师-学生网络的智能合约漏洞检测方法
CN116578336A (zh) 一种基于抄袭者-检测器对抗的软件克隆检测方法
Carbery et al. A new data analytics framework emphasising pre-processing in learning AI models for complex manufacturing systems
Tang et al. SeVulDet: A semantics-enhanced learnable vulnerability detector
CN110502669A (zh) 基于n边dfs子图的轻量级无监督图表示学习方法及装置
KR102531742B1 (ko) 센서 데이터의 누락값 보정 방법 및 누락값 보정 장치
Qian et al. A strategy for multi-target paths coverage by improving individual information sharing
CN111562943B (zh) 一种基于事件嵌入树及gat网络的代码克隆检测方法和装置
Ji et al. Improving Oracle-Guided Inductive Synthesis by Efficient Question Selection
Omi et al. Multiple authors identification from source code using deep learning model
Duy et al. VulnSense: Efficient Vulnerability Detection in Ethereum Smart Contracts by Multimodal Learning with Graph Neural Network and Language Model
CN117435246B (zh) 一种基于马尔可夫链模型的代码克隆检测方法
Xu et al. A log-linear probabilistic model for prioritizing extract method refactorings
Tieppo et al. Adaptive Global k-Nearest Neighbors for Hierarchical Classification of Data Streams

Legal Events

Date Code Title Description
PB01 Publication
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