EinblickeFachartikel

Testing: Unabdingbar für erfolgreiche Softwareprojekte

2023-06-29 Bernhard Posselt
Prozessablauf wird mit weißen kreisenden Pfeilen dargestellt, der Hintergrund ist türkis.

Um Bestandskunden zu halten und Neukunden nicht an die Konkurrenz zu verlieren, ist ein möglichst reibungsloser Betrieb von Softwareapplikationen von großer Wichtigkeit. Testing ist ein wichtiger Bestandteil, um diese Ziele zu erreichen. Bei foryouandyourcustomers achten wir darauf, Testing früh im Prozess vorzubereiten. In diesem Beitrag zeigen wir Ihnen, warum.

Warum Testen

Im Gegensatz zu materiellen Produkten besitzt Software die Fähigkeit, durch Updates schnell und einfach verändert werden zu können. Oft ändert sich Software fast täglich: Probleme und Fehler in Komponenten werden von Entwicklern und Drittanbietern behoben, Sicherheitslücken werden geschlossen, neue Features werden eingebaut oder Anbindungen an Drittsysteme werden verändert.

Nach jeder dieser Änderungen muss garantiert werden können, dass sich das System noch wie erwartet verhält. Falls nicht, kann es zu kostspieligen Ausfällen oder Datenverlust kommen. Auch wenn der Testprozess zu lange dauert, kann dies problematisch sein, z. B.:

  • kritische Updates werden nicht zeitgerecht eingespielt und führen zur Kompromittierung der Systeme (siehe log4j Sicherheitslücke)

  • gesetzliche Richtlinien werden am Stichtag nicht eingehalten; Strafzahlungen folgen

  • Schnittstellen-Änderungen von Drittsystemen werden nicht rechtzeitig angepasst, was dazu führt, dass diese nicht mehr angesprochen werden können

Testgrundlagen

Effektives Testen erfordert eine klar definierte Checkliste, die schrittweise abgearbeitet wird. Am Ende dieser Schritte wird dann das Ergebnis mit dem Soll-Zustand verglichen. Hier ein vereinfachtes Beispiel für einen Webshop:

Schritte:

  • Ich logge mich als registrierter und freigeschalteter Kunde in den Shop ein

  • Ich wechsle meinen Einkaufsstandort auf meine präferierte Filiale

  • Ich stelle sicher, dass ein Taschenrechner für 10 Euro existiert

  • Ich lege den Taschenrechner mit anderen, nicht rabattfähigen Artikeln in den Warenkorb

  • Auf der Warenkorbseite gebe ich einen 10%-Rabattcode ein

Erwartetes Ergebnis:

  • Der Streichpreis der Position beträgt 10€

  • Der Endpreis der Position beträgt 9€

  • Nicht rabattierfähige Produkte wurden nicht reduziert

Idealerweise werden die Testdaten und Checklisten so gewählt, dass sie möglichst viele Fälle abdecken und bei Fehlern sofort fehlschlagen.

Da diese Arbeit relativ monoton ist, wird diese nicht nur oft beim Start eines Projektes vernachlässigt, sondern auch ungern und damit zu einem gewissen Grad auch ungenau durchgeführt. Frei nach dem Motto: Was unangenehm ist, wird vermieden.

Projekte ohne Testkonzepte können teuer werden

Mit der Zeit vervielfachen sich die Anforderungen und somit die Anzahl der Codezeilen. Kaum eine Person hat mehr ein ganzheitliches Verständnis des bestehenden Systems. Daraus folgt: Je länger ein Projekt ohne Teststrategie fährt, desto kostspieliger und komplexer wird die nachträgliche Einführung. 

Michael Feathers geht auf dieses Problem in seinem Buch Working Effectively with Legacy Code ein, welches sich mit der Wartung und eventueller Ablöse von ungetesteten Systemen beschäftigt:

“To me, legacy code is simply code without tests.”

Feathers, S.17

Daraus ableitend kann man sich folgende Frage stellen: Wenn Testing aus budgetären Gründen nicht in Frage kommt, hat man das Geld und die Zeit, um das System nochmals neu zu entwickeln?

Testen einfach und möglichst angenehm gestalten

Die Lösung, die sich im Softwarebereich durchgesetzt hat, ist ein Mix aus manuellen und automatisierten Tests. Automatisierte Tests werden von Softwareentwicklern während der Umsetzung erstellt und variieren von maximaler Isolation und hohem Detailgrad (Unit Test) bis hin zum groben Testen des gesamten Systems (End-to-End Test).

Sie garantieren einen schnellen, immer gleichen Testablauf und bewähren sich vor allem bei mittleren oder größeren Projekten. Schwer automatisierbare Tests werden weiterhin von Hand anhand einer Checkliste (= Testplan) durchgeführt. Diese werden meist von dezidierten Testern abgearbeitet.

Die großen Herausforderungen beim Testen von Software belaufen sich meist darauf, die Ergebnisse reproduzierbar zu machen. Dies hängt in der Regel nicht nur von den Daten im Testsystem, sondern auch von eventuellen Drittsystemen ab. 

Um eine Bestellung in einem Shop testen zu können, müssen z. B. nicht nur kaufbare Produkte vorhanden sein, sondern auch der Bezahl- und Bestellvorgang ausführ- und überprüfbar sein. Zahlungsanbieter bieten oft Test-Schnittstellen an, über die die Integration getestet werden kann. Das dahinter liegende ERP-System, über welches die Bestellungen abgeschickt werden, geht jedoch oft vergessen.

Ist hier keine Lösung zum Zeitpunkt der Implementierung des Bestellprozesses vorhanden, vervielfachen sich die Aufwände zum automatisierten Testen massiv. Dies führt dazu, dass für diese Funktionen oft keine automatisierten Tests vorhanden sind. 

Aus diesem Grund ist es wichtig, den Grundstein für solche Tests möglichst früh zu setzen. Idealerweise kann von relevanten Drittsystemen eine Test-Schnittstelle eingerichtet werden. Wenn nicht, muss die Schnittstelle über einen simplen Nachbau simuliert werden. In der Folge sind damit Tests ohne großen Aufwand umsetzbar.

Früh mit Testen anzufangen zahlt sich aus

Der erfolgreiche Betrieb einer Softwareapplikation erfordert die Möglichkeit, schnell und häufig die komplette Funktionsweise einer gesamten Applikation testen zu können. Dies wiederum erfordert ein Testkonzept, welches früh in der Entwicklung erstellt werden sollte. Dadurch wird das Erstellen von automatisierten Tests während der Umsetzung einfacher und schneller und dadurch nicht durch zu hohe Aufwände und Komplexität von den Projektmanagern und Entwicklern verworfen.

Bei foryouandyourcustomers achten wir darauf, Testing möglichst früh zu integrieren und einfach zu gestalten, damit Ihre Projekte erfolgreich und im Budget umgesetzt werden. Wenn Sie weitere Fragen zu unserer Vorgehensweise haben, kontaktieren Sie Manuel Hanel, CEO in Wien.