Seminare der PW-Akademie

Integrationstest

Was ist ein Integrationstest? 

Der Integrationstest ist ein wichtiger Aspekt des Softwaretests im Rahmen der Software-Entwicklung und stellt einen Teil der Grundlagen Systems Engineering dar. Bei einem Integrationstest handelt es sich um einen Systemtest, der sich mit der Integration, also der Kombination und Validierung einzelner Softwarekomponenten beschäftigt. Im Wesentlichen geht es darum, eine Reihe aufeinander abgestimmte Einzeltests durchzuführen, um sicherzustellen, dass das Zusammenspiel der einzelnen Module reibungslos funktioniert. 

Die ISTQB definiert den Integrationstest folgendermaßen: «Eine Teststufe mit dem Schwerpunkt auf dem Zusammenwirken zwischen Komponenten oder Systemen.» 

Beim Integrationstest prüft der Tester – in der Regel vom ISTQB Certified Tester Foundation Level zertifiziert – also die Schnittstellen zwischen den verschiedenen Modulen und kann danach beurteilen, wie effizient die verschiedenen Anwendungen zusammenarbeiten und ob eine Systemintegration fehlerlos möglich ist. Zusammen bilden die genannten Module also eine größere Komponente oder ein System.

Um die Fehlerursachenanalyse zu erleichtern, wird die Integration der Module und Komponenten in der Regel nacheinander vollzogen, anstatt alle gleichzeitig in Betrieb zu nehmen. Diese Art des Testens hat den Vorteil, dass Sie im Fehlerfall leichter eingrenzen können, an welcher Stelle der Fehler seinen Ursprung haben könnte. Software Integrationstests sind die Teststufe direkt nach dem Unit-Test. Nachdem mehrere Module ihre individuellen Modultests erfolgreich bestanden haben, wird überprüft, ob diese auch fehlerfrei zusammenarbeiten und als integrierte Komponenten funktionieren. Der Integrationstestansatz kann je nach Ihren Projektanforderungen eine White-Box oder eine Black-Box sein.

Wofür benötigt man Integrationstests?

Integrationstests werden überall dort angewendet, wo das Softwaresystem zu groß oder zu komplex ist, als dass das Softwaresystem von Anfang an vollständig und ohne größere Fehler in Betrieb genommen werden könnte. Bedeutet im Umkehrschluss, dass nur für sehr kleine und triviale Systeme auf den Integrationstest einer Software verzichtet werden sollte.

Des Weiteren werden Integrationstests auch im Embedded Software Bereich sowohl auf reiner Softwareebene als auch auf Systemebene eingesetzt. Zum Beispiel indem die Software zunächst auf der Zielhardware getestet wird, bevor die Hardware samt geflashter Software mit mechanischen Bauteilen kombiniert wird. Die konsequente Systemintegrationsstrategie ist oftmals kritisch, da vor allem Fehler in der Steuerungssoftware zur Zerstörung von kostenintensiven mechanischen Bauteilen führen können.

Wie wird ein Integrationstest durchgeführt?

Die Durchführung eines Integrationstests hängt davon ab, für welche Testart man sich entscheidet. Trotzdem gibt es einige relevante Schritte, die bei jedem Integrationstest, egal welcher Art, beachtet und durchgeführt werden müssen. Diese sind: 

  • Vorbereitung eines Integrationstestplans
  • Entscheidung für einen Testansatz
  • Entwurf von Testfällen, Testszenarien und Testskripten
  • Zusammensetzung der ausgewählten Module und Durchführung des Testes
  • Verfolgung identifizierter Fehler und Probleme und Aufzeichnung der Testergebnisse
  • Behebung der identifizierten Fehler und Umsetzung der nötigen Änderungen
  • Wiederholung der genannten Schritte bis alle Integrationstests abgeschlossen sind

Welche Strategien für Integrationstests gibt es?

Es gibt zwei Hauptmethoden, um Integrationstests durchzuführen: einen Bottom-Up-Ansatz und einen Top-Down-Ansatz.
Bottom-up-Integrationstests beginnen in der Regel mit den Kernfunktionalitäten des Softwaresystems und verzichten zunächst auf benutzernahe Komponenten wie das GUI (Graphic User Interface).

Vorteile:

  • Früher Fokus auf kritische interne Module wie z.B. komplexe Algorithmen und Berechnungen
  • Geringerer Bedarf an Stubs, um fehlende Komponenten zu simulieren

Nachteile:

  • Anwendernahe Komponenten werden zuletzt getestet
  • Bedingt geeignet für frühe Erstellung eines Prototyps

Im Top-Down-Ansatz baut man das System aus Anwenderansicht auf, indem für kritische Kernkomponenten, ohne die das System nicht laufen würde, sogenannte Stubs verwendet werden, welche die Funktionen der Kernkomponenten simulieren. Die Stubs werden dann mit fortschreitender Integrationsreife nach und nach durch die echten Komponenten ersetzt.

Vorteile:

  • Integrationsaufbau aus Anwenderperspektive
  • Frühe Erstellung von Prototypen und Mock-Ups möglich

Nachteile:

  • Späte Integration kritischer und komplexer Module
  • Erhöhter Bedarf an Entwicklung von Stubs

Ebenso ist es möglich, diese beiden Strategien zu kombinieren, um möglichst die Vorteile beider Strategien zu erhalten. Die Teststufe endet, wenn alle Module und Komponenten des Softwaresystems vollständig zu einem System integriert sind. Anschließend folgt in der Regel eine abschließende Teststufe, in der die gesamte Anwendung getestet wird. Vorzugsweise in Szenarien, die so gestaltet sind, dass sie denjenigen nachempfunden werden, die sie in den Computern, Systemen und Netzwerken der Kunden vorfinden werden und/oder auf Basis der systematischen Überprüfung der Systemanforderungen.

