I was asked this question during an interview. My thoughts are SIT is performed on a complete systems and System Testing can be done on a single module as well.
-
1In an interview situation it might be good to be careful about these kinds of concepts. They are sometimes connected to a specific usage in one standard (or methodology) and could have a different flavor or meaning in a different standard. I would prefix the answer with something like: in my experience, or in the method we used ...– ghellquistJul 9, 2019 at 7:42
5 Answers
Systems testing is often performed against the whole platform, and treats the environment as a black box. system integration testing however, acts upon a subset of the whole system, and may mock other platforms, interact with databases, network sockets etc to evoke appropriate responses from the parts being validated.
The objectives of system testing is to validate the public exposed interfaces of the platform, by behaving as an end user, with no privileged access to internal systems. Integration verification attempts to verify that seperate systems operate well together before they're used in the whole system.
-
-
No problem, feel free to accept the answer if you think I answered your question. :-) Nov 4, 2012 at 11:21
-
I would call testing parts of the system, possibly with mocks, just "integration testing" and system integration testing would be different thing. Just goes to show that it's good to make sure others are using the terms in the same way. :-)– EduNov 4, 2012 at 11:59
-
1@Toby, in my dictionary there are integration tests, system tests, and system integration tests, so the integration goes bottom-up. All of course depends on where you put boundaries between your and other systems. So I would say integration tests verify integration of internal interfaces inside of your system, in system tests you mock external interfaces, and in system integration tests you play with real external interfaces. Whatever you call it, the point is to verify both internal interface integration and external interface integration.– dzieciouNov 4, 2012 at 21:16
-
@dzieciou lets say we have a system C which is combination of A and B (A + B = C). Now i can check perform Integration tests for A, Integration tests for B. After this i need to perform System tests on C which is the result(whole system). Where exactly will SIT come in here?– DanNov 5, 2012 at 6:44
In your comment you asked
Lets say we have a system C which is combination of A and B (A + B = C). Now i can check perform Integration tests for A, Integration tests for B. After this i need to perform System tests on C which is the result(whole system). Where exactly will SIT come in here?
In testing C, but I believe you won't learn much from short answers.
The long answer is the following. You have a system of systems here. You may perform tests at the same level (single system, system of systems), but at each level you may want to focus on different risks (integration problems, whole functionality).
Example
So let's say you're developing a system A (e.g., online shop) that interacts with external (i.e., not under your control) system B (e.g., PayPal).
Testing whole system A you may verify whether it does what is was requested to, e.g., you are able to select and order a product (system A tests). You may also focus on integration problems here, e.g., because system A integrates backend with frontend (UI). For instance, how frontend behaves when backend is down or backend response is delayed?
Testing A integrated with B you may focus on different problems. You may verify whether after ordering a product money were transferred from your PayPal account to shop account (functionality). This is system C tests. You may also check what will happen when your online shop does not pass (optional) description in payment request to PayPal (more about integration). I would call this system C integration tests.
Conclusion
You may always consult ISTQB glossary and ISTQB Syllabus if you need clear definitions. Practice is, however, more interesting. You combine multiple dimensions of testing: level (subsystem, system, system of the systems) and risk focus (functionality, integration problems, etc.). And often the boundary between what you test is not so clear. For instance, when you test your online shop functionality, at the same time you are also making sure that backend and frontend has been integrated correctly. The book "Lessons Learned in Software Testing" explains nicely about this combination of testing dimensions in "Lesson 48: Testing combines techniques that focus on testers, coverage, potential problems, activities, and evaluation".
To learn more about what risks integration tests focus on, see another answer.
-
3
In my vocabulary system testing would be testing one complete product ( http://en.wikipedia.org/wiki/System_testing ) and system integration testing would be testing combination of products ( http://en.wikipedia.org/wiki/System_integration_testing ). As always, it's good to make sure others are using terms in the same way and in an interview point out that you know about the ambiguity.
System Testing is performed on completed software or application. Integration Testing happens in 2 places - Before System Testing and After System Testing. Integration Testing can be split as Integration and Testing which means you are integrating the unit or components and testing the handshakes between these modules. Once the integration testing is done for all the modules, you perform the System testing as we now have the completed system. After System Testing and before User Acceptance Testing, we do the System Integration Testing. This term can be split into two - System Integration and Testing. Now imagine, your system has to integrate with another system to provide a solution to the end user. Now, you need to make sure your System is compatible and is able to exchange information with the other system. To ensure this, we perform system integration testing.
Example: You buy a COTS (Commercial Off the Shelf) product from the market. You will perform SIT to make sure, it talks to your existing system.
Hope this clarifies.
A good explanation can also be found in this slide:
System Test: As soon as an integrated set of modules has been combined to form your application, system testing can then be performed. System testing verifies the system-level reliability and functionality of the product by testing your application in the integrated system.
Note: QA team performs System testing/ done by independent test group
Integration Test: Integration testing is used to test the reliability and functionality of groups of units (modules) that have been combined together into larger segments. The most efficient method of integration is to slowly and progressively combine the separate modules into small segments rather than merging all the units into large component.
Note: Test engineers performs Integration testing in development phase