QA–QC Arena – Software Testing Home for beginners and experts

Test Types

Test Type
Functional Testing (Testing of function)
Target of Functional Testing is the testing of specified behavior (in a requirements specification or in a functional specification or in use cases).

Functional testing is often referred to as Black-Box testing.

Functional Testing is performed at all test levels.

Functional Testing includes Suitability, Interoperability, Security, Accuracy and Compliance.

Functional Testing can be done from two perspectives –
Requirements–based & Business–process–based.
  • Requirements–based testing uses a specification of the functional requirements for the system as the basis for designing tests.
  • Business–process–based testing uses knowledge of the business processes which describe the scenarios involved in the day-to-day business use of the system.
Specification–based & Experienced–based techniques can be used for functional testing.
Non–functional Testing (Testing of software product characteristics)
Target of Non–functional Testing is the testing of quality characteristics or non-functional attributes of the system or component or integration group.

It is the testing of 'how well' the system works.

Non–functional Testing is performed at all test levels.

Non-functional testing includes performance testing, load testing, stress testing, usability testing, maintainability testing, reliability testing and portability testing.
Structural Testing (Testing of Software Structure/Architecture)
Target of Structural Testing is the testing of system or component architecture.

Structural Testing is often referred to as White-Box or Glass-Box testing.

Structural Testing is performed mostly at Component and Integration test levels.

The techniques used for structural testing are Structure–based techniques, also referred to as White–Box techniques.

Control flow models are often used to support structural testing.
Confirmation and Regression testing (Testing related to changes)
Target of Confirmation and Regression Testing is the testing of changes.

Confirmation Testing (Re–Testing) –
Executing the same test again (using the same inputs, data and environment) with a new version of the software (that has had the defect fixed) to confirm that the defect has indeed been fixed.

Regression Testing
The purpose of regression testing is to verify that modifications in the software or the environment have not caused unintended adverse side effects and that the system still meets its requirements.

It is appropriate to have a regression test suite at every level of testing (Component Testing, Integration Testing, System Testing, etc.)

Regression tests are executed whenever the software changes, either as a result of fixes or new or changed functionality.

It is also a good idea to execute them when some aspect of the environment changes (when a new version of a database management system is introduced or a new version of a source code compiler is used).