© Excellent backgrounds/Shutterstock.com
Pragmatisches Integrationstesten

Pragmatisches Integrationstesten


Das Leben eines Entwicklers könnte so einfach sein, wenn mit Unit Tests zur Verifikation der Geschäftslogik das Testen schon erledigt wäre. Doch wenn sichergestellt werden soll, dass beispielsweise eine Anwendung ohne Fehler deployt werden kann, dass Datenbankabfragen zu den gewünschten Ergebnissen führen oder die Interprozesskommunikation über RESTful Services funktioniert, dann sind Integrationstests angesagt. Diesem mannigfaltigen Thema widmet sich der vorliegende dritte und letzte Teil dieser Serie.

Im ersten Teil zum Thema Testwissen für Entwickler wurden Best Practices für Unit Tests vorgestellt. Eine wichtige Empfehlung war, die Funktionsweise der Software mit den vorgestellten Assertions-Frameworks in vielen einfachen, feingranularen und schnellen Tests zu überprüfen. Der zweite Teil konzentrierte sich auf das Testen von Objekten mit Abhängigkeiten zu anderen Objekten, die deren Testen erschweren. Zur Isolation der getesteten Objekte und zur Überprüfung von Objektinteraktionen wurden verschiedene Typen von Testdoubles vorgestellt. Im Mittelpunkt des dritten Teils stehen Integrationstests und ihre Automatisierung.

Artikelserie

Teil 1: Eigenschaften von TDD und BDD, Best Practices für Unit Tests

Teil 2: Teststile

Teil 3: Integrationstests: Test- und Build-Automatisierung

Integrationstests überprüfen Komponenten in Kombination miteinander. Diese Tests können sich auf die interne Funktionsweise eines Systems beziehen oder auf mehrere Systeme, die zusammen eine Aufgabe erfüllen. Angenommen, wir hätten Code zur Serialisierung geschrieben und ihn mit Unit Tests getestet, ohne das Dateisystem zu benutzen. Wie wollen wir dann wissen, ob das Laden und Speichern der Daten auf Festplatte tatsächlich funktioniert? Vielleicht haben wir ein flush oder ein close vergessen. End-to-End-Tests überprüfen alle Komponenten eines Systems. Diese Tests gehen durch alle Schichten vom Browser über Webserver bis zur Datenbank inklusive sonstiger beteiligter Systeme. Akzeptanztests werden von User Stories abgeleitet und sollen sicherstellen, dass die funktionalen Benutzeranforderungen umgesetzt sind. All diesen Tests ist gemein, dass sie in der Regel langsamer und grobgranularer als Unit Tests sind. Falls ein Fehler auftritt, ist es aufgrund der vielen beteiligten Komponenten oder Systeme meist schwieriger, die Ursache zu identifizieren. Wie können wir trotzdem Integrationstests pragmatisch einsetzen, um unsere Produktivität zu erhöhen?

Im Folgenden soll es insbesondere dar...

Neugierig geworden?

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang