CN109783349A - 一种基于动态反馈权重的测试用例优先级排序方法及系统 - Google Patents

一种基于动态反馈权重的测试用例优先级排序方法及系统 Download PDF

Info

Publication number
CN109783349A
CN109783349A CN201811501062.5A CN201811501062A CN109783349A CN 109783349 A CN109783349 A CN 109783349A CN 201811501062 A CN201811501062 A CN 201811501062A CN 109783349 A CN109783349 A CN 109783349A
Authority
CN
China
Prior art keywords
test
test case
value
case
use cases
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.)
Granted
Application number
CN201811501062.5A
Other languages
English (en)
Other versions
CN109783349B (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.)
Jiangsu University
Original Assignee
Jiangsu University
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 Jiangsu University filed Critical Jiangsu University
Priority to CN201811501062.5A priority Critical patent/CN109783349B/zh
Publication of CN109783349A publication Critical patent/CN109783349A/zh
Application granted granted Critical
Publication of CN109783349B publication Critical patent/CN109783349B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种基于动态反馈权重的测试用例优先级排序方法及系统,步骤1,根据测试用例集在基础版本程序集上运行情况,收集测试用例集代码覆盖信息;步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;步骤3,使用动态反馈权重排序方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列;步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该测试用例序列的评估值并进行统计分析。在排序过程中,相对于传统的贪心算法,不再完全考虑或完全抛弃已被覆盖的语句,随着被覆盖次数增多,设置反比权重值,减少了排序过程中的随机性,提高了测试用例序列检测错误的效率。

Description

