Take the 2-minute tour ×
Software Quality Assurance & Testing Stack Exchange is a question and answer site for software quality control experts, automation engineers, and software testers. It's 100% free, no registration required.

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.

share|improve this question

3 Answers 3

up vote 4 down vote accepted

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.

share|improve this answer
    
Perfect! Clearly i was wrong about System Testing. Thanks a ton. –  Dan Nov 4 '12 at 10:52
    
No problem, feel free to accept the answer if you think I answered your question. :-) –  Toby Jackson Nov 4 '12 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. :-) –  Edu Nov 4 '12 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. –  dzieciou Nov 4 '12 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? –  Dan Nov 5 '12 at 6:44

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.

share|improve this answer

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.

share|improve this answer
2  
Very well explained, and thanks for the ISTQB link :) –  Dan Nov 5 '12 at 7:59

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.