Welche Vorteile bieten die Integrationstests?

  • Frühe Inbetriebnahme von Modulen und Komponenten, auch wenn betriebskritische Codeabschnitte noch nicht verfügbar sind.
  • Die Tests können effizienter auf verschiedene Teams aufgeteilt werden, bzw. mehrere Teams können unabhängiger voneinander entwickeln und testen.
  • Effizientere Fehleranalysen. Je weniger Komponenten im Test verwendet wurden, desto leichter kann der Fehlerursprung eingegrenzt werden.
  • Integrationstests können früher ausgeführt werden als die End-to-End-Testszenarien.
  • Mit konsequenten Integrationstests werden in der Regel deutlich weniger Fehler im abschließenden Test des Gesamtsystems gefunden, wodurch die Qualität der Abschlusstests steigt und eine hinreichende Produktqualität zur Auslieferung sichergestellt werden kann.

Welche Herausforderungen stehen vor Integrationstests?

Es ist wichtig, eine ausgereifte Integrations- und Integrationsteststrategie zu entwickeln und konsequent zu befolgen und im Projektplan zu berücksichtigen. Die Integrationsstrategie kann logischerweise nur dann eingehalten werden, wenn die erforderlichen Komponenten auch in der vorgegebenen Reihenfolge zur Verfügung stehen.

Für die Testausführung werden Stubs und Simulationen für fehlende Komponenten benötigt. Die Entwicklung der Stubs benötigt Entwicklungszeit und Know-how.

Es ist möglich, dass Fehler der Schnittstellen erst dann auftreten, wenn gestubbte Komponenten durch die echten ersetzt werden.

Kriterien für den Integrationstest

Die Teststrategie sollte für jede Teststufe klare Start- und Endkriterien definieren. Für den Integrationstest können zum Beispiel solche Kriterien definiert werden:

Startkriterien je Integrationsschritt:

  • Alle relevanten Komponenten / Module haben jeweils ihren Komponententest bzw. Modultest durchlaufen.
  • Der vorhergegangene Integrationsschritt (falls vorhanden) hat die Endkriterien erfüllt.
  • Alle Probleme mit hoher Priorität aus den Komponententests und bisherigen Integrationstests wurden gelöst. Die relevanten Komponenten sowie das bisherige Integrationsinkrement sind in sich lauffähig.
  • Der Integrationstestplan sowie die benötigten Testszenarien und Testfälle sind fertig und validiert.
  • Die Testumgebung ist bereit für den Integrationstest.
  • Endkriterien je Integrationsschritt: Die integrierte Anwendung wurde vollständig getestet, sprich alle geplanten Testfälle wurden mindestens einmal ausgeführt.
  • Alle durchgeführten Tests wurden einschließlich der Testergebnisse dokumentiert.

Endkriterien des Integrationstests:

  • Alle Bestandteile des Systems wurden vollständig integriert.
  • Das System ist in sich lauffähig.
  • Alle geplanten Tests der jeweiligen Integrationsstufen wurden mindestens einmal ausgeführt.
  • Alle durchgeführten Tests wurden einschließlich der Testergebnisse dokumentiert.
  • Technische Dokumentation einschließlich der Release Notes wurde bereitgestellt.

Wir bieten Ihnen nicht nur Informationen rund um das Thema Systemtests und Softwareentwicklung, sondern helfen Ihnen auch gerne beispielsweise bei Automotive SPICE.

Was ist ein Integrationstest?+

Integrationstest ist die Kombination und Validierung einzelner Softwarekomponenten. Beim Integrationstest prüft der Tester die Schnittstellen zwischen den verschiedenen Modulen. Zusammen bilden diese Module eine größere Komponente oder ein System.

Welche Strategien für Integrationstests gibt es?+

Es gibt zwei Hauptmethoden, um Integrationstests durchzuführen: einen Bottom-Up-Ansatz und einen Top-Down-Ansatz.

In welchen Bereichen werden Integrationstests angewendet?+

Integrationstests werden überall dort angewendet, wo das Softwaresystem zu groß oder zu komplex ist, als das das Softwaresystem von Anfang an vollständig und ohne größere Fehler in Betrieb genommen werden könnte. Bedeutet im Umkehrschluss, dass nur für sehr kleine und triviale Softwaresysteme auf den Integrationstest verzichtet werden sollte.

Welche Herausforderung stehen vor Integrationstests?+

  • Es ist wichtig eine ausgereifte Integrations- und Integrationsteststrategie zu entwickeln und konsequent zu befolgen und ihm Projektplan zu berücksichtigen.
  • Für die Testausführung werden Stubs und Simulationen für fehlende Komponenten benötigt. Die Entwicklung der Stubs benötigt Entwicklungszeit und Knowhow.
  • Es ist möglich, dass Schnittstellenfehler erst dann auftreten, wenn gestubbte Komponenten durch die echten ersetzt werden.

Welche Vorteile bieten Integrationstests?+

  • Frühe Inbetriebnahme von Modulen und Komponenten
  • Die Tests können effizienter auf verschiedene Teams aufgeteilt werden, bzw. mehrere Teams können unabhängiger voneinander entwickeln und testen
  • Effizientere Fehleranalysen
  • Integrationstests können früher ausgeführt als die End-to-End-Testszenarien
  • Mit konsequenten Integrationstests werden in der Regel deutlich weniger Fehler im abschließenden Test des Gesamtsystems gefunden