Levels of Testing

Introduction:

Testing levels means testing a software application on different levels when it goes through the development process. As the use of software increasing rapidly in every field and to provide a good quality of software, continuously testing at different levels is necessary. The main purpose of testing at different levels is to make software testing systematic and easily identify all possible test cases at a particular level. Fixing the bugs in the early stages of software development saves lots of time and money. Once the software architecture becomes complex then it is not easy to change in that project to fix the bugs. So to overcome these issues testing at different levels is essential. Early and frequent testing produces quality software.

There are four levels of testing:

1. Unit/Component Testing

2. Integration Testing

3. System Testing

4. Acceptance Testing

Unit/Component Testing:

This is the first level of testing in which an individual unit or component of the system is tested independently. This testing is performed in the early stages of software development to find out the defects in the early stages. In most of the cases this type of testing done by the developers before handing software to the testing team for Smoke Testing. The purpose of unit testing is to verify each part of the software is working correctly in terms of fulfilling requirements and the desired functionality. It is also known as Module Testing or Component Testing.

This testing finds the bugs in the programmer’s implementation and flaws or missing parts of the specification for the unit. Unit testing allows the programmer to upgrade system libraries at a later time and make sure the modules still work correctly. By testing the parts of a programme first makes the integration testing easier. But this testing is unable to catch all the bugs of software because it cannot execute all the scenarios. 

Integration Testing:

It is a level of testing in which individual modules are combines first and then test the functionality of the combined unit. The main function of this testing is to test the interfaces between the modules. In other words, we can say that integration testing is a type of testing in which the data transfer between the modules is tested. It focuses on checking Data Communication between the modules. It is also known as String Testing.

Generally, we follow three approaches for Integration Testing:

1. Big Bang approach

2. Top-down approach

3. Bottom-Up approach

Big Bang Approach:

In this approach, all the modules or components are integrated together at once and then tested as a unit. If all the components are not developed then it is not possible to done integration testing using the Big Bang approach.

Top-down Approach:

In this approach, testing takes place from top to down which means top-level modules are tested first and then below levels modules are tested. If a module is not developed then Stubs are used as a temporary module.

E.g. If an application has two modules, Module A and Module B.

Module A has developed and we have to test Module A but as yet Module B has not developed. So to test Module A we will use a Stub.

Stubs are the temporary modules to simulate the behaviour of modules which are not developed as yet.

Bottom-Up Approach:

In this approach, testing takes place from bottom to top which means low levels modules are tested first and then top-level modules are tested. If a module is not developed then Drivers are used as a temporary module.

E.g. If an application has two modules, Module A and Module B.

Module B has developed and we have to test Module B but as yet Module A has not developed. So to test Module B we will use a Driver.

Drivers are the temporary modules to simulate the behaviour of modules which are not developed as yet.

System Testing:

Testing the fully integrated application to evaluate the system’s compliance with its specified requirements is called System Testing. Verifying the completed system to ensure that the application works as intended or not. System Testing is performed by a team that is independent of the development team in order to measure the quality of the system unbiased. It includes both functional and Non-Functional testing. It is also known as End to End testing.

System testing is performed on the entire system to verify that the system meets its specific requirements or not. Each and every functionality of the system is tested by providing the inputs to get the desired result. This testing plays an important role in delivering a quality product. System testing is done after Integration Testing.

Acceptance Testing:

It is the last phase of the testing process. Generally, this type of testing is performed by the end user’s to verify that the system performs the required task or not. If the software product passes this stage, it means that the end-user has accepted it and it is ready to go live.

Various types of User Acceptance testing are the following:

1. Alpha and Beta Testing

2. Contract Acceptance Testing

3. Regulation Acceptance Testing

4. Operational Acceptance Testing

Leave a Reply