Einführung in Testcontainers mit Kevin Wittek

Am 13.6.2018 war Kevin Wittek zu Gast bei der JUG-Darmstadt und hat einen Vortrag mit dem Titel „Groovy integration testing with Docker and Testcontainers“ gehalten.

Los ging es mit der Motivation warum man Testcontainers verwenden sollte und wofür es gedacht ist.

Als erstes hat Kevin die klassische Testpyramide erklärt. Dann aber sofort die Frage in den Raum gestellt, ob die auch für Microservices geeignet ist. Das diente als Überleitung zu einem Post auf der Webseite von Martin Fowler und der anschhließenden Definition von Integrationstest, so wie Kevin den Begriff in dem Vortrag verwendet hat.

Wichtig ist, dass bei einem Integrationstest externe Abhängigkeiten zu anderen Systemen bestehen müssen. Beispielsweise zu Datenbanken.

Anschließend ist Kevin auf die Sichtweise von Spotify eingegangen und hat beschrieben, was die aus der Testpyramide gemacht haben. Also eher eine Honigwaabe, die aus Integrated Tests, Integrationstests und Tests der Implementatierungsdetails besteht.

Integrated Tests können fehl schlagen abhängig vom Zustand der externen Systeme. Da man das vermeiden möchte, um repoduzierbare Resultate zu haben, sollten bei Tests keine Systeme gemeinsam genutzt werden. Dann kamen die Testcontainers ins Spiel. Denn, wenn man Testcontainers benutzt, dann werden aus Integrated Tests Integrationstests. Und das möchte man.

Ausführlich wird der Zusammmenhang Integrated Tests, Integrationstests und Implementation Detail in dem Artikel Testing of Microservices von Spotify erklärt:

Als nächstes hat Kevin verschiedene Tools und Frameworks aufgezählt mit denen man Tests erstellen kann. Beisielsweise: JUnit, Geb, Groovy, Docker, Testcontainers.

Von da hat er zu der Frage übergeleitet warum man diese Tools kombinieren sollte. Die Antwort war, dass man nur produktiv entwickeln kann, wenn man eine Testumgebung hat, da sonst die Feedback-Zyklen viel zu lang sind.

Nach ein paar Internas von Testcontainers hat Kevin mit einer Demo weiter gemacht.

Los ging es mit einer einfachen Spring-Boot-Applikation, die eine Postgres und eine MongoDB benötigte.

Danach wurde eine Anwendung mit GUI mit Hilfe von Selenium getestest. Dabei hat Kevin gezeigt, welche Möglichkeiten es gibt das Verhalten der Oberfläche aufzuzeichnen.

Zu Abschluss gabe es noch eine Ausführliche Fragerunde.

Mir hat der Vortrag sehr gut gefallen und obwohl ich eine Menge Zeit mit Testautomatisierung verbringe, habe ich noch neues gelernt und ein paar Denkanstöße bekommen und werde Testcontainers bei der nächsten Gelegenheit einsetzen. Mir hat besonders der einfache Umgang mit Docker gefallen, den man die Testcontainers direkt in Java implementieren kann und nicht extra Shell-Skripte erstellen muss.

Vielen Dank an Kevin für den Besuch in Darmstadt und den sehr interessanten Vortrag.

Einen großen Dank auch an die Software AG, die uns die Räumlichkeiten und das Catering zur Verfügung gestellt hat.

Die Folien zu dem Vortrag findet man hier.

Wer keine Zeit hatte Live dabei zu sein kann sich eine Aufzeichnung des Vortrags bei Youtube ansehen.

Kommentare sind abgeschaltet.