Garantierte Leistung

Mit automatisierten Tests optimal entwickeln
Keine Kommentare

Dauerhaft kann geschäftskritische Software nur betrieben werden, wenn automatisierte Tests an der Tagesordnung sind. Unternehmen legen damit die Basis für die Veränderbarkeit der Lösung und stellen sicher, dass sie langfristig verfügbar ist und zielführend genutzt werden kann. Die häufig verbreitete falsche Annahme, die Implementierung automatisierter Tests wäre aufwendig und zu teuer, bezieht den Fakt nicht mit ein, dass gerade dann unnötige und enorme Kosten entstehen, wenn Unternehmen nicht getestete Software verwenden. Zumal bei Berücksichtigung einiger Grundprinzipien Softwaretests effektiv und zugleich kostensparend gelingen.

Mit Testautomatisierung kann eine Software ohne manuelle Eingriffe mittels selbst entwickelter Testsoftware überprüft werden. Damit wird langfristig gewährleistet, dass möglichst alle Funktionen der Software korrekt ausgeführt werden. Durch das automatisierte Verfahren gelingt die Überprüfung in kürzester Zeit und in der nötigen Häufigkeit. Zentrale Pluspunkte ergeben sich, wenn die Entwicklung der Software umfassend mit automatisierten Tests erfolgt: unter anderem offenbaren sich Programmierfehler frühzeitig. In Echtzeit hat ein Entwickler durch die Tests alle Informationen zu möglichen unerwünschten Auswirkungen von Codeänderungen. Dadurch sparen Unternehmen bares Geld, denn immerhin steigen die Kosten für eine Fehlerbeseitigung deutlich, wenn die Folgen zu spät aufgedeckt werden. Geschieht das bereits während der Entwicklung, sinken Aufwand und Kosten. Dem Anwender wird kein Grund für Unmut gegeben und die bei fehlerhafter Software nötigen teuren Rückruf- oder Nachbesserungsaktionen entfallen. Unternehmen haben so die Grundlage für eine kosteneffiziente und qualitätsgesicherte Entwicklung gelegt.

Doch auch die Anpassung von Software wird durch automatisierte Tests ermöglicht. Besonders für eine agile, iterative Entwicklung (Stichwort: Continuous Integration/Deployment), stellen solche Tests sicher, dass neue Features funktionieren und bestehende Funktionen nicht beeinträchtigen. Anpassungen werden zügig und risikolos produktiv eingesetzt, wodurch man in dynamischen Märkten handlungsfähig bleibt. Da das getestete Tool so flexibel ist, auch die wechselnden Anforderungen des Marktes abzubilden, können Unternehmen schneller auf den Wettbewerb reagieren. Damit die Software stets auf der Höhe der Zeit bleibt, stellen automatisierte Tests sicher, dass ein gefahrloses, fehlerfreies Umstrukturieren des Codes (Refactoring) möglich ist. So bleibt die Software veränderbar, flexibel und läuft stets fehlerfrei und stabil.

Keine Ausreden mehr

Auch wenn automatisierte Tests in zu vielen Unternehmen als zusätzlicher Kostenfaktor wahrgenommen werden und nicht überall gang und gäbe sind, lassen sich die meisten Argumente dagegen leicht entkräften.

„Die Software hat zahlreiche Schnittstellen zu anderen Applikationen (z. B. CRM, Billing o. Ä.) und das Gesamtsystem ist zu komplex.“ Testszenarien sind nur schwer zu entwickeln. Doch auch hier gibt es Methoden und Ansätze, Tests für entsprechende Konstellationen aufzusetzen. Für externe Applikationen kann zum Beispiel mit Mocks oder Dummys gearbeitet werden, die bei der Ausführung von Tests das Verhalten dieser Komponenten simulieren. Dieser Aufwand sollte nicht gescheut werden.

BASTA! 2020

Entity Framework Core 5.0: Das ist neu

mit Dr. Holger Schwichtenberg (www.IT-Visions.de/5Minds IT-Solutions)

Memory Ownership in C# und Rust

mit Rainer Stropek (timecockpit.com)

Softwarearchitektur nach COVID-19

mit Oliver Sturm (DevExpress)

Delphi Code Camp

Delphi Language Up-To-Date

mit Bernd Ua (Probucon)

