CN109710514A - 测试用例优先级排序中的tie-breaking的解决方法及系统 - Google Patents

测试用例优先级排序中的tie-breaking的解决方法及系统 Download PDF

Info

Publication number
CN109710514A
CN109710514A CN201811501029.2A CN201811501029A CN109710514A CN 109710514 A CN109710514 A CN 109710514A CN 201811501029 A CN201811501029 A CN 201811501029A CN 109710514 A CN109710514 A CN 109710514A
Authority
CN
China
Prior art keywords
test
sequence
test case
value
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
CN201811501029.2A
Other languages
English (en)
Other versions
CN109710514B (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 CN201811501029.2A priority Critical patent/CN109710514B/zh
Publication of CN109710514A publication Critical patent/CN109710514A/zh
Application granted granted Critical
Publication of CN109710514B publication Critical patent/CN109710514B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了测试用例优先级排序中的tie‑breaking的解决方法及系统,步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息;步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;步骤3,使用基于Additional的tie‑breaking改进方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列;步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该测试用例序列的评估值并进行统计分析。本发明在贪心算法基础上,在多个测试用例拥有相同覆盖评价的节点使用历史覆盖信息进行二次排序,解决tie‑breaking问题,减少了测试用例排序过程中的随机性;相对于传统贪心算法,提高了排序过程的确定性。

Description

测试用例优先级排序中的tie-breaking的解决方法及系统
技术领域
本发明属于软件测试领域,涉及测试用例优先级排序中的tie-breaking的一种解决方法。
背景技术
从软件开发生命周期我们可以发现,软件工程不仅仅是软件开发以及编程语言,软件测试占据了很大的一个部分,尤其是在软件迭代回归测试中,事实上,回归测试作为一种有效的方法,可以保证代码局部的修改而对被测程序带来某些位置的错误,而数据表明,回归测试一般占据了软件测试预算的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,使得
这里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技术主要基于源代码、历史执行信息、需求以及模型等,具体分为基于代码排序技术、基于搜索排序技术、基于需求排序技术、基于历史排序技术等等。从往年相关论文数量而言,基于代码排序技术依旧是主流,同时基于搜索排序越来越受到研究人关注,本方法主要基于代码覆盖信息对现有测试用例排序技术进行改进。
发明内容
为了能够有效地根据代码覆盖信息对测试用例进行排序,本发明提出了测试用例优先级排序中的tie-breaking的解决方法。另外。本发明还与其他的经典测试用例排序方法进行了比较,验证了提出方法的有效性和先进性。本发明的技术方案包括如下步骤:
步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息;
步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;
步骤3,使用基于Additional的tie-breaking改进方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列;
步骤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,根据贪心算法的Additional策略进行每轮排序,当多个测试用例拥有相同的评估值的时候,使用被覆盖粒度的历史覆盖信息进行再次排序,即被覆盖次数少的粒度拥有较高的优先级,首先挑选覆盖了这种粒度的用例,以此解决tie-breaking问题;
步骤3.2,当某一轮没有用例可以覆盖新的粒度时,重置所有粒度为未覆盖状态,并再次执行Additional策略进行该轮排序;
步骤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),以及根据上述结果对本方法进行评估。
进一步,本发明还设计实现了测试用例优先级排序中的tie-breaking解决方法原型测试系统;所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
其中算法参数设置选项,包括选择需要排序的算法,比如Total排序策略、Additional排序策略以及本方法排序策略,执行次数设置需要指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;
其余5个菜单项分别代表5个功能模块:文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算本方法和传统方法的wilcox的p值,判断各方法之间是否存在显著差异,同时计算两两方法之间的effect size,判断本方法与传统方法之间的优劣比较;图形查看选项首先会将结果分析模块的评估值(比如APFD值)进行图形化显示,主要以盒图的形式方便直观地比较各个方法,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
本发明的有益效果:
1、本发明依据贪心算法Additional策略,对该策略在多个测试时用例具有相同的评估时进行随机选择的情况下,使用该粒度的历史覆盖信息对其进行再次排序,以此解决tie-breaking问题,显著提高了原有用例排序方法的表现与检测效率。
2、本发明基于statement、branch和function粒度下,使用了Siemens程序集,并与Total、Additional经典排序策略进行了对比,验证了本发明在不同粒度、不同程序下的优越表现。
3、设计实现了一个测试用例优先级排序的tie-breaking解决方法原型系统,该系统很好地实现了自动化测试,提高了测试效率,会在测试用例排序领域发挥重要作用。
4、本发明每轮使用Additional策略进行用例挑选,当多个用例覆盖相同粒度的情况下,使用所覆盖的粒度的历史覆盖次数进行二次排序,以此解决tie-breaking问题,通过这种tie-breaking解决方法,可以有效地改进现有贪心算法并提高测试用例发现错误的速度,减少了测试中的时间与人力等消耗。
附图说明
图1是测试用例排序中的tie-breaking的解决方法流程图。
图2是收集代码覆盖信息流程图。
图3是收集错误矩阵流程图。
图4是tie-breaking具体解决策略流程图。
图5是图形显示界面图。
图6是统计分析界面图。
具体实施方式
下面结合附图和实施案例对本发明作进一步说明,应指出的是,所描述的实施案例仅旨在便于对本发明的理解,而对其不起任何限定作用。
本发明以解决基于代码覆盖进行测试用例排序问题为目的,提供测试用例优先级排序中的tie-breaking的解决方法,有效地提高了测试用例集在测试中发现错误的效率,提供了完善的测试框架和算法,并且进行了充分的实验,证明了方法的可行性和有效性。
首先,定义本发明所涉及到的几个概念定义如下。
定义1测试用例:测试用例是为确保某种目标而编制的一组测试输入、执行条件以及预期结果。
定义2测试用例排序:给定测试用例集T,T的全排列集PT,排序目标函数f,其定义域为PT,值域为实数,T′∈PT,使得这里PT代表着T所有可能的排列顺序,而f函数是输入一个给定的排序顺序,输出一个与排序结果成正比的数值,以此代表该排序的表现结果。
定义3代码覆盖:代码覆盖指在测试中需要执行的总代码中,已经执行的代码对其的占比程度。
定义4语句覆盖:又被称为代码行覆盖、段覆盖和基本块覆盖,是最常见的一种代码覆盖方法,主要用于度量程序的源代码中每个可执行语句已执行的程度。
定义5分支覆盖:又称为判定覆盖。它主要用于度量程序中每个可达的判定分支已执行过的程度。
定义6条件覆盖:主要用于度量程序中每个判定的所有子表达式的结果true和false都有被测试的程度。
定义7路径覆盖:又称断言覆盖,主要用于度量程序中函数的每一个分支都已被执行的程度,因为所有可能的分支都执行一遍,当面临有多个分支嵌套时,需要对多个分支进行排列组合,所以其测试路径会随着分支的数量指数级别增加。
如图1所示,本发明的测试用例优先级排序中的tie-breaking的解决方法,包括:
步骤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,使用基于Additional的tie-breaking改进方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列。
上述步骤3中,参照图4,用例集排序方法步骤如下:
步骤3.1,根据贪心算法的Additional策略进行每轮排序,当多个测试用例拥有相同的评估值的时候,使用被覆盖粒度的历史覆盖信息进行再次排序,即被覆盖次数少的粒度拥有较高的优先级,首先挑选覆盖了这种粒度的用例,以此解决tie-breaking问题;
步骤3.2当某一轮没有用例可以覆盖新的粒度时,重置所有粒度为未覆盖状态,并再次执行Additional策略进行该轮排序;
步骤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,以及根据上述结果对本方法进行评估。
本发明还设计实现了测试用例优先级排序中的tie-breaking解决方法原型测试系统;所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
其中算法参数设置选项,包括选择需要排序的算法,比如Total排序策略、Additional排序策略以及本方法排序策略,执行次数设置需要指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;
其余5个菜单项分别代表5个功能模块:文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集等信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算本方法和传统方法的wilcox的p值,判断各方法之间是否存在显著差异,同时计算两两方法之间的effect size,判断本方法与传统方法之间的优劣比较;图形查看选项首先会将结果分析模块的评估值(比如APFD值)进行图形化显示,主要以盒图的形式方便直观地比较各个方法,如图5所示,这里横坐标代表各个方法,其中Add、Tot、Md1分别表示Additional策略、Total策略以及本方法提出的方法,st、br和fn分别表示上述策略基于statement、branch以及method覆盖粒度,纵坐标则代表各个方法的APFD值;之后将统计结果分析模块的结果以表格的形式进行两两对比显示,如图6所示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。

