Reduce, reuse, recycle, recover: Techniques for improved regression testing

M. J. Harrold
{"title":"Reduce, reuse, recycle, recover: Techniques for improved regression testing","authors":"M. J. Harrold","doi":"10.1109/ICSM.2009.5306347","DOIUrl":null,"url":null,"abstract":"One of the most expensive activities that occurs as software is developed and maintained is the testing (or retesting) of the software after it has been modified. Studies suggest that a significant portion of development and maintenance costs go to this retesting, which is known as regression testing. Reports estimate that regression testing consumes as much as 80% of the overall testing budget and can consume up to 50% of the cost of software maintenance. Rapidly changing software and computing environments present many challenges for effective and efficient regression testing in practice. Regression testing can be performed after changes are made to the software, such as after nightly or regular builds, before a new version of the software is released, every time the software is saved and compiled, such as in an agile development environment, or before patches, such as security patches, are released. Regardless of the environment or when it is performed, the goals of regression testing are the same: to improve confidence that the changes behave as intended and that they have not adversely affected unchanged parts of the software. Because regression testing is important, but expensive, much research has been performed, both in industry and in academia, to develop techniques to make regression testing more effective and efficient. This research has also produced many tools and systems that have been used for empirical studies that investigate the effectiveness, scalability, and practicality of the techniques. Researchers have developed techniques for addressing a number of issues related to regression testing, and, in this talk, I will discuss them in four areas. First, techniques attempt to reduce the regression testing time by creating effective regression test suites that test the changed part of the software, by identifying test cases in the regression test suite that do not need to be rerun on the changed software, and by identifying and removing obsolete test cases. Second, techniques can reuse test suites created for one version of the software by identifying those test cases that need to be rerun for testing subsequent versions of the software and by computing an effective ordering for running the test cases. Third, techniques can recycle test cases by monitoring executions to gather test inputs that can be used for retest-ing and by creating unit test cases from system test cases. Finally, techniques could recover test cases by identifying, manipulating, and transforming obsolete test cases, by generating new test cases from old ones, and by repairing test cases when the software changes. In this talk, I will overview the research in testing of evolving software, and discuss achievements to date in managing regression testing by reducing, reusing, recycling, and recovering test cases. I will also present the state of the research and the state of the practice in regression testing. Finally, I will discuss the current trends in both academia and industry, the challenges for solving the difficult problems that exist, the promise for testing of evolving software in the future, and the important open challenges for regression testing in the next decade.","PeriodicalId":211605,"journal":{"name":"International Conference on Smart Multimedia","volume":"205 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2009-10-30","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"25","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"International Conference on Smart Multimedia","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICSM.2009.5306347","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 25

Abstract

One of the most expensive activities that occurs as software is developed and maintained is the testing (or retesting) of the software after it has been modified. Studies suggest that a significant portion of development and maintenance costs go to this retesting, which is known as regression testing. Reports estimate that regression testing consumes as much as 80% of the overall testing budget and can consume up to 50% of the cost of software maintenance. Rapidly changing software and computing environments present many challenges for effective and efficient regression testing in practice. Regression testing can be performed after changes are made to the software, such as after nightly or regular builds, before a new version of the software is released, every time the software is saved and compiled, such as in an agile development environment, or before patches, such as security patches, are released. Regardless of the environment or when it is performed, the goals of regression testing are the same: to improve confidence that the changes behave as intended and that they have not adversely affected unchanged parts of the software. Because regression testing is important, but expensive, much research has been performed, both in industry and in academia, to develop techniques to make regression testing more effective and efficient. This research has also produced many tools and systems that have been used for empirical studies that investigate the effectiveness, scalability, and practicality of the techniques. Researchers have developed techniques for addressing a number of issues related to regression testing, and, in this talk, I will discuss them in four areas. First, techniques attempt to reduce the regression testing time by creating effective regression test suites that test the changed part of the software, by identifying test cases in the regression test suite that do not need to be rerun on the changed software, and by identifying and removing obsolete test cases. Second, techniques can reuse test suites created for one version of the software by identifying those test cases that need to be rerun for testing subsequent versions of the software and by computing an effective ordering for running the test cases. Third, techniques can recycle test cases by monitoring executions to gather test inputs that can be used for retest-ing and by creating unit test cases from system test cases. Finally, techniques could recover test cases by identifying, manipulating, and transforming obsolete test cases, by generating new test cases from old ones, and by repairing test cases when the software changes. In this talk, I will overview the research in testing of evolving software, and discuss achievements to date in managing regression testing by reducing, reusing, recycling, and recovering test cases. I will also present the state of the research and the state of the practice in regression testing. Finally, I will discuss the current trends in both academia and industry, the challenges for solving the difficult problems that exist, the promise for testing of evolving software in the future, and the important open challenges for regression testing in the next decade.
查看原文
分享 分享
微信好友 朋友圈 QQ好友 复制链接
本刊更多论文
减少、重用、再循环、恢复:改进回归测试的技术
在软件开发和维护过程中,最昂贵的活动之一是在软件被修改后对其进行测试(或重新测试)。研究表明,开发和维护成本的很大一部分用于这种重新测试,即回归测试。报告估计回归测试消耗了整个测试预算的80%,并且可以消耗软件维护成本的50%。快速变化的软件和计算环境在实践中为有效和高效的回归测试提出了许多挑战。回归测试可以在对软件进行更改之后执行,例如在夜间或定期构建之后,在发布软件的新版本之前,每次保存和编译软件时,例如在敏捷开发环境中,或者在发布补丁(例如安全补丁)之前。无论环境如何,或者何时执行,回归测试的目标都是相同的:提高对更改按照预期行为的信心,并且它们没有对软件未更改的部分产生不利影响。因为回归测试很重要,但是很昂贵,所以在工业界和学术界都进行了很多研究,以开发使回归测试更有效和高效的技术。这项研究还产生了许多工具和系统,这些工具和系统已用于调查这些技术的有效性、可扩展性和实用性的实证研究。研究人员已经开发出解决与回归测试相关的许多问题的技术,在本次演讲中,我将从四个方面讨论它们。首先,技术试图通过创建有效的测试软件变更部分的回归测试套件,通过识别回归测试套件中不需要在变更的软件上重新运行的测试用例,以及通过识别和删除过时的测试用例来减少回归测试时间。其次,技术可以通过识别那些需要为测试软件的后续版本重新运行的测试用例,并通过计算运行测试用例的有效顺序,来重用为软件的一个版本创建的测试套件。第三,技术可以通过监视执行来回收测试用例,以收集可用于重新测试的测试输入,并通过从系统测试用例创建单元测试用例。最后,技术可以通过识别、操作和转换过时的测试用例,通过从旧的测试用例生成新的测试用例,以及在软件更改时修复测试用例来恢复测试用例。在这次演讲中,我将概述在不断发展的软件测试方面的研究,并讨论迄今为止在通过减少、重用、回收和恢复测试用例来管理回归测试方面的成就。我还将介绍回归测试的研究现状和实践现状。最后,我将讨论学术界和工业界的当前趋势,解决存在的难题的挑战,对未来不断发展的软件测试的承诺,以及未来十年回归测试的重要公开挑战。
本文章由计算机程序翻译,如有差异,请以英文原文为准。
求助全文
约1分钟内获得全文 去求助
来源期刊
自引率
0.00%
发文量
0
期刊最新文献
SPGNet: Spatial Projection Guided 3D Human Pose Estimation in Low Dimensional Space Matrix Syncer - A Multi-chain Data Aggregator For Supporting Blockchain-based Metaverses Product Re-identification System in Fully Automated Defect Detection RCA-NET: Image Recovery Network with Channel Attention Group for Image Dehazing Tissue Discrimination Through Force-Feedback from Impedance Spectroscopy in Robot-Assisted Surgery
×
引用
GB/T 7714-2015
复制
MLA
复制
APA
复制
导出至
BibTeX EndNote RefMan NoteFirst NoteExpress
×
×
提示
您的信息不完整,为了账户安全,请先补充。
现在去补充
×
提示
您因"违规操作"
具体请查看互助需知
我知道了
×
提示
现在去查看 取消
×
提示
确定
0
微信
客服QQ
Book学术公众号 扫码关注我们
反馈
×
意见反馈
请填写您的意见或建议
请填写您的手机或邮箱
已复制链接
已复制链接
快去分享给好友吧!
我知道了
×
扫码分享
扫码分享
Book学术官方微信
Book学术文献互助
Book学术文献互助群
群 号:481959085
Book学术
文献互助 智能选刊 最新文献 互助须知 联系我们:info@booksci.cn
Book学术提供免费学术资源搜索服务,方便国内外学者检索中英文文献。致力于提供最便捷和优质的服务体验。
Copyright © 2023 Book学术 All rights reserved.
ghs 京公网安备 11010802042870号 京ICP备2023020795号-1