10 Difference Between System Testing And System Integration Testing

What Is Integration Testing?

Integration testing sometimes referred to as integration and testing (I&T) is a level of software testing whereby individual software modules are combined logically and tested as a group. The fundamental purpose of this type of testing is detecting faults in the interaction between integrated units. Usually test drivers and test stubs are used to assist in integration testing.

How Is Integration Testing Done?

Irrespective of the software to be tested, here is a procedure of software testing using integration testing method:

  1. Prepare the integration Tests Plan.
  2. Design the Test Scenarios, Cases and Script.
  3. Executing the test cases followed by reporting the defects.
  4. Tracking and re-testing the defects.
  5. Repeat steps 3 and 4 until the integration process is successfully complete.

Approaches To Integration Testing

There are commonly 4 approaches to integration testing which includes:

  1. Big Bang: In this approach of integration Testing, almost all units are integrated (combined) together and tested at once. This approach is most often considered when the software testing team receives the entire software in a bundle.
  2. Top Down: In this approach, the top level units are tested first and lower level units are tested step by step afterwards. Usually, Test Stubs are required in this approach to stimulate the lower level units which might be absent during the initial phases.
  3. Bottom Up: In this approach, the bottom (low) level units are tested first and upper-level units are tested step by step afterwards. Usually, Test Drivers are required to stimulate higher level units which may not be available during the initial phases.
  4. Sandwich/Hybrid:  This approach to integration testing entails combination of Top down and Bottom Up approaches.

 What Are Some of The Advantages of Integration Testing?

  • It is easy to integrated different modules.
  • It can be started once the modules to be tested are available. The process does not need to wait until all the modules of a system are coded and unit tested.
  • It easily detects errors such as broken database and integration mistakes related to the interface.
  • During the top down approach of integration testing, critical modules are tested on priority and therefore major design flaws could be found and fixed easily.
  • Code coverage is high and easy to track.
  • Through integration testing it is easy to verify whether the software modules work in unit.
  • Integration testing entails a number of approaches like top down, bottom up, sandwich and big band.

What Are Some of The Disadvantages of Integration Testing?

  1. Sometimes integration testing involves a sheer number of interfaces that need to be tested and therefore some interface links may be left out.
  2. Integration approaches such as Bottom Up may result in huge errors and defects because critical modules which control the flow of applications are tested last and may be prone to defects.
  3. Integration approach such as Top down integration requires many Stubs.

What Is System Testing?

System Testing is a phase of software testing where a complete and fully integrated software product is tested on the basis of pre-decided specification and functional requirements. System Testing involves testing the software code for the following:

  • Testing of the user’s experience with the application.
  • Verify thorough testing of every input in the application to check for desired outputs.
  • End user-testing-scenario which entails testing the fully completed application in order to check how components interact with one another and with the system as a whole.

How Is System Testing Done?

The process of system may vary from project to project, however below are usually the 6 crucial steps that will have to be observed:

  1. Create a test plan
  2. Test case creation
  3. Select
  4. Test case execution
  5. Bug reporting and fixation
  6. Repeat the test cycle

Different Types of System Testing

Here are some of the different types of system testing that are normally employed by large software development companies:

  1. Load Testing: This kind of system testing is done in order to understand how the software will work under real-life loads.
  2. Usability Test:  The test entails understanding the user’s ease in using the application, control flexibility and system being able to meet its intended use. For example the system should be easy to use, learn and operate.
  3. Recovery Testing: This is done to ensure that the software is reliable and can recoup in cases of crashes.
  4. Migration Testing:  This is done to ensure that the software solution can be moved from old infrastructure systems to new infrastructure systems without hiccups.
  5. Regression Testing: This is done to ensure that no old bugs appear from the addition of new software solution modules over times.
  6. Functional Testing:  involve use of testers to detect the missing functionalities that can improve the software function.
  7. Hardware Testing: This entails testing the interaction between hardware and software during system testing.
  8. Security Testing: This is done to ensure that the system does not allow unauthorized access to data resources.

What Are Some of The Advantages of System Testing?

  • It ensures that the product meets the quality standards.
  • Helps in delivery of end a quality product to end users.
  • In system testing, application architecture and business requirements are tested.
  • System testing entails end to end testing which helps to prevent system failure, crushes and other errors.
  • Testing is systematic and done in a proper manner.

The Difference Between Integration Testing & System Testing In Tabular Form

BASIS OF COMPARISON INTERGRATION TESTING SYSTEM TESTING  
Description Integration testing sometimes referred to as integration and testing (I&T) is a level of software testing whereby individual software modules are combined logically and tested as a group. System Testing is a phase of software testing where a complete and fully integrated software product is tested on the basis of pre-decided specification and functional requirements.
Knowledge of Codes / Internal Structures It is both black box and white box testing approach so it requires the knowledge of two modules and the interface. It usually a black box technique and therefore no knowledge of internal structures or code is required.
Purpose It is done on interface modules to check whether they give the required results. It is done on completed product to check whether they meet the specification requirements.
Scope In the process of testing only functional testing is done to assess whether the two modules when combined give the desired outcome.       In the process of testing both functional and non-functional testing are tested like usability, security, performance, stress on load and hardware.  
Kind of Testing It is a low level testing undertaken after unit testing.  It is a high level testing undertaken after integration testing.
   
Coverage Integration testing process entails big bang approach, Bottom up, Top down and Sandwich approach. System testing covers many different types like usability, performance, maintenance, regression, scalability, reliability, installation testing and retesting.
Techniques of Testing Given that the interfacing logic is required to perform integration testing, it requires white/grey box testing techniques along with black-box techniques. Given that system testing is limited to the evaluation of functional requirements, it includes black-box testing techniques only.
Test Cases In integration testing, test cases are designed to simulate the interaction between the two modules. In system testing, the test cases are developed to simulate real life scenarios.
Performed By Integration testing is performed by developers as well as software engineers.  System testing is performed by test engineers only.
Code Errors and Defects Integration testing is performed on interface between individual modules and therefore code errors and defects detected are only for individual modules and not the entire system. System testing is done on the entire system including all the interfaces therefore, any code error and defect detected is assumed as a defect of the entire system.