CN105528289B - 一种基于分支覆盖与相似性的回归测试用例优先排序方法 - Google Patents

一种基于分支覆盖与相似性的回归测试用例优先排序方法 Download PDF

Info

Publication number
CN105528289B
CN105528289B CN201510884000.7A CN201510884000A CN105528289B CN 105528289 B CN105528289 B CN 105528289B CN 201510884000 A CN201510884000 A CN 201510884000A CN 105528289 B CN105528289 B CN 105528289B
Authority
CN
China
Prior art keywords
test case
branch
test
distance
covering
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.)
Expired - Fee Related
Application number
CN201510884000.7A
Other languages
English (en)
Other versions
CN105528289A (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.)
China University of Mining and Technology CUMT
Original Assignee
China University of Mining and Technology CUMT
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 China University of Mining and Technology CUMT filed Critical China University of Mining and Technology CUMT
Priority to CN201510884000.7A priority Critical patent/CN105528289B/zh
Publication of CN105528289A publication Critical patent/CN105528289A/zh
Application granted granted Critical
Publication of CN105528289B publication Critical patent/CN105528289B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3676Test management for coverage analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Biomedical Technology (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于分支覆盖与相似性的回归测试用例优先排序方法,包括下列步骤:1)收集测试用例运行时的剖面信息,并构造分支覆盖向量;2)通过欧式距离函数计算成对的向量之间的距离,并构造测试用例间的相异度矩阵;3)以测试用例为顶点,测试用例之间的连线、距离分别作为边及其边权重,构建测试用例不相似有限完全图。通过蚁群算法在图中寻找具有最长距离的测试用例优先排序序列。本发明解决了目前存在的回归测试用例优先排序方法错误发现效率不高,结果的稳定性较差等问题,不仅大幅提高了回归测试错误发现效率、稳定性以及可扩展性,而且也提升了软件回归测试的自动化程度,进而提高了软件测试工作效率。

Description

