04. Test Types - idavidov13/ISTQB-Foundation GitHub Wiki

Test type

A group of test activities based on specific test objectives aimed at specific characteristics of a component or system.

Functional testing

Functional testing - Testing conducted to evaluate the compliance of a component or system with functional requirements. ("What the system does?")

  • Functional testing considers the specified behavior and is often also referred to as black-box testing (specification-based testing). This is not entirely true, since black-box testing also includes non-functional testing.

  • Functional tests are based on functions, described in documents or understood by the testers, and may be performed at all test levels.

  • Testing of functionality could be done from different perspectives, the two main ones being requirements-based or business-process-based.

  • When we have traceability between our tests and functional requirements, we can identify which requirements we have not yet covered, that is, have not yet tested (coverage gaps).

Non-functional testing

Non-functional testing - Testing conducted to evaluate the compliance of a component or system with non-functional requirements. ("How well/fast the system does it?")

  • Non-functional testing, as functional testing, is performed at all test levels.

  • Non-functional testing includes, but is not limited to, performance testing, load test­ing, stress testing, usability testing, maintainability testing, reliability testing, port­ability testing and security testing.

White-box testing

White-box testing (clear-box testing, code-based testing, glass-box testing, logic­coverage testing, logic­driven testing, structural testing, structure-based testing) - Testing based on an analysis of the internal structure-based of the component or system.

  • White-box testing is most often used as a way of measuring the thoroughness of testing through the coverage of a set of structural elements or coverage items. It can occur at any test level, although it is true to say that it tends to be mostly applied at component testing and component integration testing, and generally is less likely at higher test levels, except for business process testing.

Change-related testing

Confirmation testing (re-testing) - Dynamic testing conducted after fixing defects with the objective to confirm that failures caused by those defects do not occur anymore.

Regression testing - Testing of a previously tested component or system following modification to ensure that defects have not been introduced or have been uncovered in unchanged areas of the software as a result of the changes made.

MAINTENANCE TESTING

Maintenance testing - Testing the changes to an operational system or the impact of a changed environment to an operational system. (Testing that is executed during this life cycle phase is called maintenance testing.)

The scope of maintenance testing depends on several factors, which influence the test types and test levels. The factors are:

• Degree of risk of the change, for example a self-contained change is a lower risk than a change to a part of the system that communicates with other systems.

• The size of the existing system, for example a small system would need less regression testing than a larger system.

• The size of the change, which affects the amount of testing of the changes that would be needed. The amount of regression testing is more related to the size of the system than the size of the change.

Triggers for maintenance:

• modifications

• migration

• retirement.

Impact analysis and regression testing - The identification of all work products affected by a change, including an estimate of the resources needed to accomplish the change.

• testing the changes

• regression tests to show that the rest of the system has not been affected by the maintenance work.