Software testing types

Software testing types

TEST TYPES

A test type is a group of test activities aimed at testing specific characteristics of a software system, or a part of a system, based on specific test objectives.

Functional software testing

Functional testing of a system involves tests that evaluate functions that the system should perform. Functional requirements may be described in work products such as business requirements specifications, epics, user stories, use cases, or functional specifications, or they may be undocumented. The functions are “what” the system should do. Tests should perform at all test levels.

Black Box Testing

Black Box Testing

Black-box testing is usually based on specification documentation, such as a system requirement specification or user stories. Since the specification documentation should describe system behaviour, particularly in functionality, deriving tests from the requirements is often part of testing the system’s behaviour.

Interoperability Testing

Interoperability Testing

Interoperability testing verifies the exchange of information between two or more systems or components.

Non-functional software testing

Non-functional testing of a system evaluates characteristics of systems and software such as usability, performance efficiency, or security. Non-functional testing is the testing of “how well” the system behaves.

Performance Testing

Performance Testing

Performance testing is an umbrella term including any kind of testing focused on the performance (responsiveness) of the system or component under different volumes of load.

Load Testing

Load Testing

Load testing focuses on the ability of a system to handle increasing levels of anticipated realistic loads resulting from transaction requests generated by controlled numbers of concurrent users or processes.

Stress Testing

Stress Testing

Stress testing focuses on the ability of a system or component to handle peak loads that are at or beyond the limits of its anticipated or specified workloads. Stress testing is also used to evaluate a system’s ability to handle reduced availability of accessible computing capacity, available bandwidth, and memory.

Scalability Testing

Scalability Testing

Scalability testing focuses on the ability of a system to meet future efficiency requirements which may be beyond those currently required. The objective of these tests is to determine the system’s ability to grow (e.g., with more users, larger amounts of data stored) without violating the currently specified performance requirements or failing.

Usability Testing

Usability Testing

It is important to understand why users might have difficulty using the system or do not have a positive user experience (UX). Usability testing evaluates the ease by which users can use or learn to use the system to reach a specified goal in a specific context.

Reliability Testing

Reliability Testing

An objective of reliability testing is to monitor a statistical measure of software maturity over time and compare this to the desired reliability goal.

Compatibility Testing

Compatibility Testing

Co-existence – the degree to which a test item can function satisfactorily alongside other independent products in a shared environment.

Portability Testing

Portability Testing

Security testing assesses a system’s vulnerability to threats by attempting to compromise the system’s security policy.

White-box testing

White-box testing derives tests based on the system’s internal structure or implementation. Internal structure may include code, architecture, workflows, and data flows within the system.

Change-related testing

When changes are made to a system, either to correct a defect or because of new or changing functionality, should be done testing to confirm that the changes have fixed the defect or implemented the functionality correctly and have not caused any unforeseen adverse consequences.

Confirmation Testing

Confirmation Testing

After a defect is fixed, may test the software with all test cases that failed due to the defect, which should be re-executed on the new software version.

Regression Testing

Regression Testing

It is possible that a change made in one part of the code, whether a fix or another type of change, may accidentally affect the behavior of other parts of the code, whether within the same component, in other components of the same system or even in other systems.

Maintenance Testing

Maintenance Testing

When are made any changes as part of maintenance, should perform maintenance testing to evaluate the success with which the changes were made and check for possible side-effects (e.g., regressions) in parts of the system that remain unchanged.

Experience-based testing

When applying experience-based test techniques, the test cases are derived from the tester’s skill and intuition and their experience with similar applications and technologies. These techniques can help identify tests that were not easily identified by other more systematic techniques.

Error Guessing

Error Guessing

Error guessing is a technique used to anticipate the occurrence of errors, defects, and failures, based on the tester’s knowledge.

Exploratory Testing

Exploratory Testing

In exploratory testing, informal (not pre-defined) tests are designed, executed, logged, and evaluated dynamically during test execution. The test results are used to learn more about the component or system and to create tests for the areas that may need more testing.

Checklist-based Testing

Checklist-based Testing

In checklist-based testing, testers design, implement and execute tests to cover test conditions found in a checklist. As part of the analysis, testers create a new checklist or expand an existing checklist. Such checklists can be built based on experience, knowledge about what is important for the user.

Cookies

This site uses cookies. Find out more.