Content deleted Content added
Tags: Mobile edit Mobile web edit |
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.5 |
||
(39 intermediate revisions by 21 users not shown) | |||
Line 1:
{{About|software development|the statistical analysis process|Regression analysis|}}▼
{{Short description|Checking whether changes to software have broken functionality that used to work}}
▲{{About|software development|the statistical analysis process|Regression analysis|}}
{{Software development process}}
'''Regression testing''' (rarely, ''non-regression testing''<ref>{{cite book |last1=Pezzè |first1=Mauro |last2=Young |first2=Michal |title=Software testing and analysis: process, principles, and techniques |date=2008 |publisher=Wiley |url=https://www.google.com/search?q=Mauro+%22non-regression%22+%22regression+testing%22 |quote=Testing activities that focus on regression problems are called (non) regression testing. Usually "non" is omitted}}</ref>) is re-running [[functional testing|functional]] and [[non-functional testing|non-functional tests]] to ensure that previously developed and tested software still performs as expected after a change.<ref>{{cite book|last=Basu|first=Anirban| title=Software Quality Assurance, Testing and Metrics| year=2015| publisher=PHI Learning| isbn=978-81-203-5068-7| url=https://books.google.com/books?id=aNTiCQAAQBAJ&pg=PA150}}</ref> If not, that would be called a ''[[software regression|regression]]''.
Changes that may require regression testing include [[software bug|bug]] fixes, software enhancements, [[configuration file|configuration]] changes, and even substitution of [[electronic component]]s ([[Computer hardware|hardware]]).<ref>[[National Academies of Sciences, Engineering, and Medicine|National Research Council]] Committee on Aging Avionics in Military Aircraft: [https://www.nap.edu/catalog/10108/aging-avionics-in-military-aircraft ''Aging Avionics in Military Aircraft'']. The National Academies Press, 2001, page 2: ″Each technology-refresh cycle requires regression testing.″</ref> As regression [[test
==Background==
As software is updated or changed, or reused on a modified target, emergence of new faults and/or re-emergence of old faults is quite common.
Sometimes re-emergence occurs because a fix gets lost through poor [[revision control]] practices (or simple [[human error]] in revision control). Often, a fix for a problem will be "[[software brittleness|fragile]]" in that it fixes the problem in the narrow case where it was first observed but not in more general cases which may arise over the lifetime of the software. Frequently, a fix for a problem in one area inadvertently causes a [[software bug]] in another area.
Although this may be done through [[manual testing]] procedures using programming techniques, it is often done using [[automated testing]] tools.<ref>[http://safari.oreilly.com/0201794292/ch08lev1sec4 Automate Regression Tests When Feasible], Automated Testing: Selected Best Practices, Elfriede Dustin, Safari Books Online</ref> Such a [[test suite]] contains software tools that allow the testing environment to execute all the regression [[Test case (software)|test case]]s automatically;
Common strategies are to run such a system after every successful compile (for small projects), every night, or once a week. Those strategies can be automated by an external tool.
Line 43:
Regression testing is performed when changes are made to the existing functionality of the software or if there is a bug fix in the software. Regression testing can be achieved through multiple approaches; if a ''test all'' approach is followed, it provides certainty that the changes made to the software have not affected the existing functionalities, which are unaltered.<ref name=":1">{{cite journal |last1=Yoo |first1=S. |last2=Harman |first2=M. |title=Regression testing minimization, selection and prioritization: a survey |journal=Software Testing, Verification and Reliability |date=2010 |volume=22 |issue=2 |pages=67–120|doi=10.1002/stvr.430}}</ref>
In [[agile software development]]—where the software development life cycles are very short, resources are scarce, and changes to the software are very frequent—regression testing might introduce a lot of unnecessary [[Overhead (business)|overhead]].<ref name=":1" />
In a software development environment which tends to use [[black box]] components from a third party, performing regression testing can be tricky, as any change in the third-party component may interfere with the rest of the system (and performing regression testing on a third-party component is difficult, because it is an unknown entity).<ref name=":1" />
Line 52:
{{Quotation |text=Also as a consequence of the introduction of new bugs, program maintenance requires far more system testing per statement written than any other programming. Theoretically, after each fix, one must run the entire batch of test cases previously run against the system to ensure that it has not been damaged in an obscure way. In practice, such ''regression testing'' must indeed approximate this theoretical idea, and it is very costly.|author=[[Fred Brooks]]|title=''[[The Mythical Man Month]]''|source=p. 122}}
Regression tests can be
==References==
{{reflist}}
{{Software testing}}
|