TMS WEB Core training

mit Bruno Fierens (tmssoftware.com bvba)

„Bei der Neuentwicklung wären Tests zu aufwendig und zu teuer.“ Es ist zwar korrekt, dass die Entwicklung mit Tests zunächst mit Mehrkosten verbunden ist, doch unterm Strich steht ein vielfacher ROI: Die Software kann erstens langfristiger betrieben werden und zudem können die Kosten gespart werden, die überhaupt erst wegen fehlender Tests entstehen.

„Es gibt keine geeigneten oder nicht ausreichend viele Testdaten.“ Das muss kein Hindernis bleiben – man kann Testdaten mit Hilfe von Skripten oder Softwaretools selbst generieren. Gerade bei Massentests ist das eine übliche Vorgehensweise.

„In der IT fehlt die Expertise.“ Natürlich brauchen Entwickler und Tester das nötige Know-how, denn das Programmieren von Software mit automatisierten Tests ist leichter gesagt als getan. Man muss wissen, auf welchen Ebenen welcher Test laufen soll, und braucht außerdem kreative Ideen. Doch wenn das Know-how intern nicht vorhanden ist, kann ein externer Dienstleister Unterstützung bieten – das muss auch nicht zwangsläufig das Unternehmen sein, das die Software geschrieben hat.

„Die Software wurde ohne Tests entwickelt und es ist nachträglich nicht möglich, Tests zu implementieren.“ Das ist so nicht richtig: Die nachträgliche Implementierung ist zwar in der Tat mit Aufwand verbunden, aber nicht unmöglich. Zumindest Akzeptanztests für das Gesamtsystem sind fast immer auch nachträglich umsetzbar und sollten für die kritischsten oder am häufigsten benötigten Funktionen umgesetzt werden. Auf der Unit- und Integrationstestebene ist der Aufwand einer ggf. erforderlichen Codeumstrukturierung gegen den Nutzen abzuwägen.

Grundprinzipien des Testens einhalten

Fest steht: Software mit automatisierten Tests entwickeln zu lassen, ist sinnvoll. Damit die volle Wertschöpfung erreicht werden kann, sollten einige Punkte beachtet werden. So ist etwa ins Blaue hinein zu programmieren nicht hilfreich. Bei der Strukturierung der Software müssen Regeln eingehalten werden, sodass sie gut testbar ist.

Zudem ist es wichtig, dass alle geschäftskritischen Funktionen der Software getestet werden. Um die perfekte Abdeckung zu finden, muss eine geschickte Kombination von Tests gewählt werden – das erfordert immer ein Abwägen von Zeit, Geld und Qualität. Die drei zentralen Testkategorien benötigen unterschiedliche Ressourcen, sind unterschiedlich komplex und unterschiedlich aufwendig zu pflegen und durchzuführen. Die Empfehlung für die Kombination der Tests ist es, so umfangreich wie möglich auf den unteren Ebenen zu testen. Damit verringert sich die Laufzeit der Tests und sie können problemlos häufig ausgeführt werden. Um Tests nicht nur aus Entwicklersicht, sondern aus unterschiedlichen Blickwinkeln durchzuführen, sollte es aber in jedem Fall auch Akzeptanztests geben.

Richtig kombinieren

Generell muss auf den drei Ebenen Unit, Integration und System getestet werden. Diese Testebenen unterscheiden sich in Art und Umfang und auch der Verantwortungsbereich variiert. Unittests werden von Entwicklern programmiert: Kleine Codeeinheiten werden separat getestet. Im Fall einer Log-in-Seite wird zum Beispiel ein Passwort abgefragt, für das gewisse Regeln eingehalten werden sollen. Über Unit-Tests wird geprüft, dass der Code so implementiert wurde, dass die Vorgaben von der Software tatsächlich berücksichtigt werden. Auch auf der zweiten Ebene, den Integrationstests, zeichnen die Entwickler verantwortlich. Über Integrationstests werden mehrere Bausteine und Komponenten auf einmal getestet – Systeme im Verbund. Integrationstests sind wichtig, aber auch aufwendiger und komplexer im Aufbau und in der Durchführung. Die dritte Ebene, Systemtests, ist am aufwendigsten, denn sie wird üblicherweise auf dem Gesamtsystem ausgeführt und simuliert die Bedienung des Systems durch den Anwender. Deshalb bezeichnet man sie auch als Akzeptanztests: Sie werden in natürlicher Sprache formuliert und können daher gemeinsam mit dem Kunden oder vom Kunden selbst aufgesetzt werden. Die Überprüfung einer Passwortregel als Akzeptanztest würde zum Beispiel wie folgt lauten: „Wenn ich als Anwender im Registrierungsdialog als Passwort eine Zeichenkette ohne Großbuchstaben eingebe, dann wird die Registrierung abgelehnt und es erscheint ein Hinweis zu den Passwortregeln.“

