Qualitätssteigerung durch automatisierte Unit Tests

Automatisierte Unit Tests steigern die Code-Qualität, insbesondere im DevOps Umfeld mit Hilfe von Continuous Integration. Zudem minimieren sie bei häufigen und umfangreichen Builds Fehler. Im Idealfall decken sie deshalb den kompletten Quellcode automatisiert ab um manuelle Tests zu minimieren, siehe oben die Test Pyramide von Mike Cohn’s.

Allerdings sieht es in der Wirklichkeit meist genau umgekehrt aus und womit gleicht die Pyramide einer Eiscremewaffel. Die Unit Tests decken nur eine geringe Codebasis ab und müssen folglich über teure manuelle Tests kompensiert werden. Dadurch erhöht jede Zeile Feature Code ohne Test Code die technischen Schulden.

In einem guten Testkonzept sind Unit Tests die erste Wahl. Die Vorteile auf der Hand liegen:

  • Unit Tests werden bereits vom Entwickler geschrieben,
  • haben kurze Durchführungszeiten und
  • geben ein schnelles und erstes Feedback zur Qualität.

Dies ist der Grundstein für Agilität in Ihrem Team!

Was sind Unit Tests?

Was sind Unit Tests?

Unit Tests, auch Komponententest genannt, testen im Optimalfall einzelne Methoden einer Klasse. Hierzu eine kurze Erklärung:

  • Es handelt sich um White-Box-Tests, das heißt der zu testende Code ist bekannt.
  • Entwickler können sie schnell und einfach schreiben, da keine externen Abhängigkeiten getestet werden. Ebenso wie der Feature Code wird auch der Test Code im Review geprüft und von anderen Entwicklern hinterfragt.
  • Die Ausführung der Unit Tests finden bereits auf dem Entwickler PC und automatisiert auf dem Build Server statt. Somit ist ein schnelles erstes Feedback sichergestellt.
  • Gute Unit Tests schreibt man in der sogenannten Arrange-Act-Assert-Konvention, was im Grunde den Ablauf beschreibt: Vorbereiten, Ausführen, Überprüfen.
  • Bei der Überprüfung wird nicht nur das Ergebnis überprüft, sondern auch ob die erwartende Interaktion stattgefunden hat.
  • Weiter sind Unit Tests Voraussetzung für anschließende Integrationstests.
  • Für viele Programmiersprachen existieren dazu Testframeworks (z. B. JUnit, PHPUnit).

Entwicklerteams die testgetrieben entwickeln arbeiten nach dem TDD-Pattern (Test-Driven-Development). Dabei wird zuerst der Test Code und danach der Feature Code geschrieben. Die Vorteile sind zum einen, dass sich der Entwickler schon vor der Implementierung über die Testbarkeit seines Codes Gedanken macht und zum anderen, dass der Entwickler sich von Test zu Test arbeitet. Diese kleinschrittige und testgetriebene Entwicklung erhöht die Code-Qualität und die Produktivität, da keine großen, komplexen und fehleranfälligen Implementierungen erfolgen.

Was sind Unit Tests nicht?

Unit Tests stellen die Basis dar und testen den Code auf seine Ausführbarkeit hin. Sie testen keine Abhängigkeiten oder ganzen Funktionen die einem Anwender nützlich sind. Sie grenzen sich daher von folgenden Tests ab:

Atlassian Tests
Name Beschreibung
Functional Tests
Funktionstest
  • Test funktionaler Anforderungen
  • Black-Box-Test
  • zu testender Code ist nicht bekannt
Integration Tests
Integrationstest
  • Test auf das Zusammenspiel von Komponenten
Exploratory Test
Explorativ Tests
  • Manuelle Tests
  • Workflow-Test
  • Experten-Test
  • Usability-Test
  • Test der User Stories

Einsatz im DevOps Umfeld

In Atlassian Umgebungen lassen sich Unit Tests automatisiert ausführen und Statistiken zur Codequalität erzeugen:

Einsatz im DevOps Umfeld

Atlassian Bamboo kümmert sich als Build Server um die automatisierte Ausführung der Unit Tests. Mit dem integrierten Clover lassen sich zudem einfache Statistiken zur Testabdeckung ermitteln. Außerdem lässt sich Bamboo mit SonarQube verbinden, somit lassen sich umfangreichere Statistiken und das Messen der Codequalität prüfen.

Quellen und Links zum Weiterlesen

Wir sind Ihr Atlassian-Partner!

Sie möchten Atlassian Tools neu einführen oder besser ausschöpfen? Ihre Mitarbeiter möchten sich gern mehr um ihr Geschäft kümmern anstatt um Aktualität und Struktur Ihrer Atlassian Landschaft? Sie möchten, dass Ihre Tools an Ihren Entwicklungsprozess angepasst werden? Mit unserer langjährigen Erfahrung unterstützen wir Sie gern bei der Einführung und beim Betrieb oder Erweiterungen Ihrer Atlassian Produkte. Sprechen Sie uns unverbindlich an.

Sie haben Fragen?

Als Experte für Projekte im Bereich der Technologieberatung stehe ich Ihnen gerne für eine persönliche Beratung und weitere Fragen zur Verfügung.

Darko Stankovic

 Vertriebsleiter IT Services 

Darko Stankovic

Darko ist Ihr Ansprechpartner bei AIM und Experte für Technologie und agile Arbeitsweisen. Mit seinem umfassenden Fachwissen und seiner langjährigen Erfahrung unterstützt er Sie dabei, die Herausforderungen der digitalen Arbeitswelt erfolgreich zu meistern. Gemeinsam mit Ihnen entwickelt er maßgeschneiderte Lösungen, die Ihre individuellen Bedürfnisse erfüllen und Ihre Geschäftsprozesse effizienter gestalten.