Einführung eines Tools zur Testautomatisierung - Zwei Praxisbeispiele aus der Qualitätsicherung


27.10.2009

Testautomatisierung ist ein Thema, das innerhalb der professionellen Qualitätssicherung immer mehr an Bedeutung gewinnt. Die Gründe hierfür sind vor allem die Verkürzung von Testdurchlaufzeiten, die Verbesserung der Testabdeckung sowie die Wiederhol- und Wiederverwendbarkeit der Tests. Der Nutzen kann jedoch nur auf Grundlage eines erfolgreichen Einführungsprozesses gewährleistet werden, der somit eine zentrale Herausforderung darstellt. Hierzu werden im Folgenden zwei Projekte beschrieben, die sich sowohl hinsichtlich der vorgefundenen Ausgangssituationen als auch der durchgeführten Prozessschritte unterscheiden.

Damit ein Werkzeug zur Testautomatisierung sinnvoll eingeführt und eingesetzt werden kann, muss bereits ein entsprechend funktionierender und gelebter Testprozess im Unternehmen vorhanden sein. Ohne diesen macht ein Tool oder eine Individuallösung nur bedingt Sinn, da nicht vorhandene Prozesse damit nicht kompensiert werden können.

Spezifische Rahmenbedingungen


Teststufe Komponententest

Am Anfang des Projekts sollten Tester und Entwickler gemeinsam die Basis der Zusammenarbeit festlegen. Das Testteam kann auf diese Art und Weise dem Entwicklerteam die notwendigen Inputs liefern, um die Unit-Tests durchzuführen. Das Testteam erstellt hierfür eine Guideline, in der alle wichtigen Aspekte bzgl. der Unit-Test-Erstellung und -Durchführung beinhaltet sind.

Das Testkonzept ist in dieser Hinsicht ein wichtiger Bestandteil der Begleitung, da die hier für die Komponententeststufe festgelegten Vorgehensweisen (bspw. Testfallermittlungstechniken), Qualitätskriterien, Test-Ende-Kriterien usw. in die Unit-Test-Guideline einfließen.

Teststufe Systemtest

Für die Teststufe Systemtest existieren spezifisch zu berücksichtigende Rahmenbedingungen, um den größtmöglichen Nutzen aus der Einführung eines Testautomatisierungstools ziehen zu können. Zusammengefasst lassen sich diesbezüglich drei Schwerpunktbereiche festmachen: Return On Investment (ROI), Systemänderungen sowie mit der Testautomatisierung verbundene Ziele und Erwartungen.

Teststufenübergreifend

Testautomatisierung teststufenübergreifend zu realisieren ist die anspruchsvollste Vorgehensweise. Hinzu kommt, dass solch ein Lösungsansatz nicht durch die Einführung eines einzelnen Tools zu bewerkstelligen ist. Rentabel ist solch eine Lösung speziell im Bereich der agilen Softwareentwicklung mit einer hohen Frequenz an Systemänderungen und Regressionstests, da sich der hohe initiale Aufwand aufgrund der Testdurchführungshäufigkeit amortisiert.

Prozessschritte

Entscheidungsphase

Als Entscheidungsphase werden sämtliche Prozessschritte zusammengefasst, die bis zur Beschaffung eines spezifischen Tools durchlaufen werden sollten. Im Einzelnen sind dies:

  • Anforderungsliste definieren
  • Anforderungsliste priorisieren und gewichten
  • In Frage kommende Tools ermitteln
  • Toolevaluierung
  • Toolauswahl

Einführungsphase

Die Einführungsphase umfasst letztlich diejenigen Prozessschritte, die bis zum operativen Betrieb eines Testautomatisierungstools erforderlich sind:

  • Vorbereitung
  • Installation und Betrieb

Beispiel 1: Einführung eines Functional Testing Tools auf Grundlage eines Testautomatisierungskonzeptes

Ausgangssituation

Die Erstellung eines Testautomatisierungskonzepts wurde für einen weltweit operierenden Kunden aus dem Maschinenbaubereich durchgeführt. Es bildete die Grundlage für die Einführung und den Betrieb eines bereits ausgewählten Tools zur Testautomatisierung in einem Entwicklungsprojekt. Inhalt des Entwicklungsprojekts war die Implementierung eines Systems zur Konfiguration von Nutzfahrzeugen (Lastkraftwagen) verschiedener Baugruppen mit verfügbaren Zubehörteilen zur europaweiten Vertriebsunterstützung.

Zum Zeitpunkt der Beauftragung für die Erstellung eines Testautomatisierungskonzepts war das Entwicklungsprojekt bereits weit fortgeschritten, sprich die Implementierung der Basisfunktionalität einschließlich User Interface war abgeschlossen. Sämtliche Tests wurden von den zuständigen Fachbereichen auf Grundlage eines definierten Testprozesses manuell durchgeführt.

Die Entscheidung zur Testautomatisierung fiel seitens des Kunden unter anderem deswegen, weil aufgrund knapper Ressourcen und hohem Zeitdruck (häufige Releases) nur stichprobenweise Tests durchgeführt werden konnten. Die Ergebnisse waren entsprechend unbefriedigend, da lediglich eine geringe Testabdeckung erzielt werden konnte. Resultierend daraus wurden Fehler erst in späten Phasen erkannt, die somit den Aufwand und die damit verbundenen Kosten zur Behebung erhöhten. Die Tatsache, dass Fehler, die während der Testphase gefunden und gefixt werden, einen erneuten kompletten Test der Anwendung verursachen (was bisher nicht möglich war), machte es notwendig, die Anwendung in kurzer Zeit, ohne großen Ressourcenaufwand und dadurch kosteneffizient automatisiert zu testen. Als Testautomatisierungslösung im Bereich Functional Testing war hierfür Functional Tester (IBM Rational) vorgegeben.

Einführungsphase

In Absprache mit den Projektverantwortlichen wurden für die Einführung der Testautomatisierung folgende Bearbeitungsphasen definiert:

  • Konzeption in Form eines Testautomatisierungskonzepts
  • Umsetzung der im Testautomatisierungskonzept getroffenen Festlegungen
  • Betrieb und Wartung der Testautomatisierungslösung

Konzeption und Umsetzung der Testautomatisierungslösung wurden teilweise parallel vorangetrieben, einerseits um möglichst schnell Ergebnisse zu erzielen und andererseits um eventuell auftretende Probleme zeitnah lösen zu können.

Als Basis für das Testautomatisierungskonzept diente zunächst ein fachliches Feinkonzept. Aus den hier enthaltenen funktionalen Anforderungen leiteten sich die Vorgaben für die Testfallspezifikation und die Testskripterstellung ab. Außerdem wurden im Testautomatisierungskonzept unter anderem Festlegungen in den folgenden Bereichen getroffen:

  • Vor-, Nachteile und Zielsetzung der Testautomatisierung in diesem Projekt
  • Rollen- und Aufgabenverteilung
  • Installation und Konfiguration des Functional Testing Tools
  • Betrieb und Wartung der Testskripte

Parallel zur Erstellung der Konzeption wurde das Testautomatisierungstool in der Zielumgebung integriert und konfiguriert. Außerdem wurden erste repräsentative Testskripte erstellt, auf die wiederum innerhalb des Testautomatisierungskonzepts Bezug genommen wurde. Am Ende des Projektes stand die erfolgreiche Übergabe und Abnahme des Konzepts.

Fazit

In diesem Praxisbeispiel war die Entscheidung über das einzusetzende Tool bereits gefallen, wodurch die Prozessschritte der Entscheidungsphase entfielen. Innerhalb der Konzepterstellung wurde jedoch festgestellt, dass zum Teil unrealistische Erwartungen seitens des Projektmanagements und des Fachbereichs an das Werkzeug gestellt wurden. So ist man bspw. davon ausgegangen, dass Last- und Performancetests ebenfalls mit dem einzuführenden Testautomatisierungswerkzeug durchgeführt werden können, was eindeutig nicht dem Scope eines Functional Testing Tools entspricht.

Hieraus ist ersichtlich, dass, auch wenn eine konkrete Toolvorgabe für die Einführung der Testautomatisierung besteht, mit allen Beteiligten von Anfang an realistische Erwartungen und Ziele abgestimmt werden sollten. Unter Berücksichtigung der sonstigen Rahmenbedingungen dieses Beispielprojektes war die Entscheidung für die Testautomatisierung im Bereich Functional Testing dennoch gerechtfertigt. Mit der Erstellung des Testautomatisierungskonzepts wurde hierbei die Basis geschaffen, dass die Automatisierung der bislang manuellen Tests effizient, wartbar und wiederverwendbar durchgeführt werden kann.

Beispiel 2: Vorbereitung der Einführung einer teststufenübergreifenden Individuallösung

Ausgangssituation

Für einen großen Kommunikationskonzern wurde eine Administrationslösung zur Verwaltung von Diensten wie Active Directory neu entwickelt. Hierbei galt es, eine bestehende Struktur durch moderne Technologien zu ersetzen und in einem Gesamtsystem zu integrieren.

Der Schwerpunkt der Testdurchführung lag zunächst auf Komponententeststufe. Die hierfür entwickelten Unit Tests sollten zum Teil auch benutzt werden, um die Endnutzertests auf Systemteststufe durchzuführen. Da zu diesem Zeitpunkt aber lediglich eine geringe Anzahl an Unit Tests existierte, die für diesen teststufenübergreifenden Ansatz verwendbar waren, war die Testabdeckung sehr gering. Daher wurde zunächst eine manuelle Testdurchführung für den funktionalen Systemtest vereinbart. Die Testdurchführung erfolgte auf Basis eines Testkonzepts und der darauf aufbauenden Testfallspezifikationen mit entsprechenden Testdaten. Zu testende Releases wurden einmal pro Woche geliefert.

