What are the different types of system testing?

Recovery testing

A recovery test is a system test that forces the software to fail in various ways, therefore verifying that the recovery is performed properly.

If recovery is automatic, i.e., performed by the system itself, then re-initialization, data recovery, and system restarts are evaluated for correctness.

If recovery requires human intervention, the time to repair is evaluated to determine whether it is within the acceptable limits.

Security testing

Security testing attempts to verify that the production mechanism built into a system will protect it from improper penetration and other vulnerabilities.

During security testing, potential threats to the system are uncovered so that appropriate measures can be taken. This may include threats such as system hijacking and information loss.

Performance testing

Performance testing is designed to test the runtime performance of software within the context of an integrated system. Performance testing occurs throughout all steps in the testing process. It measures the scalability, responsiveness, and reliability of the software.

Performance testing is often coupled with stress testing, and it may require both hardware and software instrumentation.

Regression testing

Regression testing ensures that no new bugs are added to the software if we add new functionality or update the existing codebase. It also ensures that any prior changes are error-free.

Alpha testing

Alpha testing is conducted in-house by the software company. It involves the tester using the software as the end-user might, testing whether all the functionalities work as intended.

Beta testing

Beta testing is the live application of software in an environment that the developer cannot control. These tests are conducted by the end-users of the software, during the final stage of software testing.

The customer records all problems they encountered during beta testing, and then they report these to the developer at a regular interval.

In response to any problems reported during the beta tests, the software developer modifies the product and then prepares to release it.