Regression testing is a type of software testing that seeks to uncover new software bugs in existing functional and non-functional areas of a system after changes such as enhancements, patches or configuration changes / upgrades, have been made to the application. Check for Wiki Def
When do we need to perform Regression testing:-
When ever there are any changes in the application or enhancements or patches or configuration changes or upgrades.
Why do we need to do Regression Testing:-
When ever the code changes .i.e when ever there is change to the existing code / functionality.
There are many cases such as incorrect bug fixes, Developers try to fix one bug and unknowingly it may break some other functionality. Developers may not deploy the code correctly, they may deploy other versions of code.
Now the question arises as 'Which test cases we need to execute for Regression testing'.
Example:- If say there are around 1000 test cases for your application. How many test cases we should choose for regression???
To answer it, it completely depends on the Application under test. We cannot just go and execute all the test cases which in-turn will definitely increase the time and cost.
We should first identify the important test cases for your applications and test cases for the functionality which effects due to the changes in the application. Also make sure to prioritize the test cases.
If if your application really requires the complete regression, then it is always better choice to go for Automation tool.