一种基于分支覆盖与相似性的回归测试用例优先排序方法
技术领域
本发明属于软件测试领域,且特别是有关于一种基于分支覆盖与相似性的回归测试用例优先排序方法。
背景技术
软件测试是一项旨在帮助软件测试工程师或者质量保证工程师衡量软件质量,验证并确认被测软件能否满足设计要求进行评估的过程。作为软件开发过程中的一个重要组成部分,软件测试贯穿整个软件生命周期。软件的改正性维护、适应性维护以及完善性维护都将引起软件的变化,软件一旦发生变更就需要回归测试(Regression testing)被测软件,以确保新的变更没有产生副作用。回归测试是软件开发与维护过程中代价最昂贵的活动之一,占了总测试预算的80%,软件维护阶段总费用的50%。无论是传统的软件开发,还是快速迭代开发,抑或是敏捷开发,新版本的连续发布使得回归测试更加频繁。在这种背景下,回归测试需要消耗更多的人力与物力。一个成功的软件回归测试过程能够尽肯能早地发现被测软件产品中存在的回归错误、缺陷和失效,以便为错误定位与错误修复节省更多的资源,从而提高软件产品的质量。
回归测试用例优先排序(Test case prioritization)是软件回归测试中的一项重要的工作,通过重新排列测试用例的执行顺序,旨在让那些能够发现回归错误的测试用例尽可能早地执行,以便提高软件回归测试的效率。在演化的软件版本上进行回归测试之前,测试用例的错误发现能力是未知的。这就需要借助于代理,比如测试用例覆盖代码的能力,对测试用例进行优先排序。回归测试通常是在受限的测试资源与测试环境下开展的,这就意味着回归测试中仅能执行部分测试用例。另外,由于软件的改善性维护使得原有的测试用例不能够满足测试的需求,回归测试过程中需要注入新的测试用例以便满足回归测试充分性的要求。这就需要回归测试用例的优先排序方法必须是可扩展的。
传统的回归测试用例优先排序方法具有如下特点。
1、借助于测试用例覆盖代码的能力进行排序。
基于测试用例覆盖代码能力进行排序的方法根据测试用例覆盖代码的能力进行排序,覆盖能力越强的测试用例执行顺序越优先,或者是增加总覆盖能力越多地测试用例执行顺序越优先。然而,在回归测试过程中为了产生例外行为或者是测试一些专门的功能模块而随机产生了一些测试用例,这些测试用例并非都具有较强的覆盖代码的能力。而且,在测试过程中一旦发现严重错误将影响测试用例的执行,对于这些测试用例而言,它们的覆盖能力并不强,但仍能发现错误。这使得传统的基于覆盖的回归测试用例优先排序方法的错误发现效率不高。
2、同等对待具有相同覆盖能力或者相同增加总覆盖能力的测试用例。
基于覆盖的回归测试用例优先排序方法在排序过程中并没有区分具有相同覆盖能力(覆盖的代码数量相等)或者相同增加总覆盖能力(对总覆盖的代码数量的提升具有相同的贡献)的测试用例的差别。这使得基于覆盖的回归测试用例优先排序方法产生的结果具有较强的随机性,制约了该方法在实践中的应用。
3、一旦有新的测试用例注入原始的测试套件中,基于覆盖的回归测试用例优先排序方法需要重新排序测试用例。
在软件的完善性维护阶段会增加新的功能和性能要求,为了满足软件回归测试充分性的要求,需要注入新的测试用例。基于覆盖的回归测试用例优先排序方法根据测试用例的覆盖能力对其进行重新排序,这使得回归测试用例优先排序方法不具有扩展性。
随着敏捷开发的不断普及,软件的回归测试会更加频繁,传统的回归测试用例优先排序方法已经越来越不能满足实际软件回归测试的需要。
发明内容
本发明目的在于提供一种基于分支覆盖与相似性的回归测试用例优先排序方法,解决目前存在的回归测试用例优先排序方法效率不高、随机性较强以及不易于扩展等问题,进而提高回归测试错误发现效率,降低随机性对错误发现效率的影响,提升回归测试用例优先排序方法的可扩展性,从而更高效地开展软件回归测试,进而提高软件产品的质量。
本方面的技术方案为:基于分支覆盖和相似性的回归测试用例优先排序方法,在待测程序上运行所有的测试用例,通过动态插桩技术自动地获得每一个测试用例的执行剖面(profile),分析执行剖面并构建分支覆盖向量,如果分支被覆盖则在向量中的值为1,反之则为0;通过欧式距离函数计算成对的分支覆盖向量的距离,将该距离作为对应剖面的测试用例之间的距离;根据测试用例多样性理论,定义目标函数模型,并以此为指导,采用蚁群算法对回归测试用例进行优先排序。
为实现上述目标,本发明提出了一种基于分支覆盖与相似性的回归测试用例优先排序方法。本方法具体步骤如下。
1)测试用例剖面信息的收集与分支覆盖向量的构建。采用自动化方式批量执行所有的测试用例,并联合动态插桩技术获得运行测试用例产生的剖面信息文件。分析获得的剖面信息文件,并提取文件中的分支执行频率列为每一个测试用例构造分支覆盖向量。如果一个分支执行频率大于0,则在分支覆盖向量中该分支对应的值是1,否则是0。
2)成对的测试用例之间距离的计算。使用步骤1)产生的分支覆盖向量计算成对的剖面之间的距离,并将其作为与剖面信息对应的测试用例之间的距离。基于成对的测试用例之间的距离信息构造相异度矩阵。根据步骤1)产生的分支覆盖向量计算两个测试用例之间的欧式距离,计算公式如下:
式中Dis(X,Y)表示测试用例X与Y之间的欧式距离,xi和yi分别表示测试用例X和Y对应的分支覆盖向量中的第i分支的取值,n表示被测程序包含的分支数。
3)回归测试用例的优先排序。具体实施过程如下:首先以测试用例作为顶点,测试用例之间的连线作为边,邻接的测试用例之间的距离作为边的权重,构造测试用例不相似性有限完全图。然后以目标函数为指导,通过蚁群算法(Ant colony optimization,ACO)求解具有最长路径的哈密顿(Hamilton)路。测试用例的多样性有助于提高回归测试的错误发现效率,因此通过寻找具有最长距离的路径的测试用例序列以最大程度上保证测试用例的多样性。最后将产生的Hamilton路中的测试用例序列作为回归测试用例优先排序的最终序列。目标函数如下:
式中,D表示待排序的测试用例集合。
进一步,其中上述步骤1)的具体步骤如下:
步骤1)-1:起始状态;
步骤1)-2:在被测程序中自动注入动态插桩代码,并编译被测的源程序;
步骤1)-3:自动运行被测程序并输入一个测试用例;
步骤1)-4:收集运行每一个测试用例产生的剖面信息,并将其保存在磁盘中;
步骤1)-5:重复执行步骤1)-2、步骤1)-3、步骤1)-4,直到获取了一个测试套件中的所有测试用例的剖面信息;
步骤1)-6:读取保存的每一个剖面信息文件,通过分析该文件提取待测程序中每一个分支被覆盖的频率信息。在此基础上,基于获得的分支覆盖的频率信息构造分支覆盖向量。若频率值大于0,则在分支覆盖向量中该分支的取值为1,否则为0。这个过程持续进行,直到为一个测试套件中的所有测试用例构造完分支覆盖向量为止;
步骤1)-7:将所有测试用例对应的分支覆盖向量保存到文件中,该文件中的每一行包括测试用例的编号信息,以及测试用例对应的分支覆盖向量;
步骤1)-8:测试用例的分支覆盖向量构造完毕。
进一步,其中上述步骤2)的具体步骤如下:
步骤2)-1:起始状态;
步骤2)-2:从磁盘中按行读取步骤1)-7产生的分支覆盖向量文件;
步骤2)-3:解析读取的每一行,将测试用例的编号作为键,测试用例对应的分支覆盖向量作为值,并封装成一个Map对象;
步骤2)-4:重复步骤2)-2和步骤2)-3,直到获得所有行的Map对象;
步骤2)-5:遍历Map对象,并通过欧式距离函数计算每一对测试用例之间的欧式距离;
步骤2)-6:基于计算的每一对测试用例之间的距离信息构造测试用例之间的相异度矩阵(DissimilarityMatrix),该矩阵是一个上三角矩阵(Upper Triangular Matrix),且对角线及其下方的元素值为0。将构建的测试用例之间的相异度矩阵信息保存在文件中;
步骤2)-7:测试用例之间的相异度矩阵构建完毕。
进一步,其中上述步骤3)的具体步骤如下:
步骤3)-1:起始状态;
步骤3)-2:以测试用例为顶点,测试用例之间的连线作为边构建测试用例有限完全图,读取步骤2)-7中产生的相异度矩阵,将测试用例之间的距离作为邻接测试用例的边权重;
步骤3)-3:初始化蚁群算法的参数。令时间t=0,循环次数Count=0,最大循环次数为MaxCount,将m只蚂蚁放于测试用例有限完全图中的n个测试用例上,设置有向图上每条边的初始化信息量ε(t)为一个常数,并且在初试时刻Δε(t)=0;
步骤3)-4:循环次数Count加1,蚂蚁的禁忌表索引号κ=1,禁忌表用来保存蚂蚁已经遍历过的测试用例;
步骤3)-5:蚂蚁数目κ加1;
步骤3)-6:计算蚂蚁个体的状态转移概率,选择测试用例j并前进,j表示蚂蚁下一步允许选择的测试用例。计算状态转移概率的公式如下:
式中,pij κ表示蚂蚁在t时刻由测试用例i到测试用例j的状态转移概率;allowedκ表示蚂蚁κ下一步允许选择的测试用例;α和β分别表示信息启发式因子和期望启发式因子;ηij(t)表示蚂蚁从测试用例i到测试用例j期望程度,其值等于测试用例i到测试用例j的距离,也就是测试用例i到测试用例j的距离越大,蚂蚁从测试用例i到测试用例j的期望程度越高;
步骤3)-6:修改禁忌表指针,选择好下一个测试用例后将蚂蚁移动到新的测试用例,并把该测试用例添加到该蚂蚁对应的禁忌表中;
步骤3)-7:如果所有的测试用例未被排序,则跳转到步骤3)-5,否则执行步骤3)-8;
步骤3)-8:更新每一条路径上的信息量,更新公式如下:
εij(t+n)=(1-ρ)×εij(t)+Δεij(t)
式中,εij(t+n)表示t+n时刻路径(i,j)上的信息量;ρ表示信息素挥发系数,则1-ρ表示信息素残留因子;Δεij(t)表示本次循环中路径(i,j)上的信息素增量;Δεij κ(t)表示第κ只蚂蚁在本次循环中保留在路径(i,j)上的信息量。Δεij κ(t)的计算公式如下:
式中,Q表示信息素强度,Lκ表示第κ只蚂蚁在本次循环所走路径的总长度。如果第κ只蚂蚁在t和t+1之间经过路径(i,j),Δεij等于否则等于0;
步骤3)-9:若蚁群算法满足Count≥MaxCount,则循环结束,否则该算法跳转到步骤3)-3;
步骤3)-10:蚁群执行完成并输出具有最长路径的回归测试用例序列;
步骤3)-11:回归测试用例优先排序完毕。
本发明基于分支覆盖与测试用例之间的相似性进行回归测试用例的优先排序,大幅提高了软件回归测试的错误发现效率与可扩展性;通过欧式距离函数计算成对的测试用例之间的距离信息,更准确的区分了测试用例覆盖分支的差异,为此降低了传统的基于覆盖的优先排序方法的随机性对回归测试错误发现效率的影响。一旦增加新的测试用例,本方法只需要计算新增加的测试之间的距离信息和新增测试用例与原有测试用例之间的距离信息,而原有的测试用例之间的距离信息不需要重新计算,大大地提高了回归测试用例优先排序方法的可扩展性。采用带有启发式的蚁群算法进行全局搜索,使之产生更优解。本发明从测试用例剖面信息的收集、测试用例相异度矩阵的构建,以及采用蚁群算法对测试用例进行优先排序,均采用自动化的方式进行,整个过程不需要人工干预,大大地提高了回归测试的效率,从而更好地控制软件产品的质量。
附图说明
图1为本发明实施的一种基于分支覆盖与相似性的回归测试用例优先排序方法的流程图。
图2为图1中剖面信息收集与分支覆盖向量构建的流程图。
图3为图1中构建测试用例相异度矩阵的流程图。
图4为图1中基于蚁群算法对测试用例进行优先排序的流程图。
具体实施方式
为了更清晰的了解本发明的技术内容,特举具体实施并配合所附图式说明如下。
图1为本发明实施的一种基于分支覆盖与相似的回归测试用例优先排序的流程图。
一种基于分支覆盖与相似性的回归测试用例优先排序方法,包括下列步骤。
S101测试用例剖面信息的收集与分支覆盖向量的构建,采用自动化方式批量执行所有的测试用例,并联合动态插桩技术获得运行测试用例产生的剖面信息文件。分析获得的剖面信息文件,并提取文件中的分支执行频率列为每一个测试用例构造分支覆盖向量。
S103构建测试用例相异度矩阵。使用步骤1)产生的分支覆盖向量计算成对的剖面之间的欧式距离,并将其作为与剖面信息对应的测试用例之间的距离。基于成对的测试用例之间的距离信息构造相异度矩阵。
S105构造测试用例不相似性有限完全图,以测试用例作为顶点,测试用例之间的连线作为边,邻接的测试用例之间的距离作为边的权重。基于测试用例多样性理论,通过蚁群算法求解具有最长路径的Hamilton路,构成Hamilton路的测试用例序列作为回归测试用例优先排序的最终序列。
图2为剖面信息收集与分支覆盖向量构建的流程图。测试用例剖面信息的收集,采用自动化方式批量执行所有的测试用例,并联合动态插桩技术获得运行测试用例产生的剖面信息文件。该文件是一个格式化的文件,即在每一行的固定位置显示分支的执行频率与分支的编号。分析获得的剖面信息文件,并提取文件中的分支执行频率列为每一个测试用例构造分支覆盖向量,具体步骤如下。
步骤1:起始状态;步骤2:通过工具gcov在被测程序中自动注入动态插桩代码,并编译被测的源程序;步骤3:自动运行被测程序并输入一个测试用例;步骤4:收集运行每一个测试用例产生的剖面信息,并将其保存在磁盘中;步骤5:重复执行步骤2、步骤3、步骤4,直到获取了一个测试套件中的所有测试用例的剖面信息;步骤6:读取保存的每一个剖面信息文件,通过分析该文件提取待测程序中每一个分支被覆盖的频率信息。在此基础上,基于获得的分支覆盖的频率信息构造分支覆盖向量,该向量的维度等于待测程序包含的分支数。若频率值大于0,则在分支覆盖向量中该分支的取值为1,否则为0。这个过程持续进行,直到为一个测试套件中的所有测试用例构造完分支覆盖向量为止;步骤7:将所有测试用例对应的分支覆盖向量保存到文件中,该文件中的每一行包括测试用例的编号信息,以及测试用例对应的分支覆盖向量;步骤8:测试用例的分支覆盖向量构造完毕。
图3为构建测试用例相异度矩阵的流程图。使用分支覆盖向量计算成对的剖面之间的欧式距离,并将其作为与剖面信息对应的测试用例之间的距离。基于成对的测试用例之间的距离信息构造测试用例相异度矩阵,具体步骤如下。
步骤1:起始状态;步骤2:从磁盘中按行读取分支覆盖向量文件;步骤3:解析读取的每一行,将测试用例的编号作为键,测试用例对应的分支覆盖向量作为值,并封装成一个Map对象;步骤4:重复步骤2和步骤3,直到获得所有行的Map对象;步骤5:遍历Map对象,并通过欧式距离函数计算每一对测试用例之间的欧式距离;步骤6:基于计算的每一对测试用例之间的距离信息构造测试用例之间的相异度矩阵,将构建的测试用例之间的相异度矩阵信息保存在文件中;步骤7:测试用例之间的相异度矩阵构建完毕。
图4为基于蚁群算法对测试用例进行优先排序的流程图。构造测试用例不相似性有限完全图,以测试用例作为顶点,测试用例之间的连线作为边,邻接的测试用例之间的距离作为边的权重。通过蚁群算法求解具有最长路径的Hamilton路。最后将产生的Hamilton路中的测试用例序列作为回归测试用例优先排序的最终序列,具体步骤如下。
步骤1:起始状态;步骤2:以测试用例为顶点,测试用例之间的连线作为边构建测试用例有限完全图,读取相异度矩阵,将测试用例之间的距离作为邻接测试用例的边权重;步骤3:初始化蚁群算法的参数,信息启发式因子α和期望启发式因子β分别的初始值分别为1和5,MaxCount的初始值为100,信息素挥发系数ρ的初始值为0.95,信息素强度Q的初始值是100,蚂蚁数m的初始值是待测程序中所包含的测试套件规模的一半。令时间t=0,循环次数Count=0,最大循环次数为MaxCount,将m只蚂蚁放于测试用例有限完全图中的n个测试用例上,并且设置有向图上每条边的初始化信息量ε(t)为一个常数,并且在初试时刻Δε(t)=0;步骤4:循环次数Count加1,蚂蚁的禁忌表索引号κ=1;步骤5:蚂蚁数目κ加1;步骤6:计算蚂蚁个体的状态转移概率,选择测试用例j并前进,j表示蚂蚁下一步允许选择的测试用例。计算状态转移概率的公式如下:
式中,pij κ表示蚂蚁在t时刻由测试用例i到测试用例j的状态转移概率;allowedκ表示蚂蚁κ下一步允许选择的测试用例;α和β分别表示信息启发式因子和期望启发式因子;ηij(t)表示蚂蚁从测试用例i到测试用例j期望程度,其值等于测试用例i到测试用例j的距离,也就是测试用例i到测试用例j的距离越大,蚂蚁从测试用例i到测试用例j的期望程度越高;步骤6:修改禁忌表指针,选择好下一个测试用例后将蚂蚁移动到新的测试用例,并把该测试用例添加到该蚂蚁对应的禁忌表中;步骤7:如果所有的测试用例未被排序,则跳转到步骤5,否则执行步骤8;步骤8:更新每一条路径上的信息量,更新公式如下:
εij(t+n)=(1-ρ)×εij(t)+Δεij(t)
式中,εij(t+n)表示t+n时刻路径(i,j)上的信息量;ρ表示信息素挥发系数,则1-ρ表示信息素残留因子;Δεij(t)表示本次循环中路径(i,j)上的信息素增量;Δεij κ(t)表示第κ只蚂蚁在本次循环中保留在路径(i,j)上的信息量;Δεij κ(t)表示第κ只蚂蚁在本次循环中保留在路径(i,j)上的信息量。Δεij κ(t)的计算公式如下:
式中,Q表示信息素强度,Lκ表示第κ只蚂蚁在本次循环所走路径的总长度。如果第κ只蚂蚁在t和t+1之间经过路径(i,j),Δεij等于否则等于0;步骤9:若蚁群算法满足Count≥MaxCount,则循环结束,否则该算法跳转到步骤3;步骤10;蚁群执行完成并输出具有最长路径的回归测试用例序列,回归测试用例优先排序完毕。
综上所述,本发明解决了目前存在的回归测试用例优先排序方法错误发现效率不高,结果的稳定性较差,不能满足扩展性等问题,不仅大幅提高了回归测试错误发现效率、稳定性以及可扩展性,而且也提升了软件回归测试的自动化程度和运转效率,进而提高了软件测试工作效率,从而更好地控制产品的质量。

