Regression Testing is a test that is performed to make sure that previously working functionality still works, after changes elsewhere in the system. Regression tests include functional as well as non-functional tests to ensure that previously working software still works fine after some modification in the software.
If there is an error in the software that is caused by the modification in software or module which was totally working fine after tested, its called a Regression.
What if the system has lots of modules or system is too big?
What if the system has lots of modification daily?
Can we do regression testing daily?
Yes. Its a big challenge for the tester to perform regression testing. Its not possible to do functional and non-functional testing every time whenever there is a modification in the system or changes in the system manually. So why Unit Testing (Programmatically testing each unit of the software) can help to perform regression testing systematically. Unit Testing is automatically regression tests, and thats one of their biggest advantages. Once those tests are written, they will be run in the future, whenever you add new functionality or change existing functionality.
Regression testing helps to ensure that changes (due to testing or for other reasons) do not introduce unintended behavior or additional errors.
Regression Testing may be conducted manually, by re-executing a subset of all test cases or using automated capture/playback tools. There are lots of functioning capturing tools or plugin which capture all the test carried out by the tester at first hit. The capture functionality can be replay as many time as needed which help to perform Regression Testing.