Software Testing Levels

Software testing has various levels. However, on broader scale software testing can be categorized into (1) Functionaltesting and (2) Non-functional testing. These topics will be discussed in detail.

Overview of Software Testing Levels

Here we will understand various levels of testing, namely:

  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing


Overview of Software Testing Levels

Unit Testing

The smallest independent and testable part of the source code is referred to as a unit. It is the first step in software testing environment and is generally conducted by the developers or their team mates. This form of testing is rarely performed by software testers. In order to perform integration testing it is important to first complete the unit testing for all the units. In order to perform unit testing it is important to have well defined unit test plan and unit test cases.

There are several benefits of unit testing. First of all, you get the confidence for going ahead with the integration testing only when you are sure that all units are working correctly. When you start unit testing in parallel to development it may look like a slow process as many defects are uncovered during this stage and several changes are made to the code. However, with time the code is refined and number of defects begins to reduce. So, the foundation of the software is strong and in the later stages the software development is carried out at a much faster pace thereby saving a lot of time.


Unit Testing

If unit testing is carried out properly then it would also result in a lot of cost saving as the cost of fixing a defect in the final stages of software development are much higher than fixing them in the initial stages.

Unit testing is carried on the smallest testable component of the project so the number of test cases and test data are less, and it is not always possible to check all the scenarios for functional and information flow of software application. So, there are many test cases that can be tested only after the unit has been merged with other units to form a bigger component.

Integration Testing

Once the unit testing phase is over, it is time to move on to integration testing. During integration testing the tester checks how one or more units interact with each other and produce output for various scenarios. This form of testing is carried out a software testing engineer.

In this form of testing a lot of defects related to functional, requirement and performance levels are uncovered. Unit testing confirms that various units are able to perform as per the requirement individually but integration testing confirms whether these independent units are able to perform as per expectations when integrated together. Integration testing can be broadly classified into:

  1. Big bang
  2. Top down and
  3. Bottom up approach
As the name suggests, big bang form of testing all the modules are combined to form a complete system and then tested for bugs.


Integration Testing

Top down is systematic approach where the top level modules are first tested and then one by one the sub modules are added and tested. The Bottom up approach is just the opposite of top down. In this case the lower most modules are tested first and step by step the higher level modules are added and tested. Generally the bottom up approach is followed first in software testing followed by top-down testing.


Top down and Bottom up Integration Testing

In Top down approach integration testing stubs can be used as handles in case of modules or sub programs that are not available or not ready. These are dummy modules used at low levels. In similar way in case of bottom up approach is a main program is not available then calling program referred to as driver can be used as a replacement to complete testing process.

System Testing

Once the integration testing phase gets successfully completed it is time to move on to system testing where the system as a whole with all components well integrated is ready for further testing. This is where the software is not only tested for performance but also for adherence to quality standards. As the system is tested as a whole to see if it is in compliance with the functional and technical specifications and the quality standards defined by the organization, it is important that this form of testing is carried out by a highly skilled testing team. For this form of testing it is very important to create a scenario similar to the real time scenario where the system will be deployed.


System Testing

System testing is purely black box testing. The system is checked as per the requirement specifications. The testing is carried out from the user’s point of view. This type of testing is carried out to check the behavior of the application, software design and expectation of the end user. System testing validates and verifies both Application architecture and business requirements of the client.

Acceptance Testing

Once the system has been thoroughly tested via unit, integration and system testing it is time for the quality assurance team to come and have a look at the system and test it for quality with the help of predefined test scenarios and test cases. The software is tested for accuracy. The acceptance testing looks at the system from various angles: right from cosmetic looks to internal functioning. This form of test is very crucial because there are legal as well as contractual requirements associated with the software for it to be accepted by the client. Acceptance testing can be of following types:

  1. User Acceptance testing: This form of testing is carried out by the actual user before the software is accepted. It can be performed at the user’s site or in the software organization where the software was developed.
  2. Operation Acceptance testing: this form of testing is done to ensure that all the processes and procedures are in place so that the system can be used easily and also be maintained easily.
  3. Contract and regulation acceptance testing: is carried out to ensure that the software is in line with all the necessary government, legal and safety standards.
  4. Alpha testing: is carried to ensure that the product is of good quality and also to prepare the system for beta testing. This form of testing is performed towards the end of software development where the system can be tested as a whole. This can be a long process as the testers are looking into quality as well as engineering aspects of the developed software. This form of testing is carried out by test engineers and other team members and the product is tested from the point of view of a customer.
  5. Beta testing: Once the alpha testing is over, beta testing follows in order to improve the quality of the product and see that the product is as per the requirement of the customer. This form of testing is done a couple of days or weeks before the launch of the product. Beta testing can take a few days but may not take as much time as alpha testing as chances of defect detection are pretty low during this time. It is carried in the real world scenario with the people who are actually going to use the product.


Acceptance Testing



Your Software Testing Training
Table of Contents