Die Tests sollten wenn möglich automatisiert stattfinden, da manuelles Testen einen hohen Zeitaufwand erfordert. Lassen sich manuelle Tests nicht vermeiden, sollten sie systematisch erfolgen. In Testkatalogen muss dann erfasst werden, wann wie getestet wird. Auch Sonderfälle sollten abgebildet werden.

Bezüglich ihrer Laufzeit optimierte Tests können von Anfang an in die Entwicklung eingebunden werden und finden ständig und nach jeder Änderung automatisiert statt. Sie werden damit immer auf dem aktuellen Stand der Software durchgeführt. Die Anzahl der Tests hängt vom Umfang des Projekts ab – wir integrierten zum Beispiel für eine Software mit 250 000 Zeilen Code mehr als 25 000 Tests. Hier wird deutlich, dass dieser Umfang manuell nicht leistbar ist. Während diese Tests in etwa einer Stunde automatisiert durchgeführt werden können, wären bei manueller Abdeckung der Testfälle vermutlich mehrere Angestellte mehrere Wochen lang im Einsatz.

Es ist sinnvoll, den Auftraggeber immer von Anfang an miteinzubeziehen und ein Anforderungsmanagement zu betreiben. Formuliert der Kunde seine Wünsche direkt in Form von Tests, wird sichergestellt, dass seine Anforderungen erfüllt sind. Dann können die Akzeptanztests als Kriterium für die Abnahme der Software durch den Kunden herangezogen werden.

Orientierung für Entscheider

Am Anfang steht die Definition des Status quo. Dafür ist unter anderem die Frage zu klären, ob die Software bereits getestet wird und wie das genau geschieht. Der richtige Ansprechpartner für Entscheider ist dabei je nach Konstellation der IT-Dienstleister oder die interne IT. Gemeinsam ist dann im nächsten Schritt zu klären, welche Applikation mit Tests für welche Fälle und in welchem Umfang abgesichert sind. Dabei ist es empfehlenswert, einen Blick in die Testfallkataloge zu werfen. So werden die Testabdeckung und der Automatisierungsgrad ersichtlich und Entscheider erkennen, ob es Tests auf verschiedenen Ebenen gibt oder nur auf einer.

In diesem Prozess gilt es, für einen Verzicht keine Ausreden gelten zu lassen. Der Einsatz zahlt sich langfristig definitiv aus, auch wenn die nachträgliche Implementierung oder die Neuprogrammierung mit Tests sicherlich aufwendig ist. Die nötige Expertise kann gegebenenfalls ein externer Partner ins Haus bringen. Experten raten, zumindest Neuentwicklungen und Erweiterungen an der Software mit Tests abzusichern und schrittweise den Weg in Richtung getesteter Software zu beschreiten, sofern die nachträgliche Implementierung von Tests in bestehende Software nicht möglich sein sollte.

Fazit: Tests sichern langfristig Leistung

Die Veränderbarkeit der Software und damit ihre Langlebigkeit können nur durch Tests gesichert werden – sie sind der sicherste Weg, um geschäftskritische Software langfristig erfolgreich zu betreiben. In diesem Prozess ist es möglich, kontinuierlich, kurzfristig und risikominimiert Veränderungen vorzunehmen. Befürchtungen wie die, dass die Kosten zu hoch ausfallen könnten, lösen sich auf, wenn diese in Relation gesetzt werden: Unternehmen sparen Geld, das bisher in die Behebung der Folgen fehlender Tests floss. Fehlt für die nötige konsequente Vorbereitung und sinnvolle Einführung von Tests inhouse die erforderliche Expertise, können dieses Manko externe Partner kompensieren.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -