You are on page 1of 9

ABSTRACT

In this section, we are going to understand the various levels of software


testing.

As we learned in the earlier section of the software testing tutorial that testing
any application or software, the test engineer needs to follow multiple testing
techniques.

In order to detect an error, we will implement software testing; therefore, all


the errors can be removed to find a product with more excellent quality.

1|Page
INTRODUCTION

Testing levels are the procedure for finding the missing areas and avoiding
overlapping and repetition between the development life cycle stages. We
have already seen the various phases such as Requirement collection,
designing, coding testing, deployment, and maintenance of SDLC (Software
Development Life Cycle)

In order to test any application, we need to go through all the above phases of
SDLC. Like SDLC, we have multiple levels of testing, which help us maintain the
quality of the software.

2|Page
Different Levels of Testing

The levels of software testing involve the different methodologies, which can
be used while we are performing the software testing.

In software testing

, we have four different levels of testing, which are as discussed below:

1. Unit Testing

2. Integration Testing

3. System Testing

4. Acceptance Testing

As we can see in the above image that all of these testing levels have a specific
objective which specifies the value to the software development lifecycle.

3|Page
Unit Testing

This type of testing is performed by developers before the setup is handed


over to the testing team to formally execute the test cases. Unit testing is
performed by the respective developers on the individual units of source code
assigned areas. The developers use test data that is different from the test
data of the quality assurance team.

The goal of unit testing is to isolate each part of the program and show that
individual parts are correct in terms of requirements and functionality.

Limitations of Unit Testing

Testing cannot catch each and every bug in an application. It is impossible to


evaluate every execution path in every software application. The same is the
case with unit testing.

There is a limit to the number of scenarios and test data that a developer can
use to verify a source code. After having exhausted all the options, there is no
choice but to stop unit testing and merge the code segment with other units.

4|Page
Integration Testing

Integration Testing is defined as a type of testing where software modules are


integrated logically and tested as a group. A typical software project consists of
multiple software modules, coded by different programmers. The purpose of
this level of testing is to expose defects in the interaction between these
software modules when they are integrated

Integration Testing focuses on checking data communication amongst these


modules. Hence it is also termed as ‘I & T’ (Integration and Testing), ‘String
Testing’ and sometimes ‘Thread Testing’.

Bottom-up Integration Testing

Bottom-up Integration Testing is a strategy in which the lower level modules


are tested first. These tested modules are then further used to facilitate the
testing of higher level modules. The process continues until all modules at top
level are tested. Once the lower level modules are tested and integrated, then
the next level of modules are formed.

Top-down Integration Testing

Top Down Integration Testing is a method in which integration testing takes


place from top to bottom following the control flow of software system. The
higher level modules are tested first and then lower level modules are tested
and integrated in order to check the software functionality. Stubs are used for
testing if some modules are not ready.

Sandwich Testing

Sandwich Testing is a strategy in which top level modules are tested with lower
level modules at the same time lower modules are integrated with top
modules and tested as a system. It is a combination of Top-down and Bottom-
up approaches therefore it is called Hybrid Integration Testing. It makes use of
both stubs as well as drivers.

5|Page
S.No. TOP DOWN INTEGRATION BOTTOM UP INTEGRATION
TESTING TESTING
01. Top Down Integration testing is one of Bottom Up Integration testing
the approach of Integration testing in is one of the approach of
which integration testing takes place Integration testing in which
from top to bottom means system integration testing takes place
integration begins with top level from bottom to top means
modules. system integration begins with
lowest level modules.
02. In this testing the higher level modules In this testing the lower level
are tested first then the lower level modules are tested first then
modules are tested and then the the higher level modules are
modules are integrated accordingly. tested and then the modules
are integrated accordingly.
03. In this testing stubs are used for In this testing drivers are used
simulate the submodule if the invoked for simulate the main module
submodule is not developed means if the main module is not
Stub works as a momentary developed means Driver
replacement. works as a momentary
replacement.
04. Top Down Integration testing Bottom Up Integration testing
approach is beneficial if the significant approach is beneficial if the
defect occurs toward the top of the crucial flaws encounters
program. towards the bottom of the
program.
05. In Top Down Integration testing In Bottom Up Integration
approach the main module is testing approach different
designed at first then the modules are created first then
submodules/subroutines are called these modules are integrated
from it. with the main function.
06. It is implemented on It is implemented on Object-
Structure/procedure-oriented oriented programming
programming languages. languages

6|Page
SYSTEM TESTING

The third level of software testing is system testing, which is used to test the
software's functional and non-functional requirements.

It is end-to-end testing where the testing environment is parallel to the


production environment. In the third level of software testing, we will test the
application as a whole system.

To check the end-to-end flow of an application or the software as a user is


known as System testing.

In system testing, we will go through all the necessary modules of an


application and test if the end features or the end business works fine, and test
the product as a complete system.

In simple words, we can say that System testing is a sequence of different


types of tests to implement and examine the entire working of an integrated
software computer system against requirements.

7|Page
Acceptance Testing

An acceptance test is a formal description of the behavior of a software


product, generally expressed as an example or a usage scenario. A number of
different notations and approaches have been proposed for such examples or
scenarios. In many cases the aim is that it should be possible to automate the
execution of such tests by a software tool, either ad-hoc to the development
team or off the shelf.

Similar to a unit test, an acceptance test generally has a binary result, pass or
fail. A failure suggests, though does not prove, the presence of a defect in the
product.

Teams mature in their practice of agile use acceptance tests as the main form
of functional specification and the only formal expression of business
requirements. Other teams use acceptance tests as a complement to
specification documents containing uses cases or more narrative text.

8|Page
Conclusion

• A level of software testing is a process where every unit or component of


a software/system is tested.

• The primary goal of system testing is to evaluate the system’s


compliance with the specified needs.

• In Software Engineering, four main levels of testing are Unit Testing,


Integration Testing, System Testing and Acceptance Testing.

9|Page

You might also like