+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).

automatische Tests im Nachtbetrieb
Auch nachts aktiv: Unsere automatischen Tests!

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.

Abb. QS Software Test
Die Änderung hat bewirkt, dass ein Test fehlschlägt: der Entwickler weiß nun genau, welche Stelle er korrigieren muss.

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.

Beispiel Unit-Test
Beispiel Unit-Test

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:

Weiterführende Links: