Smoke testing is a preliminary check of the software after a build and before a release, used to identify basic and critical issues in an application prior to more comprehensive testing.
Although the terms "sanity tests" and "smoke tests" are often used interchangeably, the core purpose of a sanity test is to ensure that a system is ready to be tested. While this is the basic definition of a sanity test, the concept is more complex than that.
Performing sanity tests, or sanity checks, involves verifying the system is ready for testing in two different ways. The first is to make sure the system is stable and all major components are working. This type of test is a small part of regression testing and usually focuses on the main existing features. Examples include verifying that all pages are present, and that the system is connected to web servers, media servers, mail servers, and databases. These are quick, surface-level tests to make sure further testing can be done. If the database connection is broken, any other testing would not be useful. These tests are easily automated.
Unlike end-to-end testing, System Testing verifies the entire system's behavior against business, system, and functional requirements. It’s generally done after the unit testing and integration testing have been completed. System testing, a type of black box testing, makes use of use cases, requirements, specifications, business rules, and other high-level documentation and descriptions.
The aim of system testing is to ensure that the system works according to the user's expectations, without requiring any knowledge of the system's design or code. To achieve this, system testing should be done in an environment that is as similar as possible to the environment it will be used in when it is in production.
Unit testing checks that each module or unit functions correctly, while integration testing confirms that all units operate properly when connected together. It examines the pathways between units, either in small collections or the whole system. This kind of testing is used to check that the requirements of larger entities, or groups of units, are fulfilled.
Commonly called User Acceptance Testing (UAT) and sometimes referred to as Beta Testing, Acceptance Testing determines if the end product is useful to the end-user, the people that will be using the live system. In functional testing, we verify that a product works correctly according to specifications. In acceptance testing, we validate that the correct thing was built and that it’s what the customer actually needs. Despite passing all of its functional tests, an application can still fail its acceptance testing if it does not provide a useful experience to the end-user. To avoid such a failure, it is important to identify potential issues before the final product is released.
Regression Testing should be carried out after any patch or bug fixes during normal software development cycles, in order to make sure that the changes made have not caused unintended issues in other parts of the system. These issues can be functional, non-functional, or even aesthetic, and can lead to users losing trust in the software application if not identified and addressed.
The purpose of incorporating a regression test process into the quality assurance process is to make sure that any modification done has had only positive results and that the application still meets the requirements. Although the tests for new features or modifications to existing features were successful, regression testing could be unsuccessful due to issues in other parts of the application..
Usability testing is a black box testing technique that assesses how easy an application is to use by measuring the comfort level of users when interacting with the layout, navigation, flow, speed, and content. This type of testing can also be used to compare the application to similar products or to earlier versions of the same product to determine if it has increased functionality or is more competitive. In its simplest form, usability testing validates that the application is user-friendly.