Testen mit Docker und Testcontainers
Auf dem Prüfstand
Container eignen sich gut für Integrationstests. Mit der Software Docker und der Java-Bibliothek Testcontainers stehen zwei Werkzeuge für den komfortablen Einsatz von Containern in Integrationstests zur Verfügung.
Viele Teams stolpern bei der Einführung von Microservices über Container und damit zwangsläufig über Docker. Container begegnen ihnen häufig auf dem Weg zu DevOps-Praktiken und sind hauptsächlich aus Operations- und Delivery-Sicht interessant – aber auch, wenn es darum geht, Entwicklungs- und Testumgebungen robuster und konsistenter zu gestalten. Deshalb lohnt sich ein Blick darauf, wie sich mithilfe von Containern portable Integrationstestumgebungen definieren lassen. So erhalten Teams Integrationstests, die sie auf ihrem Entwicklungsrechner wie auf ihrem CI-Server ausführen können.
Die klassische Testpyramide ist vielen aus Studium und Literatur ein Begriff. Unten befindet sich ein großes Fundament aus Unit-Tests. Es folgt ein kleinerer Mittelteil aus Integrationstests und die Spitze besteht aus funktionalen End-to-End-Tests. Auch wenn diese Idee als Idealvorschlag dient, ist es erstaunlich, dass die eigentliche Definition und das Verständnis der einzelnen Schichten sehr unterschiedlich ausfällt. Für die Integrationstestebene kursieren oft andere Begriffe, darunter Komponententests oder Servicetests. Mit Akzeptanztests oder UI-Tests hingegen meinen viele funktionale Tests.