一种基于动态反馈权重的测试用例优先级排序方法及系统
技术领域
本发明属于软件测试领域,涉及一种基于动态反馈权重的测试用例优先级排序方法。
背景技术
从软件开发生命周期我们可以发现,软件工程不仅仅是软件开发以及编程语言,软件测试占据了很大的一个部分,尤其是在软件迭代回归测试中,事实上,回归测试作为一种有效的方法,可以保证代码局部的修改而对被测程序带来某些位置的错误,而数据表明,回归测试一般占据了软件测试预算了80%左右,并占据了整个软件维护预算的一半。因此为了缩减回归测试的开销,工业界与学术界提出了一系列基于测试用维护的技术,具体包括测试用例排序TCP(Test Case Prioritization),测试用例选择TCS(Test CaseSelection)以及测试用例缩减TCM(Test Case Minimization)等。
测试用例排序TCP毫无疑问是如今测试研究中的一个热点,其最早由Wong等人于1997年提出,基于传统的测试用例无顺序执行,提出了优化测试用例排序来提高回归测试效率的想法,使得越有可能发现程序错误的用例能够越早执行,以便越早发现错误进行修复,其准则是依据某种原则按优先级高高低对所有程序进行排序,进行测试。
基于代码覆盖测试用例排序提出于21世纪初左右,其中Rothermel和Elbaum教授等人在1999年到2002年四年之间发表了4篇奠基性的文章,形成了基于代码覆盖测试的主要框架。
同时他们给出了测试用例排序TCP问题的一般性描述:
·给定:测试用例集T,T的全排列集PT,排序目标函数f,其定义域为PT,值域为实数。
·问题:T′∈PT,使得(T″∈PT)(T″≠T′)[f(T′≥f(T″))]。
这里PT代表着T所有可能的排列顺序,而f函数是输入一个给定的排序顺序,输出一个与排序结果成正比的数值,以此代表该排序的表现结果。
首先Rothermel等人基于语句覆盖粒度、分支覆盖粒度提出了total和additional两种贪婪算法思想,并与unorder、random以及optimal进行比较,通过实践验证了total和additional相对于随机测试的优越性。基于1999年论文,Elbaum等人进行了一些改进,首先相对于语句和分支覆盖粒度,增加了function覆盖粗粒度,证实了进行粗粒度的排序方法可以减少程序开销,但也会降低排序效果。Rothermel等人还考虑到使用软件度量技术来进一步提高TCP技术的有效性,他们将测试用例的FEP(fault exposing potential)值首次应用到相关的贪心算法中,FEP值可以用于估计测试用例的缺陷检测能力,其计算PIE模型和变异测试分析。PIE模型认为可检测程序内在缺陷的测试用例,需满足3个条件:(1)测试用例执行了包含缺陷的语句;(2)造成程序内部状态出错;(3)通过传播错误的内部状态影响到程序的输出。变异测试是评估测试用例集充分性的一种有效手段,对被测程序执行符合语法约束的简单代码修改(即变异算子)可生成大量变异体,当测试用例在变异体和原有程序上的执行行为不一致时,则称该测试用例可以检测到该变异体。以语句覆盖为例,给定被测程序P和测试用例t,首先计算语句s(s∈P)的ms值,计算公式为
其中,mutants(s)返回一组变异算子应用到语句s上得到的变异体数,killed(s,t)返回测试用例t在上述生成的变异体中可以检测出的数量,假设测试用例t覆盖的语句集为S,则该测试用例的FEP值为∑s∈Sms(s,t)。Rothermel将FEP值在statement和branch覆盖粒度上进行试验,Elbaum等人则在method粒度上计算。同时由于上述提出的算法与理想的最佳排序效果差异较大,Elbaum等人还将FEP值和缺陷倾向值(fault proneness)(如faultindex值和Diff值)进行了结合,提出了一系列Diff-FEP策略。以Diff值、FEP值和Total策略为例,首先根据Diff值对测试用例进行排序,然后对拥有相同Diff值的测试用例,按照FEP值进行排序。
Jeffrey和Gupta等人借助程序切片来解决TCP问题,他们基于测试用例输出的相关切片(relevant slice)提出一种新的TCP技术,应用相关切片可以识别出所有可能影响程序输出结果的语句或分支,并在排序时仅考虑对这些语句或分支的覆盖情况。Elbaum等人认为,在测试用例排序时仅考虑对程序实体的覆盖并不充分,他们在排序时进一步考虑了测试用例的执行开销和缺陷的危害程度。在实证研究中,他们考虑了不同的测试用例执行开销和缺陷危害程度分布,其中测试用例执行开销的分布包括均匀分布、随机分布、正态分布、取自Mozilla开源项目中的分布和取自QTP应用中的分布。而缺陷危害程序的分布包括均匀分布和取自Mozilla开源项目的相关分布。赵建军等人通过分析被测程序内部结构,可以估计出每个模块的缺陷倾向性和重要性,并用于指导测试用例的排序。
虽然研究人员提出了大量TCP技术,但根据测试场景特征从中选出合适的TCP技术同样值得关注。Elbaum等人通过实证研究考察了不同测试场景(主要考察因素包括被测程序特征、测试用例特征和代码修改类型等)对TCP技术有效性的影响。实证结果为测试人员在不同测试场景下选择出合适的TCP技术提供了重要依据。Arafeen等人认为,在软件持续演化过程中,每次演化时的代码修改类型对TCP技术的选择存在影响.他们将该问题建模为多准则决策(multiple criteria decision making)问题,并采用层次分析法(analyticalhierarchy process,简称AHP)进行选择.结果表明,他们提出的方法可以为每次回归测试活动选择出最为经济有效的TCP技术。
目前来说TCP技术主要基于源代码、历史执行信息、需求以及模型等,具体分为基于代码排序技术、基于搜索排序技术、基于需求排序技术、基于历史排序技术等等。从往年相关论文数量而言,基于代码排序技术依旧是主流,同时基于搜索排序越来越受到研究人关注,本方法主要基于代码覆盖信息对现有测试用例排序技术进行改进。
发明内容
为了能够更加有效地根据代码覆盖信息对测试用例进行排序,本发明提出了一种基于动态反馈权重的测试用例优先级排序方法。另外。本发明还与其他的经典测试用例排序方法进行了比较,验证了提出方法的有效性和先进性。本发明的技术方案包括如下步骤:
步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息;
步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;
步骤3,使用动态反馈权重排序方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列;
步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该测试用例序列的评估值并进行统计分析。
上述步骤1的具体步骤如下:
步骤1.1,根据已获得的测试用例集,将其转换为测试用例脚本,可以输出该用例集代码覆盖信息;
步骤1.2,对基础版本的程序集,执行上述的测试用例脚本,获得该测试用例集的覆盖信息文件;
步骤1.3,编写相关分析脚本,对上述覆盖信息文件进行解析,生成测试用例集在基础版本程序集上的覆盖矩阵CoverageMatrix,其中每行代表测试用例,每列代表该程序集每种覆盖粒度,矩阵元素取值为0或者1,0代表该测试用例未覆盖该粒度,1代表该测试用例覆盖该粒度。
上述步骤2的具体步骤如下:
步骤2.1,根据已获得的测试用例集,将其转换为相应的测试用例脚本,可以输出该用例集在程序集上的执行结果;
步骤2.2,将上述测试用例脚本在基本版本与相关迭代版本的程序集上分别运行,获得测试用例集在各个版本程序上的输出信息;
步步骤2.3,编写相关脚本,对测试用例集在基础版本和错误迭代版本上的输出信息进行对比,如果用例在基础版本和错误版本上运行结果相同则表明该用例无法检测到该错误,若运行结果不同则表明该用例可以检测到该错误,以此生成测试用例集的错误检测矩阵FaultMatrix,其中每行代表测试用例,每列代表植入的错误,元素取值为0或者1,0代表该测试用例未检测到该错误,1代表该测试用例检测到该错误。
上述步骤3的具体步骤如下:
步骤3.1,根据动态反馈权重进行每轮排序,在每轮排序之前,根据 为各粒度进行权重重置,其中StcoverNum[j]为粒度被覆盖次数,CoverageMatrix为覆盖矩阵,之后根据每个用例的评估值进行排序;
步骤3.2,当某一轮多个用例拥有相同的最大评估值时,则随机挑选一个最大评估值的用例;
步骤3.3,重复执行步骤3.1和3.2,当没有候选测试用例时结束本次排序,并输出已排序用例序列。
上述步骤4的具体步骤如下:
步骤4.1,使用贪心算法,即Total和Additional策略,在语句(statement)、分支(branch)和函数(function)粒度上重复步骤3,生成各个方法的已排序测试用例序列;
步骤4.2,根据各个方法的已排序测试用例序列以及测试用例集的错误覆盖矩阵FaultMatrix,生成各个方法的排序结果的评估值,这里以平均错误检测速率APFD(averagepercentage of fault detection)为例,其评估值公式为: 其中n代表测试用例数量、m代表程序中错误数量,TFi代表检测到第i个错误的第一个测试用例在排序中的执行次序;
步骤4.3,对获得的APFD值进行图形化显示,画出各个方法在每种粒度下的盒图,方便直观显示与比较;
步骤4.4,对获得的APFD值进行统计分析,计算本方法和传统方法的wilcox p-value以及计算effect size,以及根据上述结果对本方法进行评估。
进一步,本发明还设计实现了基于动态反馈权重的测试用例优先级排序方法原型测试系统;所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
其中算法参数设置选项,包括选择需要排序的算法,比如Total排序策略、Additional排序策略以及本方法排序策略,执行次数设置需要指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;
其余5个菜单项分别代表5个功能模块:文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算本方法和传统方法的wilcox的p值,判断各方法之间是否存在显著差异,同时计算两两方法之间的effectsize,判断本方法与传统方法之间的优劣比较;图形查看选项首先会将结果分析模块的评估值(比如APFD值)进行图形化显示,主要以盒图的形式方便直观地比较各个方法,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
本发明的有益效果:
1、本发明实现了基于动态反馈权重的测试用例优先级排序,主要依据代码覆盖信息在每轮排序前动态重置各粒度的权重,以此计算待排序用例评估值,并挑选最大评估值用例,该方法时间开销较低并提高了用例检测错误的效率。
2、本发明基于statement、branch和function粒度下,使用了Siemens程序集,并与Total、Additional经典排序策略进行了对比,验证了本发明在不同粒度、不同程序下的优越表现。
3、设计实现了一个基于动态反馈权重的测试用例优先级排序原型系统,该系统很好地实现了自动化测试,提高了测试效率,会在测试用例排序领域发挥重要作用。
4、本发明在每轮排序开始前,根据各粒度的历史覆盖信息重置该粒度的权重,以此重新计算待排序用例的评估值,挑选最大评估值用例加入已排序用例集;该发明在Total和Additional策略二者之间实现了平衡,显著提高了测试用例发现错误的效率,减少了软件测试中的时间开销与人力开销。
附图说明
图1是基于动态反馈权重的测试用例优先级排序方法流程图。
图2是收集代码覆盖信息流程图。
图3是收集错误矩阵流程图。
图4是动态反馈权重排序流程图。
图5是图形显示界面图。
图6是统计分析界面图。
具体实施方式
下面结合附图和实施案例对本发明作进一步说明,应指出的是,所描述的实施案例仅旨在便于对本发明的理解,而对其不起任何限定作用。
本发明以解决基于代码覆盖进行测试用例排序问题为目的,提供一种基于动态反馈权重的测试用例优先级排序方法,有效地提高了测试用例集在测试中发现错误的效率,提供了完善的测试框架和算法,并且进行了充分的实验,证明了方法的可行性和有效性。
首先,定义本发明所涉及到的几个概念定义如下。
定义1测试用例:测试用例是为确保某种目标而编制的一组测试输入、执行条件以及预期结果。
定义2测试用例排序:给定测试用例集T,T的全排列集PT,排序目标函数f,其定义域为PT,值域为实数,T′∈PT,使得(T″∈PT)(T″≠T′)[f(T′≥f(T″))]。
这里PT代表着T所有可能的排列顺序,而f函数是输入一个给定的排序顺序,输出一个与排序结果成正比的数值,以此代表该排序的表现结果。
定义3代码覆盖:代码覆盖指在测试中需要执行的总代码中,已经执行的代码对其的占比程度。
定义4语句覆盖:又被称为代码行覆盖、段覆盖和基本块覆盖,是最常见的一种代码覆盖方法,主要用于度量程序的源代码中每个可执行语句已执行的程度。
定义5分支覆盖:又称为判定覆盖。它主要用于度量程序中每个可达的判定分支已执行过的程度。
定义6条件覆盖:主要用于度量程序中每个判定的所有子表达式的结果true和false
都有被测试的程度。
定义7路径覆盖:又称断言覆盖,主要用于度量程序中函数的每一个分支都已被执行的程度,因为所有可能的分支都执行一遍,当面临有多个分支嵌套时,需要对多个分支进行排列组合,所以其测试路径会随着分支的数量指数级别增加。
如图1所示,本发明的一种基于动态反馈权重的测试用例优先级排序方法,包括:
步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息。
上述步骤1中,参照图2,程序代码覆盖信息收集步骤如下:
步骤1.1,根据已获得的测试用例集,将其转换为测试用例脚本,可以输出该用例集代码覆盖信息;
步骤1.2,对基础版本的程序集,执行上述的测试用例脚本,获得该测试用例集的覆盖信息文件;
步骤1.3,编写相关分析脚本,对上述覆盖信息文件进行解析,生成测试用例集在基础版本程序集上的覆盖矩阵CoverageMatrix,其中每行代表测试用例,每列代表该程序集每种覆盖粒度,矩阵元素取值为0或者1,0代表该测试用例未覆盖该粒度,1代表该测试用例覆盖该粒度。
步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况。
上述步骤2中,参照图3,基于指定程序集的用例错误矩阵生成步骤如下:
步骤2.1,根据已获得的测试用例集,将其转换为相应的测试用例脚本,可以输出该用例集在程序集上的执行结果;
步骤2.2,将上述测试用例脚本在基本版本与相关迭代版本的程序集上分别运行,获得测试用例集在各个版本程序上的输出信息;
步骤2.3,编写相关脚本,对测试用例集在基础版本和错误迭代版本上的输出信息进行对比,如果用例在基础版本和错误版本上运行结果相同则表明该用例无法检测到该错误,若运行结果不同则表明该用例可以检测到该错误,以此生成测试用例集的错误检测矩阵FaultMatrix,其中每行代表测试用例,每列代表植入的错误,元素取值为0或者1,0代表该测试用例未检测到该错误,1代表该测试用例检测到该错误。
步骤3,使用动态反馈排序方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列。
上述步骤3中,参照图4,用例集排序方法步骤如下:
步骤3.1,根据动态反馈权重进行每轮排序,在每轮排序之前,根据 为各粒度进行权重重置,其中StcoverNum[j]为粒度被覆盖次数,CoverageMatrix为覆盖矩阵,之后根据每个用例的评估值进行排序;
步骤3.2,当某一轮多个用例拥有相同的最大评估值时,则随机挑选一个最大评估值的用例;
步骤3.3,重复执行步骤3.1和3.2,当没有候选测试用例时结束本次排序,并输出已排序用例序列。
步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该序列的评估值并进行统计分析。
上述步骤4中,排序方法评估数据产生步骤如下:
步骤4.1,使用贪心算法,即Total和Additional策略,在语句(statement)、分支(branch)和函数(function)粒度上重复步骤3,生成各个方法的已排序测试用例序列;
步骤4.2,根据各个方法的已排序测试用例序列以及测试用例集的错误覆盖矩阵FaultMatrix,生成各个方法的排序结果的评估值,这里以平均错误检测速率APFD(averagepercentage of fault detection)为例,其评估值公式为: 其中n代表测试用例数量、m代表程序中错误数量,TFi代表检测到第i个错误的第一个测试用例在排序中的执行次序;
步骤4.3,对获得的APFD值进行图形化显示,画出各个方法在每种粒度下的盒图,方便直观显示与比较;
步骤4.4,对获得的APFD值进行统计分析,计算本方法和传统方法的wilcox p-value以及计算effect size,以及根据上述结果对本方法进行评估。
本发明还设计实现了基于动态反馈权重的测试用例优先级排序方法原型测试系统;所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
其中算法参数设置选项,包括选择需要排序的算法,比如Total排序策略、Additional排序策略以及本方法排序策略,执行次数设置需要指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;
其余5个菜单项分别代表5个功能模块:文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算本方法和传统方法的wilcox的p值,判断各方法之间是否存在显著差异,同时计算两两方法之间的effectsize,判断本方法与传统方法之间的优劣比较;图形查看选项首先会将结果分析模块的评估值(比如APFD值)进行图形化显示,主要以盒图的形式方便直观地比较各个方法,如图5所示,这里横坐标代表各个方法,其中Add、Tot、Md2分别表示Additional策略、Total策略以及本方法提出的方法,st、br和fn分别表示上述策略基于statement、branch以及method覆盖粒度,纵坐标则代表各个方法的APFD值;之后将统计结果分析模块的结果以表格的形式进行两两对比显示,如图6所示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

Claims (8)

1.一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,包括如下步骤:
步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息;
步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;
步骤3,使用动态反馈权重排序方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列。
2.根据权利要求1所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,所述步骤1的具体实现包括如下:
步骤1.1,根据已获得的测试用例集,将其转换为测试用例脚本,输出该用例集代码覆盖信息;
步骤1.2,对基础版本的程序集,执行上述的测试用例脚本,获得该测试用例集的覆盖信息文件;
步骤1.3,编写脚本,对上述覆盖信息文件进行解析,生成测试用例集在程序集上的覆盖矩阵,其中每行代表测试用例,每列代表该程序集每种覆盖粒度,0代表该测试用例没有覆盖该粒度,1代表该测试用例覆盖该粒度。
3.根据权利要求1所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,所述步骤2的具体实现包括如下:
步骤2.1,根据已获得的测试用例集,将其转换为相应的测试用例脚本,输出该用例集在程序集上的执行结果;
步骤2.2,将上述测试用例脚本在基本版本与相关迭代版本的程序集上分别运行,获得测试用例集在各个版本程序上的输出信息;
步骤2.3,编写脚本,对测试用例集在基础版本和错误迭代版本上的输出信息进行对比,生成测试用例集的错误检测矩阵,其中每行代表测试用例,每列代表植入的错误,0代表该测试用例未检测到该错误,1代表该测试用例检测到该错误。
4.根据权利要求1所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,所述步骤3的具体实现包括如下:
步骤3.1,根据动态反馈权重进行每轮排序,在每轮排序之前,根据 为各粒度进行权重重置,其中StcoverNum[j]为粒度被覆盖次数,CoverageMatrix为覆盖矩阵,之后根据每个用例的评估值进行排序;
步骤3.2,当某一轮多个用例拥有相同的最大评估值时,则随机挑选一个最大评估值的用例;
步骤3.3,重复执行步骤3.1和3.2,当没有候选测试用例时结束本次排序,并输出已排序用例序列。
5.根据权利要求1所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,还包括步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该测试用例序列的评估值并进行统计分析。
6.根据权利要求5所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,所述步骤4的具体实现包括如下:
步骤4.1,使用贪心算法,即Total和Additional策略,在statement、branch和function粒度上重复步骤3,生成各个方法的已排序测试用例序列;
步骤4.2,根据各个方法的已排序测试用例序列以及测试用例集的错误覆盖矩阵FaultMatrix,生成各个方法的排序结果的评估值,以平均错误检测速率APFD为例,其评估值公式为:其中n代表测试用例数量、m代表程序中错误数量,TFi代表检测到第i个错误的第一个测试用例在排序中的执行次序;
步骤4.3,对获得的APFD值进行图形化显示,画出各个方法在每种粒度下的盒图,直观显示与比较;
步骤4.4,对获得的APFD值进行统计分析,计算各方法的wilcox p-value以及计算effect size,以及根据上述结果对本方法进行评估。
7.根据权利要求1-6任一项所述的一种基于动态反馈权重的测试用例优先级排序方法,其特征在于,所述方法能够在以下测试系统中实现:
所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
所述算法参数设置选项:选择需要排序的算法,包括各方法排序策略,执行次数设置,即指定该排序方法循环执行次数,以及是否输出排序消耗时间;
文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置模块指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析模块显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计分析模块根据结果分析模块的评估值计算各方法的wilcox的p值,判断方法之间是否存在显著差异,同时计算两两方法之间的effectsize,判断本方法与传统方法之间的优劣比较;图形查看模块首先会将结果分析模块的评估值如APFD值,进行图形化显示,主要以盒图的形式直观地比较各个方法,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
8.一种用于基于动态反馈权重的测试用例优先级排序方法的测试系统,其特征在于,所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
所述算法参数设置选项:选择需要排序的算法,包括各方法排序策略,执行次数设置,即指定该排序方法循环执行次数,以及是否输出排序消耗时间;
文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置模块指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析模块显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计分析模块根据结果分析模块的评估值计算各方法的wilcox的p值,判断方法之间是否存在显著差异,同时计算两两方法之间的effectsize,判断本方法与传统方法之间的优劣比较;图形查看模块首先会将结果分析模块的评估值如APFD值,进行图形化显示,主要以盒图的形式直观地比较各个方法,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
CN201811501062.5A 2018-12-10 2018-12-10 一种基于动态反馈权重的测试用例优先级排序方法及系统 Active CN109783349B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811501062.5A CN109783349B (zh) 2018-12-10 2018-12-10 一种基于动态反馈权重的测试用例优先级排序方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811501062.5A CN109783349B (zh) 2018-12-10 2018-12-10 一种基于动态反馈权重的测试用例优先级排序方法及系统

