Content deleted Content added
m Task 18 (cosmetic): eval 1 template: del empty params (4×); |
→Approach: add content around test data management from TDD article as this applies generally to integration testing not just TDD. |
||
(28 intermediate revisions by 21 users not shown) | |||
Line 1:
{{
{{More citations needed|date=August 2010}}
{{Software development process}}
'''Integration testing''' is a form of [[software testing]] in which multiple software components, modules, or services are tested together to verify they work as expected when combined. The focus is on testing the interactions and data exchange between integrated parts, rather than testing components in isolation.
Integration testing describes tests that are run at the integration-level to contrast testing at the [[unit testing|unit]] or [[system testing|system]] level.
Often, integration testing is conducted to evaluate the [[regulatory compliance|compliance]] of a component with [[functional requirement]]s.<ref>{{Cite book|title=ISO/IEC/IEEE International Standard - Systems and software engineering|publisher=ISO/IEC/IEEE 24765:2010(E)|year=2010|pages=vol., no., pp.1–418, 15 Dec. 2010}}</ref>
In a structured development process, integration testing takes as its input [[module (programming)|modules]] that have been unit tested, groups them in larger aggregates, applies tests defined in an integration [[test plan]], and delivers as output test results as a step leading to system testing.<ref>[https://books.google.com/books?id=utFCImZOTEIC&dq=integration+test&pg=PA73 Martyn A Ould & Charles Unwin (ed), ''Testing in Software Development'', BCS (1986), p71]. Accessed 31 Oct 2014</ref>
== Approach ==
Some different types of integration testing are big-bang, mixed (sandwich), risky-hardest, [[top-down and bottom-up design|top-down, and bottom-up]]. Other Integration Patterns<ref>Binder, Robert V.: ''Testing Object-Oriented Systems: Models, Patterns, and Tools''. Addison Wesley 1999. {{ISBN|0-201-80938-9}}</ref> are: collaboration integration, backbone integration, layer integration, client-server integration, distributed services integration and high-frequency integration.
In
Sandwich testing
<gallery>
Top Down Approach.png|Top-down approach
Bottom Up Approach.png|Bottom-up approach
Sandwich Approach.png|Sandwich approach
Bing Bang Approach.png|Big bang approach
</gallery>
=== Test Data Management ===
Integration tests that alter any [[persistent storage|persistent store]] or database should always be designed carefully with consideration of the initial and final state of the files or database, even if any test fails. This is often achieved using some combination of the following techniques:
* The <code>TearDown</code> method, which is integral to many test frameworks.
* <code>try...catch...finally</code> [[exception handling]] structures where available.
* [[Database transactions]] where a transaction [[atomicity (database systems)|atomically]] includes perhaps a write, a read and a matching delete operation.
* Taking a "snapshot" of the database before running any tests and rolling back to the snapshot after each test run. This may be automated using a framework such as [[Apache Ant|Ant]] or [[NAnt]] or a [[continuous integration]] system such as [[CruiseControl]].
* Initialising the database to a clean state ''before'' tests, rather than cleaning up ''after'' them. This may be relevant where cleaning up may make it difficult to diagnose test failures by deleting the final state of the database before detailed diagnosis can be performed.
==See also==
Line 25 ⟶ 43:
==References==
{{reflist}}
{{Software testing}}
{{DEFAULTSORT:Integration Testing}}
|