- Advertisement -spot_img
HomeAutomatisierungTestautomatisierung macht man so nebenbei - oder etwa nicht?

Testautomatisierung macht man so nebenbei – oder etwa nicht?

- Advertisement -spot_img

Testautomatisierung macht man so nebenbei – oder etwa nicht?

Nachhaltige und flexible Testautomatisierung ist kein Zufallsprodukt

M. Sc. Marc-Florian Wendland

Im Allgemeinen verspricht der Einsatz von Automatisierungslösungen eine effizientere Durchführung bislang manueller Tätigkeiten bei gleichbleibender Qualität. Automatisierung zielt entweder auf einen höheren Arbeitsdurchsatz, auf schnellere Verarbeitung oder Vermeidung von Fehlern ab. Grundsätzlich wird durch eine Automatisierungslösung ein effizienterer (und somit kostensparender) Arbeitsprozess angestrebt.

VON DER MÄR, MAN MACHE (TEST-)AUTOMATISIERUNG NEBENHER

In vielen industriellen Branchen ist die Automatisierung nicht mehr wegzudenken, beispielsweise in der Automobilindustrie, der Logistik oder auch dem Kohlebergbau. In diesen Branchen ist der Nutzen von Automatisierungslösungen bekannt, die Tatsache, dass mit diesen Investitionen einhergehen, akzeptiert. So beansprucht die Inbetriebnahme eines
Kohlebergwerkbaggers beispielsweise für eine ganze Woche das gesamte Ingenieursteam. Ist diese Automatisierungslösung erst einmal korrekt konfiguriert und in die Zielumgeben integriert, ist sie an Effizienz nicht zu übertreffen und die Anfangsinvestitionen rasch amortisiert. Oder stellen Sie sich vor, der Leiter der Produktion eines Automobilherstellers erscheint beim Vorstand und verkündet, dass das neue Modell zunächst von Hand zusammengesetzt wird, während die Automatisierung so nebenbei immer mal wieder in Betracht gezogen und ausgearbeitet wird. Natürlich ist dieses Szenario überspitzt, spiegelt
jedoch ganz passabel wieder, wie Automatisierung in anderen Branchen gesehen wird. Insbesondere bei den Automobilfertigungsstraßen braucht es nicht selten von Aufbau bis Inbetriebnahme zwischen sechs und neun Monaten, ehe die verschiedenen Automatisierungszellen nahtlos ineinandergreifen. Denken Sie nur an die Schwierigkeiten, die Tesla bei der Fertigung in der Vergangenheit hatte. Bei der Testautomatisierung für die
Qualitätssicherung software-intensiver Systeme finden wir häufig eine vollkommen andere Auffassung, was benötigte Ressourcen betrifft. „Machen wir nebenbei”, heißt es oft, da die Tester ja noch das Tagesgeschäft (oftmals in Form manueller Ausführung von Regressionstest) erledigen müssen. Ich bin jedoch der Meinung, dass (Test-)Automatisierung kein Zufallsprodukt ist – und auch gar nicht sein kann. Zielführende, verlässliche (Test-)Automatisierungslösungen gehen immer mit Investitionskosten einher, müssen sorgfältig geplant, systematisch ausgearbeitet und ins

Unternehmen eingeführt werden. Vielleicht liegt es an der immateriellen Beschaffenheit von Software und Testware, dass verlässliche Lösungen für Testautomatisierungen deutlich weniger Anerkennung finden als beispielsweise die Fertigung von Automobilen mittels Roboterwerkzeugen. Im Gegensatz zu vielen industriellen Branchen, in denen Automatisierung als Ergebnis einer hoch kreativen, durch Expertenwissen erbrachte Ingenieursleitung honoriert wird, wird die Testautomatisierung häufig als skripten abgehandelt. Dass Testautomatisierung nicht auf das reine Skripten von Testfällen reduziert werden kann, erkennen viele Unternehmen (und Entscheidungsträger) häufig erst dann, wenn sie scheitert. Für die Testautomatisierung gelten dieselben grundlegenden Voraussetzungen und Herausforderungen wie für die Automatisierung einer industriellen Fertigungsstraße.

WARTBARKEIT ALS ERFOLGSFAKTOR FÜR DIE TESTAUTOMATISIERUNG

Das Qualitätsmerkmal Wartbarkeit beschreibt gemäß ISO 25010 „die Wirtschaftlichkeit, mit der ein System angepasst werden kann, um auf Veränderungen der Umwelt, Rahmenbedingungen oder Anforderungen zu reagieren sowie Fehler zu korrigieren.” Im Kontext der Software-Entwicklung bezieht sich Wartbarkeit darauf, dass ein Software System (oder zumeist nur Teile davon) möglichst einfach analysierbar ist und weiterentwickelt werden kann, ohne die Stabilität des Gesamtsystems negativ zu beeinträchtigen. Im Bereich der Testautomatisierung versteht man unter Wartbarkeit vor allem die Fähigkeit, automatisierte Tests nach Änderungen am System möglichst einfach entsprechend anzupassen. Das ISTQB spricht hier auch von adaptiver Wartbarkeit. Schlechte adaptive Wartbarkeit bei der Testautomatisierung hat allzu oft zur Folge, dass die Automatisierung nicht den erwarteten Nutzen erbringt. In meiner Tätigkeit als freier Trainer

