Most of the Software applications which are developed are usually broken into many modules and given to different teams. These modules are then usually developed individually and later on integrated to form the complete software application. When two or more modules are combined and tested, it is called integration testing. After all the modules are combined and the complete system is made, testing of the whole system is known as System Testing.
Before going into the differences let us first understand each type of testing in brief :
What is System Testing?
System Testing is testing of the software application as a whole to check if the system is complaint with the user requirements. It is an end to end user perspective testing intended to find defects in the software system.
System Testing is a type of black box testing technique thus the knowledge of internal code in not required. It is a high level testing always performed after integration testing. Regression and Re Testing is performed many times in system testing. The user can perform different type of tests under System Testing .It would depend on the user or the organisation to choose which type of system testing should be performed on the application. System testing can be broadly classified in two types:
- Functional Testing
- Non Functional Testing
Objective of System Testing:
System testing is performed to check the following points:
- To check whether the software system is made according to the customer needs written in Software Requirements Specifications, it meets both functional and non-functional design requirements of the system.
- When all the modules are combined as a whole, many errors and facts may arise which may not give the expected results? So system testing is performed to find the defects or bugs in all the interfaces as well the whole system.
- To execute the real –life scenarios on the software. It is done on the staging server which is very much similar to the production server where the software would actually be deployed. The system test cases are made according to the end- to – end use perspective.
What is Integration Testing?
Integration testing tests the interface between modules of the software application. The different modules are first testing individually and then combined to make a system. Testing the interface between the small units or modules is integration testing. It is usually conducted by software integration tester and in continuation to the development. There are different techniques available for integration testing:
- Big Bang Integration Testing: In type of integration testing all the modules are combined first and then tested together.
- Top Bottom Integration Testing: This type of testing take place from top to bottom uses Stubs which are substitutes of components. The top module is tested first.
- Bottom to Top Integration Testing: This type of testing take from bottom to top and uses Drivers which are substitutes of components. The bottom module is tested first.
Objective of Integration Testing:
Integration testing is performed to check the following points:
- To check whether the modules developed by individual developers when combined are according to standards and gives the expected results.
- When modules are combined, sometimes the data travelling between modules has many errors which may not give the expected results. So integration testing is performed to find the defects or bugs in all the interfaces.
- To check the integration between any third party tools used
Difference between System Testing and Integration Testing:
System Testing | Integration Testing |
1. Testing the completed product to check if it meets the specification requirements. | 1. Testing the collection and interface modules to check whether they give the expected result |
2. Both functional and non-functional testing are covered like sanity, usability, performance, stress an load . | 2.Only Functional testing is performed to check whether the two modules when combined give correct outcome. |
3. It is a high level testing performed after integration testing | 3. It is a low level testing performed after unit testing |
4. It is a black box testing technique so no knowledge of internal structure or code is required | 4. It is both black box and white box testing approach so it requires the knowledge of the two modules and the interface |
5. It is performed by test engineers only | 5. Integration testing is performed by developers as well test engineers |
6. Here the testing is performed on the system as a whole including all the external interfaces, so any defect found in it is regarded as defect of whole system | 6. Here the testing is performed on interface between individual module thus any defect found is only for individual modules and not the entire system |
7. In System Testing the test cases are developed to simulate real life scenarios | 7. Here the test cases are developed to simulate the interaction between the two module |
8. The System testing covers many different testing types like sanity, usability, maintenance, regression, retesting and performance | 8. Integration testing techniques includes big bang approach, top bottom , bottom to top and sandwich approach. |