Claims (4)

1.一种基于分支覆盖与相似性的回归测试用例优先排序方法,其特征在于,在待测程序上运行所有的测试用例,获得每一个测试用例的执行剖面;执行剖面为测试用例在执行过程中所覆盖的分支向量,如果分支被覆盖则在向量中的值为1,反之则为0;通过欧式距离函数计算成对的分支覆盖向量的距离,将该距离作为与剖面对应的测试用例之间的距离;根据测试用例多样性理论,定义目标函数模型并采用蚁群算法对回归测试用例进行优先排序;该方法包括下列步骤:
1)测试用例剖面信息的收集与分支覆盖向量的构建;
采用自动化方式批量执行所有的测试用例,并联合动态插桩技术获得运行测试用例产生的剖面信息文件;分析获得的剖面信息文件,并提取文件中的分支执行频率列为每一个测试用例构造分支覆盖向量;如果一个分支执行频率大于0,则在分支覆盖向量中该分支对应的值是1,否则是0;
2)成对的测试用例之间距离的计算;
使用步骤1)产生的分支覆盖向量计算成对的剖面之间的距离,并将其作为与剖面信息对应的测试用例之间的距离;基于成对的测试用例之间的距离信息构造相异度矩阵;其中,测试用例之间的距离计算方法如下:根据步骤1)产生的分支覆盖向量计算两个测试用例之间的距离,计算公式如下:
式中Dis(X,Y)表示测试用例X与Y之间的距离,xi和yi分别表示测试用例X和Y对应的分支覆盖向量中的第i位的取值,n表示被测程序包含的分支数;
3)回归测试用例的优先排序;
构造测试用例不相似性有限完全图,以测试用例作为顶点,测试用例之间的连线作为边,邻接的测试用例之间的距离作为边的权重;然后以目标函数为指导,通过蚁群算法求解具有最长路径的Hamilton路;由于测试用例的多样性有助于提高回归测试的错误发现效率,因此通过寻找具有最长距离路径的测试用例序列以最大程度上保证测试用例的多样性;最后将产生的Hamilton路中的测试用例序列作为回归测试用例优先排序的最终序列;目标函数如下:
式中,D表示待排序的测试用例集合,X和Y表示测试用例。
2.根据权利要求1所述的基于分支覆盖与相似性的回归测试用例优先排序方法,其特征在于,在步骤1)中,测试用例运行时的剖面信息通过动态插桩技术收集;编写自动化批处理脚本文件,将插桩命令封装在脚本中;运行批处理脚本,产生测试套件中所有测试用例的剖面信息;每一个测试用例对应一个剖面信息文件,该文件包括待测程序中的每一个分支的编号,以及每一个分支被执行的频率;解析剖面信息文件,并构建分支覆盖向量,再将每一个测试用例对应的分支覆盖向量保存在分支覆盖向量文件中。
3.根据权利要求1所述的基于分支覆盖与相似性的回归测试用例优先排序方法,其特征在于,在步骤2)中,按行读取步骤1)产生的分支覆盖向量文件;由于一行对应一个测试用例,因此将每一行封装成一个Map对象;Map对象中的键值对分别是测试用例编号,及该测试用例对应的分支覆盖向量;通过欧式距离函数计算成对的Map对象中的键对应的值之间的距离;遍历所有的Map对象,以构建测试用例之间的相异度矩阵。
4.根据权利要求1所述的基于分支覆盖与相似性的回归测试用例优先排序方法,其特征在于,在步骤3)中,以测试用例为顶点,测试用例之间的连线作为边,测试用例之间的距离作为边的权重构建测试用例之间的不相似有限完全图;基于测试用例之间的距离构建目标函数;以目标函数为指导,采用蚁群算法在不相似有限完全图中寻找具有最长距离的路径,对应该路径的测试用例序列即为优先排序后的测试用例序列。
CN201510884000.7A 2015-12-04 2015-12-04 一种基于分支覆盖与相似性的回归测试用例优先排序方法 Expired - Fee Related CN105528289B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510884000.7A CN105528289B (zh) 2015-12-04 2015-12-04 一种基于分支覆盖与相似性的回归测试用例优先排序方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510884000.7A CN105528289B (zh) 2015-12-04 2015-12-04 一种基于分支覆盖与相似性的回归测试用例优先排序方法

