Regression |
Ensures previously developed software still performs correctly after changes or interfacing with other software. |
To ensure changes haven’t adversely affected existing features. |
After new functionality development, defect fixing, or software patches/updates. |
Re-testing, re-execution of test cases, automated test suites. |
Time and resource-intensive, requires comprehensive understanding of the software’s functionality. |
Smoke |
Ensures the most crucial features of a program work correctly before proceeding with further testing. |
To verify the build is stable enough for further testing and to identify issues early. |
After a build is released, before more comprehensive testing begins. |
Executing basic functionality tests that cover the most critical aspects. |
Risk of overlooking subtle issues and not capturing defects in complex scenarios. |
Sanity |
Checks whether new functionality or bug fixes have not impacted the existing functionalities of the application. |
To quickly determine if changes or fixes have not caused major issues with existing functionality. |
After minor fixes or changes, or after introducing new features. |
Running a set of basic tests on the affected area(s) to ensure core functionality remains intact. |
Balancing depth of testing with the need for quick feedback, limited scope can lead to a false sense of security. |