Software Test Types

Test type in software testing

test types

There are four software test types:

1. Functional testing
2. Non-functional testing
3. Structural testing
4. Change related testing

1. Functional testing or Testing of function

  • Functional testing is based on the specified behavior of the software and it is referred to as black box testing.
  • This testing focuses on suitability, interoperability, security, accuracy and compliance.
  • The techniques used for functional testing are frequently specification based.
Following are the two aspects of testing functionality:

i) Requirement-based testing
ii) Business-process-based testing

i) Requirement-based testing

  • In requirement based testing, the requirements are prioritized depending on the risk criteria.
  • It ensures that important and critical tests are included in the testing efforts.

ii) Business-process-based testing

  • In this testing, knowledge of the business processes is used.
  • It describes the framework involved in everyday use of the system.

2. Non-functional testing or Testing of software product characteristic

  • In this testing, the quality of the component or system is tested.
  • It refers to the feature of the software which may not be related to a specific function or user action i.e scalability or security.
Non-functional testing consists of:

i) Reliability testing
ii) Usability testing
iii) Efficiency testing
iv) Maintainability testing
v) Portability testing

i) Reliability testing

  • Reliability testing uses an application to prevent failures, find and remove them before the system is deployed.
  • The main aim of reliability testing is to check the product reliability and also ensure that the software meets the customer's  requirements.

ii) Usability testing

In usability testing, the created application or the product tested for its user friendliness.

Usability testing measures are

i) Learnability
ii) Efficiency
ii) Memorability
iv) Errors
v) Satisfaction

iii) Efficiency testing

  • Efficiency testing tests the quality of code and testing resources needed by a program to perform a specific function.
  • Software test efficiency is number of test cases executed divided by per hour time.

iv) Maintainability testing

This testing checks how easy it is to evaluate, change and test the application or product.

v) Portability testing

  • It is a process of testing in which a computer software component or application is moved from one environment to another.
    For example, move any application from one operating system to another. For e.g. From Windows XP to Windows 2000.
  • It is generally measured in terms of the maximum amount of effort required.
  • The results are measured in terms of time needed to move the software and complete the documentation updates.

3. Structural testing

  • Structural testing tests the structure of the component or system.
  • Structural testing is frequently called as 'white box' or 'glass box' or 'clear-box testing' because this testing is interested to find what is happening inside the box.
  • In this type of testing, testers are needed to have the knowledge of the internal implementation of the code. Testers need the knowledge of software like how it is implemented and works.
  • This testing is used at all levels of testing. In component testing and component integration testing developers use structural testing.

4. Change related testing

  • The changes in testing is the last target of testing.
  • This category is different from the above categories because if we make any changes in the software then we can identify the changes in its functions and structure.
Following are the types of test related to changes:

i) Confirmation testing or re-testing
ii) Regression testing

i) Confirmation Testing or Re-Testing - If a test is failed and defect is detected and fixed, it is necessary to retest so as to verify that the original defect is successfully removed. This is called as Confirmation testing or Re-Tesing.

ii) Regression testing - The aim of regression testing is to check the changes in the software as per the requirement which do not affect the existing features.

Difference between Regression Testing and Retesting


Regression TestingRetesting
Regression testing verifies that a recent change in program code has not affected the existing feature.Retesting verifies the failed test cases in the final execution especially when the defects are fixed.
Verification of defect is not a part of Regression testing.Verification of defect is a part of the Retesting.
This testing is performed for passed test cases.This testing is performed for failed test cases.
This testing is only completed when any change becomes compulsory.Retesting executes faults with same data and environment with various inputs.