# Interationstest - was ist das?



## edshirt (7. Apr 2010)

Hallo zusammen,

ich beschäftige mich gerade mit dem Thema Integrationstest im Zusammenhang mit Continous Integrationtools wie Hudson und CruiseControl.

Nun verstehe ich nicht, was es praktisch heißt Integrationstests in den Tools durchzuführen. Ich kann dort ja schön meine JUnit-Tests oder Codestyle Test durchführen und auswerten lassen, nur sind das meiner Meinung nach eben keine Integrationstests. Ist nur der Vorgang des Build Erstellen an sich schon ein Integrationstest oder gibt es noch Plugins für z. B. Hudson die diese Tests ausführen?

Ich bin verwirrt!???:L


----------



## maki (7. Apr 2010)

Integrationstest ? Wikipedia

Kommt immer auf das zu testende System an, wie genau ein Integrationstest aussieht bzw. welche Tools es dafür gibt.


----------



## edshirt (7. Apr 2010)

Mhh theoretisch verstehe ich was man unter Integrationstest versteht, nur nicht wie man sie praktisch durchführt. Macht man Schnittstellentests dann beispielsweise über JUnittest ohne Mockobjekten oder gibt es eigene Tools / Frameworks die sowas durchführen können?


----------



## maki (7. Apr 2010)

"Praktisch" ohne Beispiel geht nicht.
"Schnittstellentests" sind was ?


----------



## edshirt (7. Apr 2010)

Mhh genau das mit dem Beispiel ist mein Problem - ich habe keins. Also angenommen mal hat ein Java Projekt mit verschiedenen Klassen etc. Nun kommt jemand an und sagt:"Machen Sie einen Integrationstest!". Was müsste man dann machen?


----------



## fastjack (7. Apr 2010)

Im Prinzip mußt Du das Komplettsystem auf einem definierten Datenbestand testen. Die Komponenten, die Du entwickelt hast, sollen in einem Testsystem integriert getestet werden. Also keine weggemockten Server etc., sondern tatsächliche Testsysteme.


----------



## dermoritz (19. Apr 2010)

"Komplettsystem" - wäre der "Systemtest". Der Integrationstest ist die Vorstufe. Sobald hoffentlich alle für den Integrationstest benötigten Klassen ihre Komponententests (JUnit) betanden haben, kann man sie ja mal zusammenbauen und probieren ob das funktioniert. Der Integrationstest prüft damit (auch) die Scnittstellen. "Mock"-geschichten braucht man eventuell wenn man Schnittstellen nach außen Testen will oder bestimmte Komponenten noch nicht fertig sind die für den Integrationstest benötigt werden.

Es gibt mehrere Ansätze sowas durchzuführen: "Bottom-up" meint du nimmst Klasse A und rufst mit ihr Klasse B auf und irgendwann hat man das ganze System zusammen. "Top-Down" meint du nimmst irgendeine Art "Oberklasse" bzw. "Systemklasse" die Stück für Stück weitere Klassen (z.B. A und B) aufruft bis wieder das ganze System steht. Dann gibts noch Ad-hoc; wenn eine Komponente erfolgreich aus dem Unittest kommt einfach an schon fertige Komponenten anbinden und Testen. Und dann kommt die Kunst des Testens: gute Testfälle ausdenken damit man mit wenig Testen viele Fehler findet.


----------



## maki (19. Apr 2010)

System-(Integrations-)tests sind von Natur aus Top-Down und Blackbox Tests.

Dann gibt es noch Komponententests, mal als isolierte Unit tests(white box), dann als Integrationstests(black box).

Es ist übrigens keine gute Idee für Isolierte Unit Tests (egal ob ganze Komponenten oder nur eine Klasse) mit möglichst wenig Tests möglichst viele Fehler zu finden, "defect localisation" leidet sonst 

Integrationstests brauchen meist viel mehr Vorbereitung als isolierte Unit Tests (Testdaten und erwartete Ergebnisse festlegen).

Empfehle jedem das Buch "XUnit Test Patterns" der tiefer in Tests einsteigen möchte.


----------

