written 5.1 years ago by |
Test case design methods or testing techniques have been referred to as progressive testing or development testing. From verification to validation, the testing process progresses towards the release of the product. However, to maintain the software, bug fixing may be required during any stage of development and therefore, there is a need to check the software again to validate that there has been no adverse effect on the already working software. A system under test (SUT) is said to regress if,
- A modified component fails, or
- A new component, when used with unchanged components, causes failures in the unchanged components by generating side-effects or feature interactions.
Therefore, now the following versions will be there in the system:
Baseline version: The version of a component (system) that has passed a test suite.
Delta version: A changed version that has not passed a regression test.
Delta build: An executable configuration of the SUT that contains all the delta and baseline components.
Thus, it can be said that most test cases begin as progressive test cases and eventually become regression test cases. Regression testing is not another testing activity. Rather, it is the rexecution of some or all of the already developed test cases.
Definition:
The purpose of regression testing is to ensure that bug-fixes and new functionalities introduced in a new version of the software do not adversely affect the correct functionality inherited from the previous version. IEEE software glossary defines regression testing as follows:
Regression testing is the selective retesting of a system or component to verify that modification have not caused unintended effects and that the system or component still complies with its specified requirements.
After a program has been modified/ we must ensure that the modifications work correctly and check that the unmodified parts of the program have not been adversely affected by these modifications. It may be possible that small changes in one part of a program may have subtle undesired effects on other unrelated modules of the software. It is not necessary that if you are getting the desired outputs on
the screen, then there is no problem. It may produce incorrect outputs on other test cases on which the original software produced correct outputs earlier. Thus, during regression testing, the modified software is executed on all tests to validate that it still behaves the same as it did in the original software, except where a change is expected:
Thus, regression testing can be defined as the software maintenance task performed on a modified program to instill confidence that changes are correct and have not adversely affected the unchanged portions of the program.