Testautomation im Software Development
//
Hybrid Cloud, IT & Management Consulting, Quality & Testmanagement
Gut ist, was fehlerfrei funktioniert.
Es klingt einfach und ist doch zentral: Software, die fehlerfrei funktioniert, ist gut, Softwarefehler kosten Zeit und Geld. Das gilt für Standardsoftware, aber natürlich auch für Individualanwendungen, wie sie im Geschäftsalltag vieler Unternehmen Anwendung finden. Durch automatisierte Tests ist es möglich, kontinuierlich Softwarequalität zu messen und zu gewährleisten. Unerwünschte Nebeneffekte von Software-Änderungen sind durch automatisierte Tests direkt identifiziert und vermeidbar.
Manuell oder automatisch – der Testaufbau ist entscheidend
Manuelle und automatisierte Tests sind von der Herangehensweise her recht ähnlich und bauen ggf. aufeinander auf. Ein Automationsspezialist kann mit vorhandenen manuellen Testszenarien – auch ohne tiefer gehende Kenntnisse der zu testenden Applikation – valide Testskripte erstellen.
Moderne Testsuiten bieten die Möglichkeit, Skripte aufzuzeichnen und diese beliebig oft auszuführen. Jeder konkrete Fall ist aber individuell, und so ist in der Regel eine Nachbearbeitung der Skripte notwendig, um eine Dynamik bei der Testdurchführung zu erreichen. Das ist notwendig, um im Test beispielsweise verschiedene User mit unterschiedlichen Rollen anlegen zu können.
An geeigneten Stellen im Testskript, z.B. nach dem Absenden von Daten aus einem mehrseitigen Dialog heraus, muss das Skript die Antwort des Systems mit einer vordefinierten Antwort vergleichen. Bei der Programmierung des Vergleichs ist große Sorgfalt gefragt, um stabile Testskripte zu bekommen und den Änderungsaufwand gering zu halten. Dieser entsteht z. B. schon, wenn ein Tagesdatum in die Systemantwort einfließt und diese damit verändert.
Ein Test arbeitet mit plausiblen aber künstlich erzeugten Daten. Diese müssen erzeugt und nach Abschluss der Tests aus dem System entfernt werden. Auch hier hilft die Einführung automatisierter Prozesse. Mit Hilfe von Skripten können Eingangsdaten für Tests erstellt und eine Datenbereinigung nach Abschluss der Tests automatisch durchgeführt werden.
Zwei Schritte vorwärts, einer zurück: Testdurchführung und -auswertung
Die Durchführung automatisierter Tests, vor allem bei Nutzung geeigneter Testtools, ist sehr einfach – quasi auf Knopfdruck – möglich. Die Herausforderung besteht in der Auswertung der Testergebnisse.
Testskripte erzeugen in einzelnen Schritten Aktionen, auf die das System, wie bei einem echten User auch, reagiert. Bei jedem Testdurchlauf wird automatisch ein Ergebnisbericht erzeugt und nach Testende verteilt. Entspricht die Antwort des Systems in einem der Testschritte nicht der Vorgabe, wird der Testlauf beendet. Im Testbericht ist die Stelle, an der ein Test abgebrochen wurde, nachvollziehbar. Es erfolgt eine Analyse, ob der Testfall bedingt durch eine gewollte Änderung der Software nicht mehr korrekt arbeitet, oder ob tatsächlich ein Programmierfehler vorliegt.
In Kombination mit einer automatischen Software-Generierung, wie beispielsweise über „nightly builds“, ist die stete Qualitätskontrolle innerhalb eines Entwicklungsprozesses möglich.
Sind automatisierte Tests zu teuer? Abwägungen & Voraussetzungen für die Einführung eines Testmanagements
Verschiedentlich wird beklagt, dass Testautomation teuer und nicht lohnend ist. Wenn im Vorfeld der Einführung automatisierter Tests nicht sorgfältig gearbeitet wird, kann das sogar passieren. Worauf ist also zu achten?
Eine Vorbedingung für die Automatisierung von Tests sind etablierte manuelle Testverfahren, die detailliert dokumentierte Testfallbeschreibungen beinhalten. Idealerweise werden die Testfälle in einem Tool zusammengehalten, welches die einzelnen Testfälle versioniert und deren Ausführung protokolliert. Manuelle Testfälle dienen als Basis für die Erstellung der Testskripte, durch die Tests automatisch ablaufen können. Anhand der Änderungshistorie von Testfällen lässt sich ablesen, wie stabil die getestete Software im Bereich des konkreten Testinhalts ist. An der Anzahl und Historie der Testdurchführungen lässt sich erkennen, wie wichtig und aktuell der Testfall ist.
Es gilt die Regel: Wird ein Testfall nicht mehr geändert, aber weiterhin häufig genutzt, hat er an diesen Stellen eine hohe Reife erreicht. Hier lohnt eine Automation auf jeden Fall, da so manuelle Aufwände stark reduziert werden können.
Ein weiterer Einstiegspunkt in die Testautomation ist eine geplante Migration auf eine neue Software-Version, wie beispielsweise ein anstehender Technologiewechsel von einem Datenbankhersteller zu einem anderen. Da Testautomation das End-to-End-Testen ermöglicht, kann durch den Einsatz automatisierter Tests auf einfache Weise geprüft werden, ob das neue System die gleichen Ergebnisse liefert wie das alte. Sollten die Tests nicht erfolgreich sein, geben die Testberichte einen Hinweis auf die Ursache. Auf diese Weise kann manueller Testaufwand reduziert werden, ohne Qualität einzubüßen.
Bis an die Grenze: Performance- und Stresstests
Um das Verhalten eines Systems im alltäglichen Rahmen zu prüfen, werden Performancetests durchgeführt. Hierbei wird die Systemauslastung schrittweise erhöht. Ein sog. Lastgenerator imitiert während des Tests User-Aktionen bis zur erwarteten User-Zahl bzw. bis zum geplanten Systemzusammenbruch durch Überlast. Mit Hilfe dieser Stresstests wird die maximal mögliche Systemauslastung geprüft. Darüber hinaus werden Vorsorgemöglichkeiten bei Belastungs-Peaks und Aussagen über die Zukunftssicherheit des Systems möglich.
Vorhandene automatisierte Testfälle können herangezogen werden, um in abgewandelter Form bei Performance- oder Stress-Tests genutzt zu werden. Das spart Aufwand und steigert die Authentizität des Tests.
Fazit
Automatisierte Tests – an den richtigen Stellen eingesetzt – können als schneller und aussagekräftiger Weg zur direkten Rückkopplung mit der Software-Entwicklung dienen. Die unerwünschten Nebeneffekte von Software-Anpassungen können frühzeitig erkannt und vermieden werden. Die Qualität des Gesamtprodukts ist somit jederzeit „auf Knopfdruck“ prüfbar. Automatisierte oder manuelle Tests sind bei der Softwareentwicklung oder -anpassung ein wichtiger Aspekt der Qualitätskontrolle und der ökonomischen Vorsorge. In jedem Einzelfall können Anlage und Umfang von Tests mit erfahrenen Experten festgelegt und begrenzt werden.
Die Berater von noventum consulting unterstützen seit vielen Jahren ihre Kunden bei der Etablierung von Testverfahren, zugehörigen Tools sowie der Einführung von Testautomation.