Claims (8)

1.测试用例优先级排序中的tie-breaking的解决方法,其特征在于,包括如下步骤:
步骤1,根据测试用例集在基础版本的程序集上运行情况,收集测试用例集代码覆盖信息;
步骤2,将测试用例集在迭代错误版本上运行,获得测试用例集在各个版本上的错误检测情况;
步骤3,使用基于Additional的tie-breaking改进方法,根据获得的代码覆盖信息进行测试用例排序,输出已排序的测试用例序列。
2.根据权利要求1所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,步骤1的具体实现包括:
步骤1.1,根据已获得的测试用例集,将其转换为测试用例脚本,输出该用例集代码覆盖信息;
步骤1.2,对基础版本的程序集,执行上述的测试用例脚本,获得该测试用例集的覆盖信息文件;
步骤1.3,编写脚本,对上述覆盖信息文件进行解析,生成测试用例集在程序集上的覆盖矩阵,其中每行代表测试用例,每列代表该程序集每种覆盖粒度,0代表该测试用例没有覆盖该粒度,1代表该测试用例覆盖该粒度。
3.根据权利要求1所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,步骤2的具体实现包括:
步骤2.1,根据已获得的测试用例集,将其转换为相应的测试用例脚本,输出该用例集在程序集上的执行结果;
步骤2.2,将上述测试用例脚本在基本版本与相关迭代版本的程序集上分别运行,获得测试用例集在各个版本程序上的输出信息;
步骤2.3,编写脚本,对测试用例集在基础版本和错误迭代版本上的输出信息进行对比,生成测试用例集的错误检测矩阵,其中每行代表测试用例,每列代表植入的错误,0代表该测试用例未检测到该错误,1代表该测试用例检测到该错误。
4.根据权利要求1所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,步骤3的具体实现包括:
步骤3.1,根据贪心算法的Additional策略进行每轮排序,当多个测试用例拥有相同的评估值的时候,使用被覆盖粒度的历史覆盖信息进行再次排序,即被覆盖次数少的粒度拥有较高的优先级,挑选覆盖这种粒度的用例,以解决tie-breaking问题;
步骤3.2,当某一轮没有用例可以覆盖新的粒度时,重置所有粒度为未覆盖状态,并再次执行Additional策略进行该轮排序;
步骤3.3,重复执行步骤3.1和3.2,当没有候选测试用例时结束本次排序,并输出已排序用例序列。
5.根据权利要求1所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,还包括步骤4,根据已排序的测试用例序列和测试用例集的错误检测情况,计算该测试用例序列的评估值并进行统计分析。
6.根据权利要求5所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,步骤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任一项所述的测试用例优先级排序中的tie-breaking的解决方法,其特征在于,所述方法能够用如下测试系统完成:
所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项。
所述测试系统的各菜单项中:算法参数设置选项,包括选择需要排序的算法,执行次数设置指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;
文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算不同方法的p值,判断方法之间是否存在显著差异,同时计算两方法之间的effectsize,判断各方法之间的优劣比较;图形查看选项首先将结果分析模块的评估值进行图形化显示,主要以盒图的形式,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
8.用于实现测试用例优先级排序中的tie-breaking的解决方法的测试系统,其特征在于,所述测试系统主界面包括6个菜单项:文件选项、算法参数设置选项、被测程序设置选项、结果分析设置选项、统计分析选项以及图形查看选项;
所述算法参数设置选项,包括选择需要排序的算法,执行次数设置指定该排序方法循环执行次数,以及是否输出排序消耗时间等等;文件选项模块用于选择项目的文件地址,里面包含的被测程序集,测试时用例集信息;被测程序设置选项用于指定该实验使用路径下的哪些程序、以及其基础版本和迭代错误版本;结果分析设置选项会显示出各个方法的排序策略具体的错误检测情况,并生成指定的评估值,如APFD值以及指定百分比的NAPFD值;统计结果分析选项根据结果分析模块的评估值计算不同方法的p值,判断方法之间是否存在显著差异,同时计算各方法之间的effect size,判断各方法之间的优劣比较;图形查看选项首先将结果分析模块的评估值进行图形化显示,主要以盒图的形式,之后将统计结果分析模块的结果以表格的形式进行两两对比显示,对p值无显著差异以及effect size低于0.5的数据进行高亮显示。
CN201811501029.2A 2018-12-10 2018-12-10 测试用例优先级排序中的tie-breaking的解决方法及系统 Active CN109710514B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811501029.2A CN109710514B (zh) 2018-12-10 2018-12-10 测试用例优先级排序中的tie-breaking的解决方法及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811501029.2A CN109710514B (zh) 2018-12-10 2018-12-10 测试用例优先级排序中的tie-breaking的解决方法及系统

