Logo der aldebaran Programmierung & IT-Lösungen GmbH

+49 - 511 - 270 416 0

info@aldebaran.de

Automatische Tests

Automatisierte Tests sind das Herz unserer Qualitätssicherung.

Jede Nacht laufen sie über die neueste Version der Software und decken eventuelle Probleme auf. Die wichtigsten von ihnen werden sogar täglich viele Male ausgeführt, bei jeder Änderung des Codes durch einen Entwickler (Continuous Integration).

Wir verwenden bei jedem Projekt die geeignete Mischung aus:

Warum das sinnvoll ist? Lesen Sie hier: „Warum es so viel fehlerhafte Software gibt“

Hoffnung ist gut, Kontrolle ist besser

Automatische Regressionstests sind das wertvollste Qualitäts-Instrument in der Softwareentwicklung sind. Diese Tests werden einmal geschrieben und können dann beliebig oft die Software prüfen, z.B. jede Nacht oder sogar bei jeder kleinen Code-Änderung („Continuous Integration“). Sie testen, ob die Anwendung noch genauso funktioniert wie es definiert wurde.

Wenn eine Änderung bestehende Funktionalitäten in Mitleidenschaft gezogen hat ("Regression"), wird das sofort sichtbar. Dann wird der Fehler von den Entwicklern sofort korrigiert, bis wieder alle Tests fehlerfrei durchlaufen.

Unit-Tests

Die verbreitetste Art automatischer Regressionstests sind Unit-Tests, die jeweils eine „Unit“ (ein einzelnes Programmmodul) testen.

Ein Beispiel: Für eine Funktion, die für eine Bestellmenge einen Rabatt berechnet, definiert man alle wichtigen Fälle:

  • die Bestellmenge ist so groß, dass es den maximalen Rabatt gibt
  • die Bestellmenge ist so klein, dass es keinen Rabatt gibt
  • die Bestellmenge ist 0
  • etc.

Für alle Fälle schreibt man einen Test, der prüft, ob die Funktion den richtigen Rabatt ausrechnet.

Integrationstests

Unit-Tests prüfen isolierte einzelne Komponenten. Abhängigkeiten von anderen Komponenten werden durch den Einsatz von Dummies für diese („Mocks“) ausgeblendet.

Aber oft kommt es vor, dass an sich fehlerfreie Einzelkomponenten im Zusammenspiel doch Probleme machen. Integrationstests testen daher das Zusammenwirken mehrerer Units oder Komponenten.

System- bzw. GUI-Tests

System-Tests schließlich prüfen das Gesamtsystem mit allen beteiligten Komponenten.

Im Falle von Anwendungen mit einer Benutzeroberfläche (Graphical User Interface oder auch "GUI") sind dies GUI-Tests. Sie testen die komplette Anwendung über ihre Benutzeroberfläche.

Diese Tests simulieren einen Benutzer, der die Software bedient, z.B. Buttons anklickt und Eingaben macht. Sie prüfen, ob nach einem Klick das Erwartete geschieht, z.B. sich ein bestimmtes Fenster öffnet und ein bestimmter Wert angezeigt wird.

Sie sind die einzige Sorte von Tests, die sicherstellen kann, dass das Gesamtsystem funktioniert.

Gui-Tests sind anspruchsvoll zu schreiben und zu warten. Nur die wenigsten Software-Häuser bieten diese Maßnahme an. Wir haben viele Jahre Erfahrung mit verschiedenen Gui-Test-Verfahren und -Tools wie Testcomplete und Selenium.

Der "Test first"-Ansatz

Ein besonders weitgehender Test-Ansatz ist "Test first" oder auch „Test Driven Development“ („TDD“).

Hier schreibt man zuerst die Tests und erst dann die eigentliche Funktionalität. D.h. man definiert zuerst das erwartete Ergebnis in allen Details, und kann dann genau überprüfen, ob dieses erreicht wird.

Test First ist nach unserer Erfahrung für bestimmte Projekttypen und Anwendungsfälle sehr gut geeignet, aber nicht für alle. Auch hier kommt es auf Ihre Anforderungen an, ob das Verfahren für Sie Nutzen bringt – das ermitteln wir für Ihr Projekt gemeinsam mit Ihnen.

Weiterer Nutzen automatisierter Tests

Die Tests gewährleisten, dass die Software so funktioniert, wie es definiert wurde – darüber hinaus leisten sie aber noch viel mehr:

  • Sie ermöglichen schnelle Änderungen der Software: Bei großen Änderungen müsste man andernfalls eine lange manuelle Testphase einplanen – die automatischen Tests erledigen das über Nacht.
  • Neben funktionalen sind auch technische Änderungen, z.B. Refactorings, viel einfacher möglich, weil sie keine aufwändigen manuellen Tests nach sich ziehen. Ohne automatische Tests traut man sich häufig nicht, dringende technische Verbesserungen anzugehen.
  • Schließlich sind Tests auch eine Form von Dokumentation der Software. Die o.g. Testfälle zu Bestellmenge und Rabatt dokumentieren in allgemein verständlicher Form, wie sich die Software verhält. Diese Dokumentation nützt Ihnen als Kunde, erleichtert aber auch neuen Entwicklern den Einstieg ins Projekt und hält die Anwendung damit wartbar.

To top

Weiterführende Links: