Das IT-Magazin für Österreichs Entscheider

Software Quality Lab

Testautomatisierung mit Köpfchen

Professionelles Testen hilft, Aufwände und Ressourcen zu schonen, Folgekosten zu reduzieren und bringt mehr Wirtschaftlichkeit in den Software-Lebenszyklus.

Foto: Software ist fehlerhaft – für diese Behauptung gibt es unzählige aktuelle Berichte in den Medien. Das liegt häufig an falsch verstandenen Anforderungen, Unwissen über Zusammenhänge oder ganz einfach menschlichen Fehlern. Das Testen sämtlicher Systemfunktionen mit allen möglichen Werten und Kombinationsmöglichkeiten stellt eine große Herausforderung dar. Nicht selten werden 50 Prozent der Entwicklerzeit für Fehlersuche und -behebung verwendet statt für die Kreation neuer und verbesserter Funktionen.
Trotz der zusätzlichen Kosten für Testen und Fehlerbehebung sind professionelle Tester ein gutes Investment in Qualität und mehr Kundenzufriedenheit.

Wer sollte testen?

Wenn „Testen als Teil der Entwicklung“ deklariert und der Entwickler zum Testen verpflichtet wird, ergeben sich daraus zwei entscheidende Schwachstellen:
Jeder Entwickler glaubt vorrangig an die Fehlerfreiheit seines Programms und versucht diese nachzuweisen. Der Entwickler schreibt Tests unter den gleichen Annahmen, die er für die Entwicklung getroffen hat. Verständnisfehler in den Anforderungen werden so nicht gefunden.
Besser ist es, einen unabhängigen, ausgebildeten Tester oder ein eigenes Testteam einzusetzen. Tester sind erfolgreich, wenn sie Fehler im System finden: Ihre Motivation ist, möglichst viele Fehler zu finden. Zudem entwickeln Tester die Testfälle auf Basis der Anforderungen, nicht auf Basis der Umsetzung. Unterschiede im Verständnis werden durch fehlgeschlagene Testfälle unmittelbar aufgezeigt. Ein unabhängiges – im Idealfall externes – Testteam wird die Qualität deutlich steigern.

Wie wird getestet?

Für jede Phase in einem Softwareprojekt gibt es eine entsprechende Aktivität im Testen. Testen und Qualitätssicherung beginnt bereits bei der Spezifikation. Bei der Erstellung eines Pflichtenheftes kann der Tester bereits planen, mit welchen Abnahmetests die korrekte Erfüllung der Anforderungen nachgewiesen werden soll.
Das Lastenheft gibt wichtige Hinweise für einen vollständigen Systemtest, der sowohl die funktionalen Anforderungen (Was soll das System tun?) als auch die nicht-funktionalen Anforderungen (Wie soll das System etwas tun?) berücksichtigt. Anhand der Architekturdokumente kann der Tester die Integration einzelner Komponenten planen und durchführen. Schließlich können auch die kleinsten Einheiten wie Quellcode, Module und Komponenten mit Unit-Tests auf ihre korrekte Funktion getestet werden. Wird schon hier sichergestellt, dass ein Modul beispielsweise ein Berechnungsergebnis im gesamten definierten Wertebereich mit der gewünschten Genauigkeit liefert, so braucht diese Bedingung auf höherer Ebene nicht mehr geprüft zu werden.

Warum automatisieren?

Professionelle Tester entwickeln Testfälle, deren regelmäßige Durchführung die korrekte Funktionalität des Systems nachweist. Üblicherweise werden diese Tests vor jedem Release durchgeführt. Das bindet immer mehr Ressourcen, weil mit der Weiterentwicklung des Systems auch die Menge der Testfälle steigt. Findet man einen Weg, diese Abläufe zu automatisieren, können sie zeitsparend und ressourcenschonend außerhalb der normalen Arbeitszeiten ablaufen.
Der wichtigste Vorteil von Testautomatisierung ist, dass der manuelle Aufwand gesenkt und die Effizienz des Testens deutlich gesteigert werden kann. Speziell bei heute üblichen agilen und iterativ abgewickelten SW-Projekten (etwa nach der Scrum-Methode) ist eine laufende Qualitätssicherung für ein regelmäßiges „Shippable Product“ unerlässlich. Manuell lässt sich der ständig steigende Testaufwand nicht bewerkstelligen – die einzige Lösung ist Automatisierung.

Wie gehen wir es an?

Zuerst sollte auf Firmenebene überlegt werden, was erreicht werden soll. Eine Teststrategie definiert projektübergreifende Vorgehensweisen und Richtlinien zum Management von Produkt- und Projektrisiken durch das Testen.
Wenn möglich, sollten für die Tests Kundendaten und Kundenszenarien verwendet werden, etwa in einer duplizierten anonymisierten Datenbank. Je realistischer die Datenbasis, desto eher werden Fehler aufgedeckt, die sonst im Echtbetrieb aufgetreten wären. Fällt dann die Entscheidung für Testautomatisierung, so sollte ein überschaubares Projekt als Pilot gewählt werden, um erste Erfahrungen zu sammeln.
zurück
Impressum       Datenschutz Website by NIKOLL.AT