für die verschiedenen Certified TesterSeminare des ISTQB habe ich oft von Teilnehmern gehört, dass ihr Testautomatisierungsprojekt aufgrund von Wartungsschwierigkeiten nicht erfolgreich gewesen ist. Man sei ständig den Änderungen am zu testenden System hinterhergerannt, um die bestehenden automatisierten Testfälle lauffähig zu halten. So blieb aufgrund des immensen Wartungsaufwands kaum mehr Zeit für den Entwurf neuer
Testfälle, um neue/geänderte Funktionalität abzusichern. In vielen dieser Anekdoten führte die unzureichende adaptive Wartbarkeit dazu, dass das Testautomatisierungsprojekt schlussendlich eingestellt wurde. Geänderte, außer Betrieb genommene oder neu hinzugefügte Anforderungen (oder Funktionen) führen in jedem Fall zu notwendigen adaptiven Wartungsarbeiten an den automatisierten Testfällen. Eines der wichtigsten Ziele der adaptiven Wartbarkeit ist es, die automatisierte Testsuite mit möglichst geringem Aufwand aktuell zu halten. Testfälle geänderter Funktionalität sollten zügig überarbeitet, nicht mehr benötigte Testfälle entfernt und neue Testfälle für neu hinzugekommene Funktionalitäten entworfen werden. Um diese Testfälle zeitnah aus einer potentiell großen Anzahl automatisierter Tests identifizieren, isolieren und behandeln zu können, ist eine Änderungsauswirkungsanalyse notwendig. Daher sollten es zwischen der Testbasis, den Testanforderungen und den automatisierten Testfällen ein feinmaschiges Nachverfolgunsgnetzwerk geben, welches die bidirektionale Rückverfolgbarkeit (idealerweise rechnergestützt) ermöglicht. Dabei ist es gar nicht notwendig, dass die Testfälle für geänderte oder neue Funktionalität auch unmittelbar automatisiert werden. Oftmals ist es effizienter, eine neue/geänderte Funktionalität manuell zu validieren. Diese so genannten New Feature Tests sollten jedoch mit dem Ausblick auf eine spätere Automatisierung entworfen werden. Eine solche Strategie zur Testautomatisierung unterstützt beispielsweise hervorragend die iterativ-inkrementellen oder agilen Vorgehensmodelle. Allerdings sollten bestehende und nicht betroffene automatisierte Testfälle (die Regressionstest) weiterhin ausführbar sein, um mögliche unerwünschte
Seiteneffekte, die durch die Änderungen eingebracht wurden, zeitnah und frühzeitig zu detektieren. Dies ist leider aufgrund fehlender technischer Abstraktion oftmals nicht der Fall.

ABSTRAKTION ZUM ZWECKE TECHNISCHER UNABHÄNGIGKEIT

Eine besondere Herausforderung für die adaptive Wartbarkeit ist die Unabhängigkeit automatisierter Tests gegenüber technischen Details des zu testenden Systems. Oft genug sind es nämlich rein technische Änderungen (z.B. bei Refaktorisierungsarbeiten an Schnittstellen oder Sub-Systemen) die dazu führen, dass die automatisierten Testfälle nicht mehr ausführbar sind und angepasst werden müssen. Um automatisierte Testfälle robust gegenüber rein technischen Änderungen des zu testenden Systems zu entwerfen, ist es notwendig von technischen Details zu abstrahieren. Dies führt zu der Unterscheidung von logischen und technischen (ausführbaren) Testfällen. Logische Testfälle beschreiben, wie die Testumgebung rein fachlogisch mit dem zu testenden System interagiert, aber nicht wie
diese Interaktion technisch erbracht wird. Logische Interaktion wird durch eine so genannte Adaptionsschicht in technische Aufrufe gegen das zu testenden System umgesetzt. Durch die Trennung von Logik und Technik im Testentwurf wird somit die adaptive Wartbarkeit erhöht, da bei rein technischen Änderungen die logischen Testfälle nicht angepasst werden
müssen. Testautomatisierungsansätze wie das schlüsselwortgetriebene Testen (keyword-driven testing), das verhaltensgetriebene Testen (behavior-driven testing) oder auch einige strukturierte Skripting-Ansätze (z.B. TTCN-3) basieren auf dem Prinzip der Abstraktion von technischen Details des zu testenden Systems.

FASSEN WIR ZUSAMMEN!

Nachhaltige und zuverlässige Testautomatisierungslösungen entstehen nicht per Zufall nebenbei. Sie sind das Ergebnis systematischer und kreativer Ingenieursarbeit und sollten
als solche auch budgetiert, geplant, umgesetzt und honoriert werden.
Der Wartbarkeit von Testautomatisierungslösungen und automatisierten Testsuiten kommt für den Erfolg eines Testautomatisierungsprojekts eine Schlüsselrolle zu. Insbesondere
die adaptive Wartbarkeit (also die Änderung der automatisierten Testware aufgrund von Änderungen am zu testenden System) ist für den unmittelbaren Erfolg einer Testautomatisierung von großer Bedeutung. Schlecht wartbare Testautomatisierungslösungen führen häufig dazu, dass die Testautomatisierungsbestrebungen vom mittleren Management eher als lästig und zu arbeitsintensiv mit vergleichsweise geringem Nutzwert wahrgenommen werden. Abstraktion beim Testautomatisierungsansatz – also das gezielte Weglassen für den
Test irrelevanter Informationen – ist ein probates Mittel, um die adaptive
Wartbarkeit von Testautomatisierungsprojekten zu erhöhen. Allerdings zum Preis einer komplexeren Lösung, da neben den logischen Testfällen nun auch noch eine für die
Ausführung unerlässliche Adaptionsschicht benötigt wird. Es ist wie so oft: eine allumfassende one-size-fitsall-Lösung wird auch bei der Testautomatisierung schwer zu finden sein.

- Advertisement -Certified DevOps Portfolio
Share
Must Read
Related News
- Advertisement -spot_img