Regression Testing is performed by qa testing services to ensure that the developed application/software functionality works faultlessly after some updates are performed. The updates may be the changed features, enhancements, defect fixes, UI updates, etc.
This is performed by testers to validate that none of the functionality is broken after implementation of code fixes or code updates. The person performing regression tests must have knowledge about the application workflow, so that he can validate the areas which could be affected by the implementation.
Regression tests should cover the critical areas of application, areas on which the code is frequently updated and areas in which more number of defects are found.
Retesting is performed to ensure that the fixes implemented for the defects are working fine. Software testing services perform execution of previously failed test cases and verify the fixed defects. This is also called confirmation testing.