Throughout a software development cycle the software has to be tested repeatedly to detect any kind of error or bug. Especially when adding new code to the already functioning existing software. Then these changes have to cooperate with the existing code. The examination to ensure that is called regression test.
A widely used method to approach regression testing is to build a library of tests that consist of standard cases and run through those whenever the software code is modified or extended. When compiling such a library it is difficult to decide which test cases to include and which test cases are unnecessary. It is recommended to always run test cases that include the boundary conditions and timing and also automated tests.
If a test has already found a bug that does not automatically mean that it is a necessary test that will discover more bugs in the future, it is possible that the bug it found has been fixed by now and the test is inconsequential. If a bug is found it is very important that when fixing the bug, the software developer traces the problem to the source rather than just build a way around the problem with more code. Otherwise more bugs will occur in the future and the code will be unstructured and harder to comprehend and further modify.
The library of regression tests should also be looked through roughly every third testing cycle to eliminate redundancies and reevaluate the necessity of every test. It is not uncommon to find test duplicates because there is not just one person writing code. If more than one test is found that helps fix a particular bug, every one of these tests should be given a trial run and the best one of them should remain in the library, while all the others should be eliminated.
Every formal test plan includes a section for regression testing. When writing that part of the test plan the most important objective should be what the goal of the testing is. The more accurate the goal is specified, the easier it is for anyone else to understand, which reduces the risk of misunderstands and unnecessary costs and expenditure of time.
Moreover, it should be considered what techniques are used to execute the regression test. Differentiate between automated and manual tests. What tools and what kind of infrastructure are needed for the automated tests? Who and how will the manual tests be conducted and what qualifications does the tester require in which area of the application?
Furthermore, fundamental characteristics are the results. Who wants to know the results and in how much detail do they need them? Consequently, which information is the most significant and therefore needs to be shared first? Is there an order of priority for which test is the most and which the least important? If all the advice above is followed and the details are well structured, that part of the formal test plan should be easily understandable and well-formed.