STLH:

"THE BEST WAY TO MAKE YOUR DREAMS COME TRUE IS TO WAKE UP..."

Search This Blog

Software Testing Levels



Levels of Testing


To get a quality software product, developers and testers need to test the software at different levels during the coding/testing phase. 

During the design stage the software product is divided into components or units and each components/unit is developed. Similarly, while testing it is not good if we combine all the units into modules and all the modules into the system in single shot and then start testing the entire system. A practical approach is to divide the testing process into different levels. Each components/unit has to be tested separately, the modules have to be built from the units, which are then tested. The modules are then combined together and the system is built and tested. Following are the different testing levels: 

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

As shown in below figure, each level of testing is for testing a specific entity. Unit testing is done to test the source code. Integration testing is done to test the design. System testing is done to test the system against SRS and finally Acceptance testing is done to test the software against client/user requirements. To check whether the software meets the operational/business needs of the client, the software product is installed in the actual working environment and tested.


Figure: Levels of testing

Unit Testing/Component Testing

Unit/component is the smallest entity in the software product. Every unit has to be tested separately to check whether it is as per the specifications. It is a software design and development method, where the programmer gains confidence that individual unit of source code are fit for use. Unit/Component testing is conducted by developers to verify the software at unit level. Unit tests typically exercises particular modules of software code. Developers utilise debuggers or self-developed tools to verify functionalityUnit/component testing occur before the software reaches to software testers.

Testing of a collection of units/components that have a logical relationship is called string testing. Suppose you have developed the code for a few data structures (a stack, a queue, and a tree), you may like to test all these units one after the other - this is string testing.

It may not be possible to test a unit/component in isolation. Developers may need to write additional code (stubs, drivers, simulators) to do the testing.


Module Testing

A module is an independent entity in software product. The tested units are integrated into a module and each module is tested separately for the specification.

Module testing is largely a white box oriented. The objective of doing Module, testing is not to demonstrate proper functioning of the module but to demonstrate the presence of an error in the module.

Module level testing allows to implement parallelism into the testing process by giving the opportunity to test multiple modules simultaneously. Testing multiple module/sub-systems in parallel is also known as parallel testing. 


Integration Testing

After the modules are tested, the modules can be integrated together. During integration testing a very systematic approach has to be followed. Without following any systematic approach if you integrate all the modules together in one shot and then start testing then it is called big bang testing. 
 
Foremost the first thing is to identify which modules can be integrated first. The interfaces between the modules should be well defined to achieve this. 

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'.


System Testing

Once all the modules are integrated the system is ready for a full-fledged testing. It allows checking system's compliance as per the requirements. It tests the overall interaction of components. It involves load, performance, reliability and security testing.

System testing most often the final test to verify that the system meets the specification. It evaluates both functional and non-functional requirements for the testing. The application is tested in an environment that is very close to the production environment where the application will be deployed. This type of testing is performed by a specialized testing team.


Acceptance Testing

After the system testing is completed in your premises the software has to be approved by the client. The customer will carry out a rigorous testing called Acceptance testing. It is conducted to find if the requirements of the specification or contract are met as per its delivery. Basically done by the user or customer and other stockholders can be involved in this process.

Some Other Types of Testings

  • Regression Testing
  • Buddy Testing
  • Alpha Testing
  • Beta Testing


No comments:

Post a Comment