Publications (2)

Publication Number Publication Date
CN105528289A CN105528289A (zh) 2016-04-27
CN105528289B true CN105528289B (zh) 2017-12-08

Family

ID=55770532

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510884000.7A Expired - Fee Related CN105528289B (zh) 2015-12-04 2015-12-04 一种基于分支覆盖与相似性的回归测试用例优先排序方法

Country Status (1)

Country Link
CN (1) CN105528289B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106294182B (zh) * 2016-08-24 2021-02-09 腾讯科技(深圳)有限公司 一种确定众测反馈有效性的方法、测试设备及系统
CN107102939B (zh) * 2016-11-09 2020-07-07 中国矿业大学 一种回归测试用例自动分类方法
CN106776311A (zh) * 2016-12-09 2017-05-31 华北计算技术研究所 一种软件接口测试用例的自动生成方法
CN108287785B (zh) * 2017-01-09 2021-06-22 富士通株式会社 测试例排序方法和设备
CN107844427A (zh) * 2017-11-29 2018-03-27 郑州云海信息技术有限公司 一种基于测试资源感知的测试用例排序方法
CN108021509B (zh) * 2017-12-27 2020-08-18 西安交通大学 基于程序行为网络聚合的测试用例动态排序方法
CN108694123B (zh) * 2018-05-14 2023-07-21 中国平安人寿保险股份有限公司 一种回归测试方法、计算机可读存储介质及终端设备
CN111367782B (zh) * 2018-12-25 2023-08-15 中国移动通信集团浙江有限公司 回归测试数据自动生成的方法及装置
CN110647461B (zh) * 2019-08-19 2023-03-28 江苏大学 多信息融合的回归测试用例排序方法及系统
CN110502447B (zh) * 2019-08-30 2022-10-25 西安邮电大学 一种基于图的回归测试用例优先排序方法
CN111367790B (zh) * 2020-02-14 2023-05-12 重庆邮电大学 一种基于混合模型的元启发式测试用例排序方法
CN111666209B (zh) * 2020-05-20 2023-03-31 牡丹江师范学院 一种基于多目标优化的测试用例优先级排序方法
US11288173B1 (en) 2020-09-22 2022-03-29 International Business Machines Corporation Test case selection

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253889A (zh) * 2011-08-07 2011-11-23 南京大学 一种回归测试中基于分布的测试用例优先级划分方法
CN103713999A (zh) * 2013-11-27 2014-04-09 中国人民解放军理工大学 基于定量度量的蜕变关系测试优先级排序方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8819642B2 (en) * 2012-05-17 2014-08-26 Cognizant Technology Solutions India Pvt. Ltd. Method and system for generating and processing black box test cases

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102253889A (zh) * 2011-08-07 2011-11-23 南京大学 一种回归测试中基于分布的测试用例优先级划分方法
CN103713999A (zh) * 2013-11-27 2014-04-09 中国人民解放军理工大学 基于定量度量的蜕变关系测试优先级排序方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于蚁群算法的GUI软件回归测试用例集优化;于长钺;《吉林大学学报(信息科学版)》;20121115;第30卷(第6期);616-620 *

