© Excellent backgrounds/Shutterstock.com
Java Magazin
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.

Kai Spichale


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.

ArtikelserieTeil 1: Eigenschaften von TDD und BDD, Best Practices für Unit TestsTeil 2: TeststileTeil 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 darum gehen, wie Integrationstests mit Frameworks wie JUnit durchgeführt werden können. Es werden mit Cargo [1] und Arquillian [2] zwei Technologien zum Deployen der zu testenden Software in einen Applikationsserver vorgestellt. Integrationstests ohne Deployment, die beispielsweise mit Spring möglich sind, werden ebenfalls betrachtet.

Teile und herrsche!

Da Integrationstests im Allgemeinen langsamer und komplexer sind als Unit Tests, von denen hunderte in einer Sekunde auf einem Entwicklerrechner ausgeführt werden ...

Java Magazin
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.

Kai Spichale


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.

ArtikelserieTeil 1: Eigenschaften von TDD und BDD, Best Practices für Unit TestsTeil 2: TeststileTeil 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 darum gehen, wie Integrationstests mit Frameworks wie JUnit durchgeführt werden können. Es werden mit Cargo [1] und Arquillian [2] zwei Technologien zum Deployen der zu testenden Software in einen Applikationsserver vorgestellt. Integrationstests ohne Deployment, die beispielsweise mit Spring möglich sind, werden ebenfalls betrachtet.

Teile und herrsche!

Da Integrationstests im Allgemeinen langsamer und komplexer sind als Unit Tests, von denen hunderte in einer Sekunde auf einem Entwicklerrechner ausgeführt werden ...

Neugierig geworden?


    
Loading...

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