Publications (2)

Publication Number Publication Date
CN109783349A true CN109783349A (zh) 2019-05-21
CN109783349B CN109783349B (zh) 2022-02-15

Family

ID=66496788

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811501062.5A Active CN109783349B (zh) 2018-12-10 2018-12-10 一种基于动态反馈权重的测试用例优先级排序方法及系统

Country Status (1)

Country Link
CN (1) CN109783349B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688311A (zh) * 2019-09-25 2020-01-14 武汉光庭信息技术股份有限公司 一种面向自动驾驶典型场景的测试用例管理方法和装置
CN113342651A (zh) * 2021-06-01 2021-09-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法
CN113568833A (zh) * 2021-07-28 2021-10-29 深圳Tcl新技术有限公司 测试用例确定方法、装置、计算机设备及可读存储介质
CN113590472A (zh) * 2021-07-06 2021-11-02 四川大学 一种回归测试中测试用例优先级排序方法
CN114706769A (zh) * 2022-03-30 2022-07-05 天津大学 基于日志的面向回归测试的黑盒测试用例排序方法
CN114978974A (zh) * 2022-05-20 2022-08-30 国网重庆市电力公司电力科学研究院 无线通信模组测试方法、装置、设备及存储介质
CN117435516A (zh) * 2023-12-21 2024-01-23 江西财经大学 一种测试用例优先级排序方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880545A (zh) * 2012-08-30 2013-01-16 中国人民解放军63928部队 一种测试用例优先级排序动态调整方法
CN103810104A (zh) * 2014-03-04 2014-05-21 中国人民解放军63863部队 一种软件测试用例优化方法及系统
US20150261657A1 (en) * 2014-03-13 2015-09-17 Infosys Limited Methods for generating test suites and devices thereof
CN106528433A (zh) * 2016-12-12 2017-03-22 西安邮电大学 一种用于白盒测试的测试用例优先级排序方法
CN106776351A (zh) * 2017-03-09 2017-05-31 浙江理工大学 一种基于One‑test‑at‑a‑time策略的组合测试用例优先级排序方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880545A (zh) * 2012-08-30 2013-01-16 中国人民解放军63928部队 一种测试用例优先级排序动态调整方法
CN103810104A (zh) * 2014-03-04 2014-05-21 中国人民解放军63863部队 一种软件测试用例优化方法及系统
US20150261657A1 (en) * 2014-03-13 2015-09-17 Infosys Limited Methods for generating test suites and devices thereof
CN106528433A (zh) * 2016-12-12 2017-03-22 西安邮电大学 一种用于白盒测试的测试用例优先级排序方法
CN106776351A (zh) * 2017-03-09 2017-05-31 浙江理工大学 一种基于One‑test‑at‑a‑time策略的组合测试用例优先级排序方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
RUBING HUANG等: ""An Empirical Comparison of Fixed-Strength and Mixed-Strength for Interaction Coverage Based Prioritization"", 《IEEE》 *
唐海鹏: ""基于Additional策略回归测试用例优先级排序优化研究"", 《中国优秀硕士学位论文全文数据库信息科技辑》 *

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110688311A (zh) * 2019-09-25 2020-01-14 武汉光庭信息技术股份有限公司 一种面向自动驾驶典型场景的测试用例管理方法和装置
CN113342651A (zh) * 2021-06-01 2021-09-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法
CN113342651B (zh) * 2021-06-01 2023-11-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法
CN113590472A (zh) * 2021-07-06 2021-11-02 四川大学 一种回归测试中测试用例优先级排序方法
CN113568833A (zh) * 2021-07-28 2021-10-29 深圳Tcl新技术有限公司 测试用例确定方法、装置、计算机设备及可读存储介质
CN114706769A (zh) * 2022-03-30 2022-07-05 天津大学 基于日志的面向回归测试的黑盒测试用例排序方法
CN114978974A (zh) * 2022-05-20 2022-08-30 国网重庆市电力公司电力科学研究院 无线通信模组测试方法、装置、设备及存储介质
CN114978974B (zh) * 2022-05-20 2023-09-19 国网重庆市电力公司电力科学研究院 无线通信模组测试方法、装置、设备及存储介质
CN117435516A (zh) * 2023-12-21 2024-01-23 江西财经大学 一种测试用例优先级排序方法和系统
CN117435516B (zh) * 2023-12-21 2024-02-27 江西财经大学 一种测试用例优先级排序方法和系统

