© Excellent backgrounds/Shutterstock.com
Wie strukturiere ich meine Entwicklertests?

Lost in Tests


Wer kennt nicht folgende Projektsituation: Die Entwicklertests sind eine Sammelsurium von Tests, und desto weiter das Projekt voranschreitet, desto höher wird u. a. die Build-Dauer der Software. Um die Feedbackzeiten wieder zu reduzieren, muss etwas getan werden. Eine mögliche Maßnahme ist, die Entwicklertests neu zu strukturieren.

Video: Softwarearchitektur in agilen Teams - Vom Elfenbeinturm zur Selbstorganisation

Build-Werkzeuge wie Maven [1] und Gradle [2] erleichtern das Ausführen von Tests in jedem Build. Bei Maven reicht es, die Tests unter dem Pfad src/test/java abzulegen und den Klassennamen mit Test enden oder beginnen zu lassen. Dabei ist die Art und Weise, wie der Test geschrieben wird, bei der Testausführung für das Build-Werkzeug uninteressant. So findet man mit der Zeit ein Sammelsurium von Unit Tests und Integrationstests. Dies hat zur Folge, dass die Build-Dauer viel zu hoch wird und das wiederum die Feedbackzeiten unnötig verlangsamt. Es kann keine Aussage darüber gemacht werden, wie viel Testabdeckung von Unit Tests und wie viel Testabdeckung von Integrationstests kommt.

Im Folgenden wird vorgestellt, nach welchen Kriterien die Entwicklertests strukturiert werden können und wie eine Umsetzung aussehen kann.

Kriterien für eine Teststrukturierung

Zunächst müssen die Kriterien für die Strukturierung festgelegt werden. Als Kriterium können Testkategorien dienen. Ein Blick auf die agilen Testquadranten (Abb. 1) hilft, die Frage zu beantworten, welche Testkategorien überhaupt existieren.

parsick_entwicklertest_1.tif_fmt1.jpgAbb. 1: Die agilen Testquadranten [3]

Die Testquadranten unterteilen die Tests in unterschiedliche Kategorien. Die Kategorien werden durch die zwei Achsen der Matrix definiert. Die eine Achse unterteilt die Tests in die Kategorien „Unterstützt das Team“ und „Beurteilt das Produkt“. Die andere Achse unterteilt die Tests in solche Tests, die eher Technologien zugewandt sind und in Tests, die eher der Businesslogik zugewandt sind. Werden die zwei Achsen miteinander kombiniert, ergeben sich vier Quadranten.

Der erste Testquadrant beschreibt die Kombination „Unterstützt das Team“ und „technologiezentriert“. Darunter fallen Tests, die dem Entwickler bei Design- und Architekturentscheidungen helfen [4] und ihm bei Codeänderungen ein schnelles Feedback darüber geben, welche Auswirkungen diese Änderungen auf das Gesamtsystem haben. Diese Tests sind Unit und Component-Tests, wobei die Unit Tests die Funktionalität einer einzelnen Klasse und die Component-Tests da...

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