Also Published As

Publication number Publication date
CN105528289A (zh) 2016-04-27

Similar Documents

Publication Publication Date Title
CN105528289B (zh) 一种基于分支覆盖与相似性的回归测试用例优先排序方法
Lloyd Estimating morphological diversity and tempo with discrete character-taxon matrices: implementation, challenges, progress, and future directions
CN103279415B (zh) 基于组合测试的嵌入式软件测试方法
CN102708045B (zh) 一种缓解路径爆炸的动态符号执行方法
CN101866316B (zh) 一种基于相对冗余测试集约简的软件缺陷定位方法
CN107102939B (zh) 一种回归测试用例自动分类方法
CN106126413B (zh) 基于类不平衡学习和遗传算法的包裹式特征选择的软件缺陷预测方法
CN109597767A (zh) 一种基于遗传变异的模糊测试用例生成方法及系统
CN103116540A (zh) 基于全局超级块支配图的动态符号执行方法及其装置
KR20180014471A (ko) 신규 물질의 구조 생성 방법 및 장치
CN104239213A (zh) 一种面向航天器自动化测试的并行测试任务两阶段调度方法
CN105183796A (zh) 一种基于聚类的分布式链路预测方法
CN105893876A (zh) 芯片硬件木马检测方法和系统
CN107577605A (zh) 一种面向软件缺陷预测的特征聚类选择方法
CN110414580A (zh) 基于随机森林算法的钢筋混凝土深梁承载力评估方法
CN103902457A (zh) 基于协同进化的并行程序路径覆盖测试数据生成方法
CN109408385B (zh) 一种基于缺陷规则和分类反馈的缺陷发现方法
CN112364352A (zh) 可解释性的软件漏洞检测与推荐方法及系统
Bansal et al. Holist: An environment for machine learning of higher-order theorem proving (extended version)
CN107292406A (zh) 基于向量回归机和遗传算法的地震属性优选方法
CN112668802A (zh) 一种基于设计参数的施工碳排放预测方法
CN105528293B (zh) 一种用于回归测试选取测试用例的系统及方法
CN110399286A (zh) 一种基于独立路径的测试数据自动生成方法
CN108021507A (zh) 符号执行的并行路径搜索方法及装置
CN106935038B (zh) 一种停车检测系统及检测方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20171208

Termination date: 20181204