In the context of software systems and software engineering, system integration testing (SIT) is a testing process that exercises a software system's coexistence with others. With multiple integrated systems, assuming that each have already passed system testing, SIT proceeds to test their required interactions. Following this, the deliverables are passed on to acceptance testing.
SIT is part of the software testing life cycle for collaborative projects. Usually, a round of SIT precedes the user acceptance test (UAT) round. Software providers usually run a pre-SIT round of tests before consumers run their SIT test cases.
For example, if an integrator (company) is providing an enhancement to a customer's existing solution, then they integrate the new application layer and the new database layer with the customer's existing application and database layers. After the integration is complete, users use both the new part (extended part) and old part (pre-existing part) of the integrated application to update data. A process should exist to exchange data imports and exports between the two data layers. This data exchange process should keep both systems up-to-date. The purpose of system integration testing is to ensure all parts of these systems successfully co-exist and exchange data where necessary.
There may be more parties in the integration, for example the primary customer (consumer) can have their own customers; there may be also multiple providers.
Data driven method
A simple method of SIT which can be performed with minimum usage of software testing tools. Data imports and exports are exchanged before the behavior of each data field within each individual layer is investigated. After the software collaboration, there are three main states of data flow.
--Data state within the integration layer
Integration layer can be a middleware or web service(s) which acts as a medium for data imports and data exports. Data imports and exports performance can be checked with the following steps.
- Cross checking of the data properties within the Integration layer with technical/business specification documents.
- For web service involvement with the integration layer, WSDL and XSD can be used against web service request for the cross check.
- Middleware involvement with the integration layer allows for data mappings against middleware logs for the cross check.
Data state within the database layer
- First check whether all the data have committed to the database layer from the integration layer.
- Then check the data properties with the table and column properties with relevant to technical/business specification documents.
- Check the data validations/constrains with business specification documents.
- If there are any processing data within the database layer then check Stored Procedures with relevant specifications.
- Investigate the server logs for troubleshooting.
Data state within the Application layer
There is not that much to do with the application layer when we perform a system integration testing.
- Mark all the fields from business requirement documents which should be visible in the UI.
- Create a data map from database fields to application fields and check whether necessary fields are visible in UI.
- Check data properties by some positive and negative test cases.
(We have to select best combinations to perform with the limited time). And also we have to repeat some of the above steps in order to test those combinations.
System integration testing (SIT) is a high-level software testing process in which testers verify that all related systems maintain data integrity and can operate in coordination with other systems in the same environment. The testing process ensures that all subcomponents are integrated successfully to provide expected results.
IT validates data integrity between the different sub-components that make up a specified system. The SIT process occurs after unit testing and before validation testing. Due to the fact that SIT concentrates on testing the dependencies between sub-components, it is often subjected to regression testing scenarios. Regression testing facilitates the addition of new test cases. From an application perspective, SIT testing focuses on access to actual data passed through the components and initial connectivity.
The main goal of SIT testing is to test the automation of aggregated components and the dependencies that exist between them. In a complex environment, this is a tedious task, as there are a number of components and dependencies. SIT testing ensures that it follows the dependencies available in a sequence, thereby simplifying the task. After system integration is performed, data flow testing takes place through three states, namely the data states within the integration, database and application layers.
Test cases for SIT testing are developed using test design techniques such as:
- Use case testing
- State transition testing
- Load testing
- Usability testing
- Volume testing
- Graph-based testing
- Decision table testing