Aufgrund der Vielzahl der fachlichen Anwendungsfälle (ca. 200) und der daraus resultierenden Testfälle (ca. 800) stieß die Kapazität des Testteams für die Testdurchführung schnell an seine Grenzen, was sich wiederum in sinkender Testabdeckung niederschlug. Aus dieser Ausgangssituation heraus sollte nun eine Lösung für die möglichst weitgehende Automatisierung der Testdurchführung gefunden werden. Zusammengefasst wurden folgende Ziele und Erwartungen an die Automatisierungslösung abgestimmt:

  • Automatisierung des Regressionstests und damit Entlastung des Testteams
  • Verbesserung der Testabdeckung

Enscheidungsphase: Vorbereitung

Im Anschluss an die Entscheidung für ein neu zu implementierendes Testframework musste zunächst einmal ein geeigneter Entwickler gefunden werden. Hierfür wurde vom Testteam ein entsprechendes Anforderungsprofil erstellt, auf dessen Grundlage nach einigen Vorstellungsgesprächen ein entsprechender Entwickler gefunden und eingestellt werden konnte.

Zur zielführenden Unterstützung der Implementierung des Testframeworks erfolgte als nächster Schritt die Anpassung des bestehenden Testkonzepts, wobei die Testarchitektur von der manuellen Sicht auf eine automatisierte Sicht umgestellt wurde. Dieses ermöglichte zum einen den schnellen Einstieg des neuen Entwicklers ins Projekt. Zum anderen bildete das angepasste Testkonzept aber auch die Grundlage der Implementierung des Testframeworks, wodurch in enger Zusammenarbeit zwischen Testteam und Entwickler die Anwendbarkeit über mehrere Teststufen (Integrations- und Systemtest) sichergestellt wurde.

Einführungsphase: Durchführung

Die aus der beschriebenen Ausgangssituation resultierenden Argumente für eine entsprechende Automatisierungslösung wurden dem Projektmanagement übermittelt. Als Ergebnis sollte nun innerhalb der Entscheidungsphase eine passende Lösung gefunden werden. Hierfür erfolgte eine Suche nach bestehenden Automatisierungslösungen auf dem Markt anhand einer priorisierten Anforderungsliste. Diese gestaltete sich allerdings schwierig, wofür im Wesentlichen zwei Aspekte bzw. Anforderungen ausschlaggebend waren: hohe Komplexität der Überprüfungen und hohe Frequenz an neuen Anforderungen.

Die Komplexität der Überprüfungen bestand darin, dass sowohl Benutzeroberflächen als auch Schnittstellen (Integrationstests) und Backendsysteme getestet werden mussten. Erschwerend kam hinzu, dass erfahrungsgemäß in diesem Projekt mit einer Vielzahl von neuen, also bisher nicht spezifizierten, fachlichen Anwendungsfällen zu rechnen war. Folglich musste eine passende Automatisierungslösung einen hohen Grad an Flexibilität und Anpassbarkeit aufweisen, um über die Projektdauer verwendbar zu bleiben. Aus diesen Gründen entschied man sich letztlich gegen eine kommerzielle Lösung und für ein eigens für das Projekt zu implementierendes, flexibles Testframework.

Fazit

Die Einführung der Testautomatisierung sowie die Art und Weise der Umsetzung in diesem Projekt musste durch eine gute Argumentation begründet werden. Hätte diese Argumentation gleich zum Projektbeginn, sprich innerhalb der Projektplanungsphase, stattgefunden, hätte die angepasste Teststrategie zu einer früheren Zielerreichung (verbesserte Testabdeckung, etc.) und somit höheren Rentabilität geführt. Nichtsdestotrotz war auch die späte Einführung erfolgreich und konnte die Qualitätssicherung im permanent wachsenden Projekt verbessern, sowie zur Kostensenkung beitragen.

Entscheidender Erfolgsfaktor war hierbei die frühe und enge Zusammenarbeit zwischen Entwicklung und Testteam.

Zusammenfassung

Gemein haben die Beispiele, dass eine erfolgreiche Einführung von Testtools nur gewährleistet werden kann, wenn die Rahmenbedingungen für eine Testautomatisierung erfüllt sind.

Hinsichtlich der Prozessschritte hat sich gezeigt, dass insbesondere die Entscheidungsphase einen hohen Anteil am Erfolg des Einführungsprozesses ausmacht. Unzureichende Anforderungsdefinition an das Testautomatisierungstool stellt hierbei das größte Risiko dar, da sie im schlechtesten Fall in der Auswahl einer für das Projekt unpassenden Lösung resultieren kann, mit der die abgestimmten Ziele und Erwartungen nicht erfüllbar sind. Für den nachhaltigen Erfolg einer Testautomatisierungslösung sind aber auch Aspekte der Pflege, Wartung und Anpassung zu berücksichtigen.

Dieser Artikel ist aus der blickpunkte Ausgabe 10/2009, dem IT-Magazin der der PENTASYS AG .

Eine ausführlichere Abhandlung zu diesem Thema ist in dem PENTASYS Whitepaper mit gleichem Titel zu finden, welches per E-Mail an redaktion[at]pentasys-blickpunkte.de angefordert werden kann.


Unsere Experten


alle Experten

Premium Lösungen

Marktübersicht

Premium Services

Dienstleisterübersicht