4测试用例修复方法与工具Word格式文档下载.docx
《4测试用例修复方法与工具Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《4测试用例修复方法与工具Word格式文档下载.docx(15页珍藏版)》请在冰豆网上搜索。
可修复测试用例和不可修复测试用例。
不可用测试用例能够被修复使其能够在新版本的程序上执行,我们称其为可修复测试用例。
理论上,所有测试用例均可修复,但需要考虑其修复成本。
我们通常将修复成本过高的测试用例称为不可修复测试用例。
不可修复测试用例的一个简单处理就是丢弃。
丢弃不可用测试用例存在两个风险:
(1)不可用测试用例所占比例可能很大,直接丢弃将浪费大量测试资源;
(2)不可用测试用例由软件演化引发产生,直接丢弃将导致漏测,从而降低测试用例集的错误检测能力。
测试用例修复不但能够节省软件的测试成本,还能够获得更有针对性的测试用例,进而提高演化软件的测试效率[2]。
1.2理论基础
1.2.1回归测试
随着软件系统的不断演化,系统会不断发生改变,这些改变往往容易给软件造成影响。
为了保证软件新的改变没有影响到改变以前软件已有的行为,回归测试是必要的过程。
回归测试旨在验证软件的改变部分没有引进新的不可预期的错误,在整个软件维护过程中占了一半的时间[4]。
在软件的不断改变中,测试用例集会越来越大以至于花销超过设定的范围,为了解决这个问题,测试用例集最小化、测试用例选择、测试用例优先级技术应运而生[3]。
测试用例集最小化旨在通过减少冗余的测试用例使来减少最终运行的测试用例数量;
测试用例选择旨在辨别出与最近的改变相关的测试用例;
测试用例优先级旨在通过给测试用例设定优先级使最先发现的错误数量最大化[3]。
1.2.2测试用例演化
软件演化使得原有测试用例集不足以满足变化的测试需求,因而需要演化已有测试用例集以确保新版本软件的质量,我们称其为测试用例演化。
定义如下:
定义1.设程序P,P′为P的新版本程序,T为P的测试用例集,通过对T进行选择、修复和扩增等操作,构建一个新测试用例集T′,使得T′尽可能地满足P′的测试需求,我们称其为测试用例演化[2]。
图1-1描述了测试用例演化的过程,随着程序的变化,会出现可用的测试用例和不可用的测试用例两类,对于可用的测试用例使用测试用例选择技术尽量选择出满足新版本软件测试需求的测试用例集。
对于不可用的测试用例能够修复的执行修复操作,对于不能够修复的用例直接丢弃。
图1-1测试用例演化过程
1.2.3测试用例修复
当软件发生改变以后,原有的测试用例变为可用和不可用两种,丢弃所有的不可用测试用例无疑是很大的浪费,我们的目标就是将不可用的测试用例通过修复的方法变为可用的测试用例[2,5]。
具体定义如下:
定义3.设程序P,P′为P的新版本程序,T为P的测试用例集,t为T中的一个测试用例且t在P′上无法正常执行,通过对t中的测试元素进行添加、修改、删除等修复操作得到一个新测试用例t′,使得t′能够在P′上正常执行,称为测试用例修复[2]。
1.3论文组织结构
本文通过系统文献综述方法对于测试用例修复技术进行综合分析,对比重要测试用例修复技术并分析测试用例修复技术的研究趋势,帮助研究人员选择适合自己的测试用例修复技术,促进测试用例技术的研究和在工业界的有效应用。
本文第1节介绍系统综述的方法,并按照系统综述的过程进行资料收集和分析。
第2节对于测试用例修复系统综述的结果进行分析,从测试用例修复方法分类、重要的测试用例修复方法对比方面进行分析。
第3节分析测试用例修复的研究趋势。
最后对本文进行总结。
2研究方法
2.1系统文献综述
系统文献综述(systematicliteraturereview),简称系统综述,是主要在医学领域和社会学研究领域针对某一个研究性问题开展的基于文献的系统化综述方法,并于2004年引入软件工程领域.系统文献综述的过程包含3个主要的阶段:
•制定综述方案:
主要进行综述需求分析,明确综述的目的,设计开展综述的规程,以指导后期的文献收集等工作;
•开展综述:
根据综述方案预定的目标,按照综述步骤进行文献收集,主要工作包括确定主要的文献来源、确定收录标准、实现文献质量评价、开展数据抽取与综合;
•形成综述报告:
对于综述进行总结.
本文按照图2-1的系统文献综述框架开展了回归测试中测试用例修复方法和工具的系统文献综述。
图2-1系统文献综述框架
2.2文献计量分析
2.2.1作者出现频次
将从SCI、EI、CNKI、万方数据库中检索出文献删除重复文献以后,总共302篇相关文献。
利用工具Bibexcel对这302篇文献的作者进行分析,图2的结果表示每位作者在302篇文献中出现的总次数,其中KhurshidSafraz和OrsoAlessandro出现的次数分别为6次和5次,是较为有影响力的作者。
图2
选取出现次数大于2的作者,总共有14位作者,通过工具Pajek对其进行分析,图的结果反映了这14位作者之间的合作关系。
图3
2.2.2期刊类型
使用Endnote工具对302篇文献进行期刊类型分析,分为Book、BookSection、ConferenceProceedings、JournalArtide、Patent、Report。
其中ConferenceProceedings、JournalArtide最多,分别有184篇和75篇。
2.2.3年份分布
通过阅读文献的关键词进行第一轮筛选,剩下84篇文献,图4为这84篇文献的年份分布情况,其中2010年和2011年的文献最多。
图4文献的年代分布情况
2.2.4关键词
进一步阅读文献的摘要和整体内容删除与研究对象相关度不大的文献以及篇幅小于5页的文献。
最后剩下的53篇文献用于文献综述,其中包括37篇ConferenceProceeding、13篇期刊JournalArtide、2篇Thesis和1篇BookSection。
通过工具Bibexcel对剩下的53篇文献进行关键词分析,表1为这53篇文献的关键词使用频率情况,其中test、testing、testingsoftware、program、maintanceSoftware、case、regression在这53篇文献中使用频率都很高。
表1关键词在文献中出现的次数
2.2.5文献被引用次数
对最后剩下的53篇文献进行被引用次数的统计,表2是所有引用次数大于等于1次的文献。
其中引用次数大于20次的文献有10篇,大于10次的文献有9篇。
文献题目
被引用次数
Regressiontestingminimization,selectionandprioritization:
asurvey
201
RegressiontestingofGUIs
128
Automaticallyrepairingeventsequence-basedGUItestsuitesforregressiontesting
67
Matrix:
Maintenance-orientedtestingrequirementsidentifierandexaminer
43
Path-orientedtestdatagenerationusingsymbolicexecutionandconstraintsolvingtechniques
40
AutomatedBehavioralRegressionTesting
32
ReAssert:
SuggestingRepairsforBrokenUnitTests
30
RegressionTestingofCompositeService:
AnXBFG-BasedApproach
22
Ontestrepairusingsymbolicexecution
21
WISE:
Automatedtestgenerationforworst-casecomplexity
20
Factorsaffectingtheuseofgeneticalgorithmsintestsuiteaugmentation
17
ASystematicRegressionTestingMethodandToolForSoftwareComponents
15
Acasestudyonregressiontestsuitemaintenanceinsystemevolution
Asimulationstudyonsomesearchalgorithmsforregressiontestcaseprioritization
14
TestCasePrioritizationforWebServiceRegressionTesting
12
Automaticallyrepairingtestcasesforevolvingmethoddeclarations
11
Aclusteringapproachtoimprovingtestcaseprioritization:
Anindustrialcasestudy
ActionableknowledgemodelforGUIregressiontesting
Water:
Webapplicationtestrepair
10
AutomatedGUIRefactoringandTestScriptRepair
9
TestingWebServiceOrchestratorsinContext:
ASymbolicApproach
HarnessingWeb-BasedApplicationSimilaritiestoAidinRegressionTesting
8
Scalingupautomatedtestgeneration:
Automaticallygeneratingmaintainableregressionunittestsforprograms
7
Understandingmythsandrealitiesoftest-suiteevolution
Reduce,reuse,recycle,recover:
Techniquesforimprovedregressiontesting
6
AutoFlow:
AnautomaticdebuggingtoolforAspectJsoftware
TowardstestingfutureWebapplications
ReAssert:
atoolforrepairingbrokenunittests
5
Automatictestsuiteevolution
4
Maintainingmulti-tierwebapplications
Notesonthesoftwareevolutionwithintestplans
PrioritizingRequirements-BasedRegressionTestCases:
AGoal-DrivenPractice
TheEffectivenessofRegressionTestingTechniquesinReducingtheOccurrenceofResidualDefects
Softwareregressionaschangeofinputpartitioning
2
Automatedtestingusingsymbolicexecutionandtemporalmonitoring
OptimizingaStructuralConstraintSolverforEfficientSoftwareChecking
AMethodforTestingSoftwareSystemsBasedonStateDesignPatternUsingSymbolicExecution
1
Specification-basedtestrepairusingalightweightformalmethod
Test-casegenerationandbug-findingthroughsymbolicexecution
VariousTechniquesofRegressionTesting
3失效用例分析
3.1用力失效问题
3.2失效问题分类
3.2.1断言失败
3.2.2程序运行时异常
3.2.3编译错误
3.3方法声明演化分析
3.3.1方法声明定义
3.3.2方法声明演化分类
3.3.2.1方法名称改变
3.3.2.2方法返回参数类型改变
3.3.2.3方法参数改变
4测试用例修复方法与工具
4.1GUI测试用例修复
4.1.1GUI回归测试问题
4.1.2GUI测试用例修复方法
4.1.2.1基于AKI的多代理框架的修复方法
ActionableKnowledgeModelforGUIRegressionTesting
4.1.2.2基于事件可达性模型的脚本修复方法
基于事件可达性模型的图形用户界面测试脚本修复方法
4.1.2.3基于实验的评估手册与工具的脚本维护方法
ExperimentalAssessmentofManualVersusTool-BasedMaintenanceof
GUI-DirectedTestScripts
4.1.2.4基于启发式框架的测试用例维护方法
AnExtensibleHeuristic-BasedFrameworkforGUITestCaseMaintenance
4.1.2.5人类知识辅助的脚本修复技术
人类知识辅助的GUI测试脚本修复技术
4.1.3GUI测试用例修复工具
4.1.3.1REST脚本修复工具
MaintainingandevolvingGUI-directedtestscripts
4.2Web测试用例修复
4.2.1Web回归测试问题
4.2.2Web测试用例修复方法
4.2.2.1自动修复会话数据方法
AutomatedsessiondatarepairforWebapplicationregressiontesting
AdvancesinUser-Session-BasedTestingofWebApplications
4.2.2.2基于版本行为比较的方法
Water:
4.2.2.3基于关键词的方法
AKeyword-basedUITestFrameworkforWebServices
4.2.3Web测试用例修复工具
4.2.3.1ReFit-Eclipse的测试用例维护插件
ReFit:
AFittestmaintenanceplug-infortheEclipserefactoringplug-in
4.3白盒测试用例修复
4.3.1回归测试问题
4.3.2白盒测试用例修复方法
4.3.2.1符号执行方法
4.3.2.2针对方法声明改变的修复方法
Automaticallyrepairingtestcasesforevolvingmethoddeclarations
4.3.3白盒测试用例修复工具
4.3.3.1ReAssert工具
4.3.3.2TestCareAssistant工具
TestCareAssistant:
AutomaticRepairofTestCaseCompilationErrors
4.3.3.3TestEvol工具
TestEvol:
atoolforanalyzingtest-suiteevolution
5挑战与趋势
6总结
References:
[1]J.D.StrateandP.A.Laplante,"
ALiteratureReviewofResearchinSoftwareDefectReporting,"
20132013.
[2]张智轶,陈振宇,徐宝文,and杨瑞,"
测试用例演化研究进展,"
in软件学报,ed,2013.
[3]S.YooandM.Harman,"
Regressiontestingminimization,selectionandprioritization:
asurvey,"
SoftwareTesting,VerificationandReliability,vol.22,pp.67-120,20122012.
[4]A.Ngah,"
Regressiontestselectionbyexclusion,"
DurhamUniversity,2012.
[5]A.M.MemonandM.L.Soffa,"
RegressiontestingofGUIs,"
2003,pp.118-127.