1、可修复测试用例和不可修复测试用例。不可用测试用例能够被修复使其能够在新版本的程序上执行,我们称其为可修复测试用例。理论上,所有测试用例均可修复,但需要考虑其修复成本。我们通常将修复成本过高的测试用例称为不可修复测试用例。不可修复测试用例的一个简单处理就是丢弃。丢弃不可用测试用例存在两个风险:(1) 不可用测试用例所占比例可能很大,直接丢弃将浪费大量测试资源;(2) 不可用测试用例由软件演化引发产生,直接丢弃将导致漏测,从而降低测试用例集的错误检测能力。测试用例修复不但能够节省软件的测试成本,还能够获得更有针对性的测试用例,进而提高演化软件的测试效率2。1.2 理论基础1.2.1 回归测试随着软
2、件系统的不断演化,系统会不断发生改变,这些改变往往容易给软件造成影响。为了保证软件新的改变没有影响到改变以前软件已有的行为,回归测试是必要的过程。回归测试旨在验证软件的改变部分没有引进新的不可预期的错误,在整个软件维护过程中占了一半的时间4。在软件的不断改变中,测试用例集会越来越大以至于花销超过设定的范围,为了解决这个问题,测试用例集最小化、测试用例选择、测试用例优先级技术应运而生3。测试用例集最小化旨在通过减少冗余的测试用例使来减少最终运行的测试用例数量;测试用例选择旨在辨别出与最近的改变相关的测试用例;测试用例优先级旨在通过给测试用例设定优先级使最先发现的错误数量最大化3。1.2.2 测试
3、用例演化软件演化使得原有测试用例集不足以满足变化的测试需求,因而需要演化已有测试用例集以确保新版本软件的质量,我们称其为测试用例演化。定义如下:定义1. 设程序P,P为P的新版本程序,T为P的测试用例集,通过对T进行选择、修复和扩增等操作,构建一个新测试用例集T ,使得T 尽可能地满足P的测试需求,我们称其为测试用例演化2。图1-1描述了测试用例演化的过程,随着程序的变化,会出现可用的测试用例和不可用的测试用例两类,对于可用的测试用例使用测试用例选择技术尽量选择出满足新版本软件测试需求的测试用例集。对于不可用的测试用例能够修复的执行修复操作,对于不能够修复的用例直接丢弃。图1-1 测试用例演化
4、过程1.2.3 测试用例修复当软件发生改变以后,原有的测试用例变为可用和不可用两种,丢弃所有的不可用测试用例无疑是很大的浪费,我们的目标就是将不可用的测试用例通过修复的方法变为可用的测试用例2, 5。具体定义如下:定义3. 设程序P,P为P的新版本程序,T为P的测试用例集,t 为T中的一个测试用例且t 在P上无法正常执行,通过对t中的测试元素进行添加、修改、删除等修复操作得到一个新测试用例t,使得t能够在P上正常执行,称为测试用例修复2。1.3 论文组织结构本文通过系统文献综述方法对于测试用例修复技术进行综合分析,对比重要测试用例修复技术并分析测试用例修复技术的研究趋势,帮助研究人员选择适合自
5、己的测试用例修复技术,促进测试用例技术的研究和在工业界的有效应用。本文第1节介绍系统综述的方法,并按照系统综述的过程进行资料收集和分析。第2节对于测试用例修复系统综述的结果进行分析,从测试用例修复方法分类、重要的测试用例修复方法对比方面进行分析。第3节分析测试用例修复的研究趋势。最后对本文进行总结。2 研究方法2.1 系统文献综述系统文献综述(systematic literature review),简称系统综述,是主要在医学领域和社会学研究领域针对某一个研究性问题开展的基于文献的系统化综述方法,并于2004年引入软件工程领域.系统文献综述的过程包含3个主要的阶段: 制定综述方案:主要进行综
6、述需求分析,明确综述的目的,设计开展综述的规程,以指导后期的文献收集等工作; 开展综述:根据综述方案预定的目标,按照综述步骤进行文献收集,主要工作包括确定主要的文献来源、确定收录标准、实现文献质量评价、开展数据抽取与综合; 形成综述报告:对于综述进行总结.本文按照图2-1的系统文献综述框架开展了回归测试中测试用例修复方法和工具的系统文献综述。图2-1 系统文献综述框架2.2 文献计量分析2.2.1 作者出现频次将从SCI、EI、CNKI、万方数据库中检索出文献删除重复文献以后,总共302篇相关文献。利用工具Bibexcel对这302篇文献的作者进行分析,图2的结果表示每位作者在302篇文献中出
7、现的总次数,其中Khurshid Safraz和Orso Alessandro出现的次数分别为6次和5次,是较为有影响力的作者。图2选取出现次数大于2的作者,总共有14位作者,通过工具Pajek对其进行分析,图的结果反映了这14位作者之间的合作关系。图32.2.2 期刊类型使用Endnote工具对302篇文献进行期刊类型分析,分为Book、Book Section、Conference Proceedings、Journal Artide、Patent、Report。其中Conference Proceedings、Journal Artide最多,分别有184篇和75篇。2.2.3 年份分布
8、通过阅读文献的关键词进行第一轮筛选,剩下84篇文献,图4为这84篇文献的年份分布情况,其中2010年和2011年的文献最多。图4 文献的年代分布情况2.2.4 关键词进一步阅读文献的摘要和整体内容删除与研究对象相关度不大的文献以及篇幅小于5页的文献。最后剩下的53篇文献用于文献综述,其中包括37篇Conference Proceeding、13篇期刊Journal Artide、2篇Thesis和1篇Book Section。通过工具Bibexcel对剩下的53篇文献进行关键词分析,表1为这53篇文献的关键词使用频率情况,其中test、testing、testingsoftware、progr
9、am、maintanceSoftware、case、regression在这53篇文献中使用频率都很高。表1 关键词在文献中出现的次数2.2.5 文献被引用次数对最后剩下的53篇文献进行被引用次数的统计,表2是所有引用次数大于等于1次的文献。其中引用次数大于20次的文献有10篇,大于10次的文献有9篇。文献题目被引用次数Regression testing minimization, selection and prioritization: a survey201Regression testing of GUIs128Automatically repairing event sequen
10、ce-based GUI test suites for regression testing67Matrix: Maintenance-oriented testing requirements identifier and examiner43Path-oriented test data generation using symbolic execution and constraint solving techniques40Automated Behavioral Regression Testing32 ReAssert: Suggesting Repairs for Broken
11、 Unit Tests30Regression Testing of Composite Service: An XBFG-Based Approach22On test repair using symbolic execution21 WISE: Automated test generation for worst-case complexity20 Factors affecting the use of genetic algorithms in test suite augmentation17 A Systematic Regression Testing Method and
12、Tool For Software Components15A case study on regression test suite maintenance in system evolutionA simulation study on some search algorithms for regression test case prioritization14Test Case Prioritization for Web Service Regression Testing12 Automatically repairing test cases for evolving metho
13、d declarations11A clustering approach to improving test case prioritization: An industrial case studyActionable knowledge model for GUI regression testing Water: Web application test repair10Automated GUI Refactoring and Test Script Repair 9Testing Web Service Orchestrators in Context: A Symbolic Ap
14、proachHarnessing Web-Based Application Similarities to Aid in Regression Testing8Scaling up automated test generation: Automatically generating maintainable regression unit tests for programs7Understanding myths and realities of test-suite evolution Reduce, reuse, recycle, recover: Techniques for im
15、proved regression testing6AutoFlow: An automatic debugging tool for AspectJ softwareTowards testing future Web applicationsReAssert: a tool for repairing broken unit tests5Automatic test suite evolution4Maintaining multi-tier web applicationsNotes on the software evolution within test plansPrioritiz
16、ing Requirements-Based Regression Test Cases: A Goal-Driven PracticeThe Effectiveness of Regression Testing Techniques in Reducing the Occurrence of Residual Defects Software regression as change of input partitioning2Automated testing using symbolic execution and temporal monitoringOptimizing a Str
17、uctural Constraint Solver for Efficient Software CheckingA Method for Testing Software Systems Based on State Design Pattern Using Symbolic Execution1Specification-based test repair using a lightweight formal methodTest-case generation and bug-finding through symbolic executionVarious Techniques of
18、Regression Testing3 失效用例分析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.1 GUI测试用例修复4.1.1 GUI回归测试问题4.1.2 GUI测试用例修复方法4.1.2.1 基于AKI的多代理框架的修复方法Actionable Knowledge Model for GUI Regression Testing4.
19、1.2.2 基于事件可达性模型的脚本修复方法基于事件可达性模型的图形用户界面测试脚本修复方法4.1.2.3 基于实验的评估手册与工具的脚本维护方法Experimental Assessment of Manual Versus Tool-Based Maintenance ofGUI-Directed Test Scripts4.1.2.4 基于启发式框架的测试用例维护方法An Extensible Heuristic-Based Framework for GUI Test Case Maintenance4.1.2.5 人类知识辅助的脚本修复技术人类知识辅助的GUI测试脚本修复技术4.1.
20、3 GUI测试用例修复工具4.1.3.1 REST脚本修复工具Maintaining and evolving GUI-directed test scripts4.2 Web测试用例修复4.2.1 Web回归测试问题4.2.2 Web测试用例修复方法4.2.2.1 自动修复会话数据方法Automated session data repair for Web application regression testingAdvances in User-Session-Based Testing of Web Applications4.2.2.2 基于版本行为比较的方法Water:4.2.2
21、.3 基于关键词的方法A Keyword-based UI Test Framework for Web Services4.2.3 Web测试用例修复工具4.2.3.1 ReFit- Eclipse的测试用例维护插件ReFit: A Fit test maintenance plug-in for the Eclipse refactoring plug-in4.3 白盒测试用例修复4.3.1 回归测试问题4.3.2 白盒测试用例修复方法4.3.2.1 符号执行方法4.3.2.2 针对方法声明改变的修复方法Automatically repairing test cases for evol
22、ving method declarations4.3.3 白盒测试用例修复工具4.3.3.1 ReAssert工具4.3.3.2 TestCareAssistant工具TestCareAssistant: Automatic Repair of Test Case Compilation Errors4.3.3.3 TestEvol工具TestEvol: a tool for analyzing test-suite evolution5 挑战与趋势6 总结References:1 J. D. Strate and P. A. Laplante, A Literature Review of
23、 Research in Software Defect Reporting, 2013 2013.2 张智轶, 陈振宇, 徐宝文, and 杨瑞, 测试用例演化研究进展, in 软件学报, ed, 2013.3 S. Yoo and M. Harman, Regression testing minimization, selection and prioritization: a survey, Software Testing, Verification and Reliability, vol. 22, pp. 67-120, 2012 2012.4 A. Ngah, Regression test selection by exclusion, Durham University, 2012.5 A. M. Memon and M. L. Soffa, Regression testing of GUIs, 2003, pp. 118-127.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1