Also Published As

Publication number Publication date
CN109783349B (zh) 2022-02-15

Similar Documents

Publication Publication Date Title
CN110134588A (zh) 一种基于代码和组合覆盖的测试用例优先级排序方法及测试系统
CN109783349A (zh) 一种基于动态反馈权重的测试用例优先级排序方法及系统
Zhou et al. How far we have progressed in the journey? an examination of cross-project defect prediction
Posnett et al. Ecological inference in empirical software engineering
Silva et al. A systematic review on search based mutation testing
Elberzhager et al. Reducing test effort: A systematic mapping study on existing approaches
Lou et al. A survey on regression test-case prioritization
Raja et al. Defining and evaluating a measure of open source project survivability
CN105893256A (zh) 基于机器学习算法的软件故障定位方法
CN107967485A (zh) 用电计量设备故障分析方法及装置
Harman et al. Automated test data generation for aspect-oriented programs
Saeed et al. The experimental applications of search-based techniques for model-based testing: Taxonomy and systematic literature review
CN105868116A (zh) 基于语义变异算子的测试用例生成和优化方法
CN109710514A (zh) 测试用例优先级排序中的tie-breaking的解决方法及系统
Gupta et al. An insight into test case optimization: ideas and trends with future perspectives
Neelofar et al. Improving spectral‐based fault localization using static analysis
CN107066389A (zh) 基于集成学习的软件缺陷重新打开的预测方法
Cui et al. Investigating the impact of multiple dependency structures on software defects
CN115629998B (zh) 一种基于KMeans聚类和相似度的测试用例筛选方法
Jain et al. Energy efficiency in South Asia: Trends and determinants
Jahan et al. Version specific test case prioritization approach based on artificial neural network
Zakari et al. A community-based fault isolation approach for effective simultaneous localization of faults
Kapila et al. Analysis of CK metrics to predict software fault-proneness using bayesian inference
Bulak et al. How ecoefficient is European food consumption? A frontier‐based multiregional input–output analysis
Murillo-Morera et al. Software Fault Prediction: A Systematic Mapping Study.

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