Publications (2)

Publication Number Publication Date
CN109710514A true CN109710514A (zh) 2019-05-03
CN109710514B CN109710514B (zh) 2022-02-15

Family

ID=66255540

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811501029.2A Active CN109710514B (zh) 2018-12-10 2018-12-10 测试用例优先级排序中的tie-breaking的解决方法及系统

Country Status (1)

Country Link
CN (1) CN109710514B (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515852A (zh) * 2019-08-30 2019-11-29 北京浪潮数据技术有限公司 一种基于敏捷开发的应用更新测试方法及相关装置
CN111858341A (zh) * 2020-07-23 2020-10-30 深圳慕智科技有限公司 一种基于神经元覆盖的测试数据度量方法
CN113342651A (zh) * 2021-06-01 2021-09-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063376A (zh) * 2011-02-16 2011-05-18 哈尔滨工程大学 一种测试用例选取方法
CN102253889A (zh) * 2011-08-07 2011-11-23 南京大学 一种回归测试中基于分布的测试用例优先级划分方法
EP3407199A1 (en) * 2017-05-24 2018-11-28 Rohde & Schwarz GmbH & Co. KG Wideband radio communication test apparatus

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102063376A (zh) * 2011-02-16 2011-05-18 哈尔滨工程大学 一种测试用例选取方法
CN102253889A (zh) * 2011-08-07 2011-11-23 南京大学 一种回归测试中基于分布的测试用例优先级划分方法
EP3407199A1 (en) * 2017-05-24 2018-11-28 Rohde & Schwarz GmbH & Co. KG Wideband radio communication test apparatus

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 (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110515852A (zh) * 2019-08-30 2019-11-29 北京浪潮数据技术有限公司 一种基于敏捷开发的应用更新测试方法及相关装置
CN111858341A (zh) * 2020-07-23 2020-10-30 深圳慕智科技有限公司 一种基于神经元覆盖的测试数据度量方法
CN113342651A (zh) * 2021-06-01 2021-09-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法
CN113342651B (zh) * 2021-06-01 2023-11-03 南京大学 一种用于测试用例缺陷与用例模糊关联关系的恢复方法

Also Published As

Publication number Publication date
CN109710514B (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
Ouni et al. Search-based software library recommendation using multi-objective optimization
Meneely et al. Secure open source collaboration: an empirical study of linus' law
US9037915B2 (en) Analysis of tests of software programs based on classification of failed test cases
Raja et al. Defining and evaluating a measure of open source project survivability
CN109710514A (zh) 测试用例优先级排序中的tie-breaking的解决方法及系统
Reuling et al. Fault-based product-line testing: Effective sample generation based on feature-diagram mutation
Saeed et al. The experimental applications of search-based techniques for model-based testing: Taxonomy and systematic literature review
Zhang et al. gcastle: A python toolbox for causal discovery
Gupta et al. An insight into test case optimization: ideas and trends with future perspectives
Ludwig et al. Compiling static software metrics for reliability and maintainability from GitHub repositories
CN107066389A (zh) 基于集成学习的软件缺陷重新打开的预测方法
CN106708738A (zh) 一种软件测试缺陷预测方法及系统
Jahan et al. Version specific test case prioritization approach based on artificial neural network
Kapila et al. Analysis of CK metrics to predict software fault-proneness using bayesian inference
Wang et al. On the use of time series and search based software engineering for refactoring recommendation
Zakari et al. A community-based fault isolation approach for effective simultaneous localization of faults
CN105843744B (zh) 用于并行程序蜕变测试的蜕变关系优先级排序方法
Morán et al. Testing MapReduce programs: A systematic mapping study
Wong et al. Software Fault Localization: an Overview of Research, Techniques, and Tools
Dallilo et al. An evaluation of internal program metrics as predictors of mutation operator score
Niedermayr et al. Too trivial to test? An inverse view on defect prediction to identify methods with low fault risk
Zhou et al. Predicting concurrency bugs: how many, what kind and where are they?

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