Continuous Integration & Unit Tests: So steigern Sie die Qualität Ihrer Software

Continuous Integration_Unit Tests

Continuous Integration & Unit Tests: So steigern Sie die Qualität Ihrer Software

Mit Unit Tests und Continuous Integration schaffen Sie es, Integrationsprobleme laufend zu beheben und eventuelle Fehler schnell zu entdecken. Was es damit auf sich hat, fassen wir im folgenden Beitrag für Sie zusammen.

Gepostet: 31. Oktober 2018

Autor: Tanja Wachno

Kategorie: IT & Software

Lesezeit: 2 Minuten

Viele Entwickler kennen es: Sie arbeiten in einem Entwicklerteam, das eine Software betreut, die schon einige Jahre im Einsatz und stetig gewachsen ist. Der Entwickler bekommt die Aufgabe, eine Anpassung im Code vorzunehmen. Er setzt die Anforderung um und testet seine Anpassung gewissenhaft. Bei gewachsenen Projekten kann es nun vorkommen, dass diese Änderung sich aber auch auf eine ganz andere Stelle in der Anwendung auswirkt. Im Optimalfall fällt dies bei manuellen Programmtests auf. Manchmal passiert es aber, dass es erst viel später im Echtbetrieb zum Vorschein kommt und damit dann zu Unzufriedenheit bei Kunden führt. Unit Testing und Continuous Integration (CI, z. Dt. Kontinuierliche Integration) können hier Abhilfe schaffen und verhelfen zu einer Qualitätssteigerung der Software.

Continuous Integration_Unit Tests3

Definition: Was sind Continuous Integration und Unit Tests?

Unit Testing steht für eine kontinuierliche Testentwicklung und bedeutet zunächst lediglich, dass einzelne, möglichst kleine Komponenten bzw. Code-Stücke isoliert und den Spezifikationen entsprechend getestet werden. Dies geschieht mittels codierter Tests, die idealerweise direkt beim Erstellen einzelner Komponenten mitentwickelt werden. Diese codierten Tests laufen dann automatisch mit und können so unbeabsichtigte Auswirkungen neuer Funktionen auf bereits bestehende Programmteile aufdecken. Das Unit Testing ist außerdem einer der Grundsätze der CI. Durch sie wird sichergestellt, dass sich neue Programmteile mühelos in den bestehenden Programmstand integrieren lassen. Voraussetzung dafür ist eine Versionsverwaltung und der Einsatz eines sogenannten Build-Servers. Mittels des Build-Servers wird sichergestellt, dass jede Anpassung, die von Entwicklern in die Versionsverwaltung gegeben wird, in eine ausführbare Anwendung übersetzt wird und die automatischen Tests durchgeführt werden.

Die Durchführung: Wie funktioniert Continuous Integration?

Eine mögliche Art der Durchführung ist folgende: Wenn ein Entwickler ein neues Feature umsetzt, erstellt er zunächst aus der aktuellen Codebasis der Versionsverwaltung einen eigenen lokalen Zweig. In diesem erledigt er seine Aufgaben und schreibt direkt die Unit Tests, mit denen der neue Code getestet wird. Laufen sowohl die Anpassung als auch die Unit Tests durch, veröffentlicht er seinen Zweig in der Versionsverwaltung und stellt einen sogenannten Merge Request. Dadurch wird der Build-Server aufgefordert, den Code zu übersetzen, d.h. für diesen Zweig eine Anwendung zu erstellen und sämtliche Tests des Projekts durchlaufen zu lassen. Waren diese Tests erfolgreich, prüft ein zweiter Entwickler die im Code vorgenommenen Änderungen. Sind diese OK, wird die vom Build-Server erstellte Anwendung zum Testen an die Qualitätssicherung weitergegeben. Verlaufen auch diese Tests erfolgreich, wird der separate Zweig wieder mit der ursprünglichen, aktuellen Codebasis zusammengeführt, aus welcher der Build-Server erneut automatisch eine Anwendung baut und testet. Durch diese Vorgehensweise wird das Risiko von fehlerhaften Updates minimiert.

Ablauf Continuous Integration
Continuous Integration_Unit Tests2

In älteren, gewachsenen Projekten ist es schwierig, nachträglich eine hohe Testabdeckung zu erreichen. Allerdings ist es empfehlenswert, hier dann zumindest für alles, was in dem Projekt geändert und hinzugefügt wird, solch automatische, kontinuierliche Tests anzuwenden.

Setzt man ein Projekt jedoch komplett neu auf, kann auf ein sogenanntes Test Driven Development gesetzt werden. So wie es auch bei der Neuentwicklung der Zeiterfassung und Zutrittskontrolle von der ACCENON Software und Hardware GmbH der Fall ist. Test Driven Development ist eine erweiterte Form des Unit Testing und bedeutet, dass die Unit-Tests bereits vor der eigentlichen Programmlogik umgesetzt werden, anstatt während oder nach der Umsetzung der Funktionen. Dies ist zwar auf den ersten Blick mehr Aufwand, allerdings erreicht man so eine möglichst hohe Testabdeckung und minimiert Risiken in der Zukunft. Natürlich werden die Tests auch später in der Qualitätssicherung stets um dort entwickelte, neue Testfälle erweitert, wenn die Software auf Herz und Nieren unter die Lupe genommen wird.

Welche Erfahrungen haben Sie mit Continuous Integration und Unit Tests gemacht?

Bildquellen: Danial RiCaRoSMatthew Fournierrawpixel on Unsplash

Sie wollen keinen Blogbeitrag mehr verpassen?

Zur Newsletteranmeldung
2019-07-02T14:03:15+01:00

Möchten Sie uns dazu etwas sagen?