4测试用例修复方法与工具.docx

上传人:b****8 文档编号:9121310 上传时间:2023-02-03 格式:DOCX 页数:15 大小:414.95KB
下载 相关 举报
4测试用例修复方法与工具.docx_第1页
第1页 / 共15页
4测试用例修复方法与工具.docx_第2页
第2页 / 共15页
4测试用例修复方法与工具.docx_第3页
第3页 / 共15页
4测试用例修复方法与工具.docx_第4页
第4页 / 共15页
4测试用例修复方法与工具.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

4测试用例修复方法与工具.docx

《4测试用例修复方法与工具.docx》由会员分享,可在线阅读,更多相关《4测试用例修复方法与工具.docx(15页珍藏版)》请在冰豆网上搜索。

4测试用例修复方法与工具.docx

4测试用例修复方法与工具

回归测试中测试用例修复的方法与工具

1绪论

1.1研究背景

随着社会的发展,软件系统在社会各个领域的作用日益重要,人们对软件系统的要求也日益增高,软件质量首当其冲。

2002年,NIST(theNationalInstituteofStandardsandTechnology)估算软件缺陷每年要耗费美国经济大约6000万美元,如何发现和处理这些软件缺陷直接关系到软件的可靠性和质量。

尽管存在代码审查、形式化验证等辅助手段,软件测试依然是目前最主要的软件质量保障手段[1,2]。

由于功能增加、性能调优、软件重构、错误修复等原因,软件通常处于动态演化。

回归测试旨在通过重新测试修改以后的软件确保这些改变没有对现有的软件行为带来损坏[3]。

随着软件的演化,新的测试用例不断产生,往往积累大量冗余测试用例。

测试用例执行、管理和维护的开销相当大,而测试资源有限,因此我们希望从中挑选部分代表性测试用例,称为测试用例选择(testcaseselection)。

测试用例选择应尽可能满足不同的测试需求,从而提高其错误检测能力。

在演化软件测试的实际应用中,仅采用测试用例选择并不能完全解决软件演化带来的挑战:

(1)软件演化可能导致部分测试用例不可用,直接丢弃这些测试用例将降低错误检测能力;

(2)软件演化引发模块的增加和修改,已有测试用例不能完全覆盖这些模块。

为了满足软件演化带来的测试挑战,研究者们提出了测试用例修复(testcaserepairing)和测试用例集扩增(testsuiteaugmentation)技术。

测试用例修复是指对旧版本程序测试用例集中的不可用测试用例进行修复,使得修复后的测试用例能够在新版本程序上执行。

测试用例集扩增技术是指根据新版本程序和已有测试用例来生成新的测试用例,促使新测试用例能够覆盖新版本程序的修改部分和新增部分。

测试用例选择、测试用例修复和测试用例集扩增构成了测试用例演化的三大主要部分[2]。

测试用例修复是指对不可用的测试用例进行添加、删除或修改等操作,使得修改后的测试用例能够在新版本上正确执行。

在软件演化过程中,不可用测试用例因软件演化导致而成,修复后的不可用测试用例往往更具有针对性,从而比生成新测试用例更为有效。

因此,修复不可用测试用例对于满足演化软件测试新需求具有重要意义。

不可用测试用例可分为两类:

可修复测试用例和不可修复测试用例。

不可用测试用例能够被修复使其能够在新版本的程序上执行,我们称其为可修复测试用例。

理论上,所有测试用例均可修复,但需要考虑其修复成本。

我们通常将修复成本过高的测试用例称为不可修复测试用例。

不可修复测试用例的一个简单处理就是丢弃。

丢弃不可用测试用例存在两个风险:

(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

15

Asimulationstudyonsomesearchalgorithmsforregressiontestcaseprioritization

14

TestCasePrioritizationforWebServiceRegressionTesting

12

Automaticallyrepairingtestcasesforevolvingmethoddeclarations

11

Aclusteringapproachtoimprovingtestcaseprioritization:

Anindustrialcasestudy

11

ActionableknowledgemodelforGUIregressiontesting

11

Water:

Webapplicationtestrepair

10

AutomatedGUIRefactoringandTestScriptRepair

9

TestingWebServiceOrchestratorsinContext:

ASymbolicApproach

9

HarnessingWeb-BasedApplicationSimilaritiestoAidinRegressionTesting

8

Scalingupautomatedtestgeneration:

Automaticallygeneratingmaintainableregressionunittestsforprograms

7

Understandingmythsandrealitiesoftest-suiteevolution

7

Reduce,reuse,recycle,recover:

Techniquesforimprovedregressiontesting

6

AutoFlow:

AnautomaticdebuggingtoolforAspectJsoftware

6

TowardstestingfutureWebapplications

6

ReAssert:

atoolforrepairingbrokenunittests

5

Automatictestsuiteevolution

4

Maintainingmulti-tierwebapplications

4

Notesonthesoftwareevolutionwithintestplans

4

PrioritizingRequirements-BasedRegressionTestCases:

AGoal-DrivenPractice

4

TheEffectivenessofRegressionTestingTechniquesinReducingtheOccurrenceofResidualDefects

4

Softwareregressionaschangeofinputpartitioning

2

Automatedtestingusingsymbolicexecutionandtemporalmonitoring

2

OptimizingaStructuralConstraintSolverforEfficientSoftwareChecking

2

AMethodforTestingSoftwareSystemsBasedonStateDesignPatternUsingSymbolicExecution

1

Specification-basedtestrepairusingalightweightformalmethod

1

Test-casegenerationandbug-findingthroughsymbolicexecution

1

VariousTechniquesofRegressionTesting

1

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基于事件可达性模型的脚本修复方法

基于事件可达性模型的图形用户界面测试脚本修复方法

Automaticallyrepairingeventsequence-basedGUItestsuitesforregressiontesting

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:

Webapplicationtestrepair

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符号执行方法

Ontestrepairusingsymbolicexecution

4.3.2.2针对方法声明改变的修复方法

Automaticallyrepairingtestcasesforevolvingmethoddeclarations

4.3.3白盒测试用例修复工具

4.3.3.1ReAssert工具

ReAssert:

SuggestingRepairsforBrokenUnitTests

ReAssert:

atoolforrepairingbrokenunittests

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.

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1