Im dritten Teil der RFC Blogreihe Testautomatisierung haben wir uns mit den logischen und technischen Aspekten, die bei der Konzeption eines Automatisierungsframeworks zu berücksichtigen sind, beschäftigt.
In diesem Blog geht es darum, wie die Integration von Testautomatisierung in die Organisation eines Unternehmens erfolgreich gelingen kann.
Einführungskriterien
In neuen Projekten besteht die Möglichkeit, die Testautomatisierung von Anfang an einzubinden und mitwachsen zu lassen. Ein wichtiger Aspekt ist hierbei, sich ausreichend Zeit für die Festlegung der Vorgehensweise bzw. der Konzeption zu nehmen. Andernfalls besteht die Gefahr, die Automatisierung auf zu breiter Front zu beginnen und somit zu viele Baustellen zu etablieren. Gerade bei größeren Softwareprojekten, die über viele Jahre gewachsen sind, ist es wichtig, mit Teilaspekten zu beginnen und nicht ein umfangreiches Testframework im Rahmen eines „Big Bang“ einzuführen. Insbesondere wenn die Testautomatisierung Neuland für die vorhandenen Tester ist, sollte in einer möglichst homogenen Systemlandschaft eine fachlich nicht zu komplexe Anwendung in einem mittelgroßen, repräsentativen Projekt ausgewählt werden, um erste Erfahrungen zu sammeln. Bei erfolgreicher Einführung können dann weitere Projekte mit der Testautomatisierung ausgestattet werden. Diese Vorgehensweise ist zu empfehlen, wenn die Testautomatisierung im gesamten Unternehmen ausgerollt werden soll. Dabei kann auch auf verschiedenen Teststufen begonnen werden, z.B. werden zunächst nur automatisierte Komponententests aufgesetzt und ausgerollt und im nächsten Schritt automatisierte Systemtests.
Einen Spezialfall stellen Wartungsprojekte dar, da hier die Testaktivitäten meist kurzfristig eingeplant und dann an Tester aus dem Fachbereich delegiert werden. Die Testautomatisierung kann so im Rahmen der oft kleinen bis mittleren Systemänderungen aufgebaut werden und schafft mittelfristig eine Entlastung für die Fachbereiche.
Eine große Herausforderung stellt die Einführung der Testautomatisierung in laufenden Projekten dar. Dabei sind einige Aspekte zu beachten: Es ist zu entscheiden, auf welchen Teststufen mit der Automatisierung begonnen wird. Da in ein bestehendes, funktionierendes System eingegriffen wird, kann sich die Einführung kurzfristig negativ auf den Projektfortschritt und die Qualität auswirken. Zudem ist ein Paradigmenwechsel bei den Mitarbeitern notwendig, der nicht zu unterschätzen ist. Das Management ist hier gefordert, alle betroffenen Mitarbeiter einzubinden damit dieser Übergang erfolgreich gelingt. Ein weiteres Managementthema kann die Angst der Tester sein, durch die Testautomatisierung ersetzt zu werden. Diese Angst sollte aber unbegründet sein, da sich die Aufgabenschwerpunkte lediglich verschieben werden: weg von der stupiden Testdurchführung – insbesondere bei wiederkehrenden Regressionstests – hin zu anspruchsvollen, kreativen Tätigkeiten wie Testfallkonzeption und -erstellung. Aus der Rolle des Softwaretesters kann bzw. sollte sich die Rolle des Testautomatisierers entwickeln.
Die Testautomatisierung ist aber kein Allheilmittel, um einen schlecht funktionierenden Testprozess zu verbessern. Wenn kein Know-how bzgl. Testmethodik vorhanden ist oder zu wenige Testressourcen zur Verfügung stehen, bringt der Einsatz von Testautomatisierung wenig.
Die folgenden wichtigen Aspekte, sind zwingend im Rahmen der Einführung von Testautomatisierung zu berücksichtigen:
- Aufwand und Zeit einplanen
Nicht nur die Auswahl und Einführung der Werkzeuge kostet Geld und Zeit, sondern auch die Konzeption sowie die Implementierung, Auswertung und Wartung der automatisierten Testfälle
- Vorgehensweise festlegen und einhalten
Wichtig ist, sich im Vorfeld Gedanken über die Rahmenbedingungen, die Architektur bzw. das Testframework und die zeitlichen Abläufe zu machen. Es sollte auch hier eine Planungs- und Konzeptionsphase geben!
- Kosten und Nutzen bewerten
Bei der Testautomatisierung spielt das Verhältnis Kosten-Nutzen eine essenzielle Rolle. Da zu Beginn meist eine belastbare Zahlenbasis fehlt, kann zunächst nur eine grobe Schätzung erfolgen. Im Zuge der Fortschrittsüberwachung sollte laufend ein kritisches Auge auf die Testautomatisierung geworfen werden und der Nutzen gegenüber manuellen Tests bzgl. Kosten, Testumfang oder auch Qualität bewertet werden.
- Vorhandene Erfahrung nutzen
In größeren Organisationen gibt es eine Testhistorie mit erfolgreichen und gescheiterten Automatisierungsprojekten. Hier ist oftmals eine Lessons Learned-Betrachtung sehr hilfreich, um aus den gemachten Fehlern zu lernen.
- Werkzeugauswahl
Müssen neue Werkzeuge/Tools angeschafft werden, so ist für die Auswahl, Beschaffung und Einführung entsprechend Vorlauf einzuplanen. Da die Probleme beim Einsatz eines neuen Werkzeugs oft erst bei der technischen Implementierung auftreten, ist es sinnvoll, mit einigen infrage kommenden Tools einen Proof of Concept durchzuführen, um zu prüfen, ob die Werkzeuge mit der eigenen Systemlandschaft kompatibel sind. Viele Hersteller bieten hierzu eine Testversion an.
- Dokumentation
Analog zum manuellen Test, ist auch bei der Testautomatisierung ein Mindestmaß an Dokumentation zu erstellen. Hierzu gehört z.B. die Einstellungen und Konfigurationsänderungen der Testframework-Umgebung. Auch die Archivierung und Versionierung muss geplant und dokumentiert werden.
- Kommunikation
Eine gute Kommunikation zwischen den Entwicklern und den Testautomatisierern ist elementar für eine funktionierende Testautomatisierung. Die Änderungen von z.B. Schnittstellen oder Abläufen kann sich auf die Testautomatisierung auswirken. Deshalb muss den Entwicklern auch bekannt sein, welche Bereiche wie automatisiert wurden und welche Abhängigkeiten bestehen.
- Test der Testautomatisierung
Ein automatisierter Testfall verschwindet oft im Testset der durchzuführenden Testfälle und fällt damit schnell – anders als bei manueller Durchführung – aus dem Fokus der Tester. Deshalb müssen automatisierte Testfälle sorgfältig konzipiert, vor Einsatz sehr gründlich getestet und danach regelmäßig bzgl. Relevanz und Änderungsbedarf überprüft werden.
- Innovation
Testautomatisierung erfährt aktuell einen starken Innovationsschub. Das hat Auswirkungen auf die Vorgehensweise und die eingesetzten Technologien. Deshalb ist es wichtig, Raum zum Ausprobieren (Spielwiese) zu lassen.
Bei Testanalysten und Testern sind Kenntnisse von Programmier- und Scriptsprachen nicht zwingend nötig. Oft wird sogar gerade die Unabhängigkeit von der Entwicklung als Vorteil angesehen. Der Testautomatisierer muss dagegen sowohl die Fähigkeiten eines Testers als auch eines Entwicklers mitbringen. Dabei ist wichtig, dass ein Testautomatisierer seine Rolle vollumfänglich wahrnimmt und diese nicht als Nebentätigkeit betrachtet. Die folgenden Aufgaben und Skills beinhaltet die Rolle des Testautomatisierers:
- Fähigkeit, eine Architektur und ein Design für ein Automatisierungsframework zu entwerfen
- Experte für das Automatisierungsframework
- Konzeptionelles und planerischen Denkvermögen für die Konzipierung der Testautomatisierung
- Testerfahrung für den Testfallentwurf, der Testfallerstellung und der Testdurchführung
- Sehr gute Kenntnisse bzgl. der eingesetzten Programmier- und Scriptsprachen
Wie die Zusammenarbeit zwischen Testanalyst, Tester und Testautomatisierer aussehen kann, zeigt der folgende Ablauf:
Wichtiges Element ist die Kommunikation zwischen den Beteiligten, die insbesondere durch räumliche Nähe gefördert wird.
Testwerkzeugauswahl
Generell sind bei der Werkzeugauswahl die folgenden Schritte zu beachten, um eine fundierte Entscheidung herbeizuführen:
- Grundsätzliche Entscheidung über den Einsatz eines Werkzeugs
- Identifikation der Anforderungen
- Evaluation
- Auswertung und Auswahl
Die folgenden Kriterien sind bei der Identifikation der Anforderungen an das Testwerkzeug u.a. zu betrachten:
- Unterstützte Technologien
- Integration in die Werkzeug- bzw. Systemlandschaft
- Lizenzmodell und Teststellung (für Proof of Concept)
- Dokumentation, Schulungen und Support
- Möglichkeiten der Testfallbeschreibung und Modularisierung
- Zielgruppe (Skills der Anwender)
Im Rahmen der Evaluation kann beispielsweise wie folgt vorgegangen werden:
- Vorbereitung von Testszenarien
Auswahl einiger sowohl fachlicher als auch technischer repräsentativer zu testende Szenarien
- Vorbereitung eines Testsystems
Auswahl eines Testrechners mit den Leistungsmerkmalen des späteren Einsatzsystems
- Installation des Testwerkzeugs
Nach der Installation empfiehlt sich die Erstellung eines Arbeitsbereichs für die Evaluation
- Erstellung des ersten Testszenarios
Dokumentation von zu beachtenden Besonderheiten (àLeitfaden)
- Refactoring des ersten Testszenarios
Einbeziehung von daten- und ablaufgetriebenen Varianten und Modularisierung
- Erstellung weiterer Testszenarien
Einbeziehung der gemachten Erfahrung und Ergänzung des Anwenderleitfadens
- Integration in den Entwicklungsprozess
Prüfung der Integration mit anderen Werkzeugen, z.B. in den Bereichen
- Testmanagement (u.a. Fehlermanagement und Berichtswesen)
- Change- und Releasemanagement
- Versionierung
- Abschluss
Ergebnisdokumentation, um die Nachvollziehbarkeit der Werkzeugauswahl zu gewährleisten
Die Automatisierungswerkzeuge lassen sich in die folgenden Kategorien einteilen:
- Kommerzielle Werkzeuge
z.B. HP Unified Functional Testing (UFT), IBM Rational Functional Tester oder Microsoft Visual Studio
- Open-Source-Werkzeuge
z.B. Selenium, Canoo Webtest, oder xUnit
- Eigenentwicklungen
Fazit
Wichtig ist es, für die Einführung genügend Zeit für die Auswahl, Implementierung und Justierung einzuplanen und die Rahmenbedingungen eindeutig zu definieren sowie die Vorgehensweise festzulegen und zu dokumentieren. Insbesondere für die Werkzeugauswahl ist ausreichend Vorlauf zu berücksichtigen. Ebenso wichtig ist es, die vorhandenen Erfahrungen in der Organisation bei der Integration eines neues Testframeworks einzubeziehen und die betroffenen Bereiche des Unternehmens frühzeitig in den Auswahl- bzw. Einführungsprozess einzubeziehen.
Grundlage für eine erfolgreiche Testautomatisierung ist eine umfassende Analyse und Dokumentation der erforderlichen Testszenarien. Hierzu ist eine enge Zusammenarbeit zwischen Testanalyst, Tester und Testautomatisierer erforderlich. Dabei müssen die einzelnen Prozessschritte von der Testfallerstellung bis zur automatisierten Testdurchführung allen Beteiligten transparent dargestellt werden.
Da auch die Kosten immer ein essenzielles Thema sind, sollte fortlaufend das Kosten-Nutzen-Verhältnis kritisch evaluiert werden. Der Ansatz „Outsourcing“ kann bereits als überholt angesehen werden. Der Einsatz vieler, vermeintlich günstiger Arbeitskräfte erfordert vorab ein hohes Investment für die nachfolgenden Auslagerungen:
- Outsourcing der Testdurchführung → umfassend und präzise formulierte Testfälle
- Outsourcing der Testfallerstellung und Durchführung → sehr präzise formulierte Spezifikationen
Eine Kosten-Nutzen-Analyse zeigt i.d.R., dass sich dieser Ansatz mittelfristig nicht rechnet. Daher geht der Trend in Richtung Automatisierung von manuellen Tätigkeiten; zunächst in der Testdurchführung und zukünftig auch im Testentwurf und der Testfallspezifikation. Derzeit ist die Automatisierung meistens eine Aufgabe für Spezialisten. Für die erforderlichen Fähigkeiten eines Testautomatisierers ist ein fundiertes Wissen bzw. eine gute Ausbildung erforderlich. Viele Schulungen werden von den Herstellern der Testwerkzeuge und Dienstleistern angeboten. Ein Weg in Richtung Standardisierung der Ausbildung zum Testautomatisierer geht das ISTQB® (International Software Testing Qualifications Board) mit dem „Certified Tester Expert Level – Test Automation“.
Die manuellen Tätigkeiten in den Bereichen Entwicklung und Wartung sind ressourcenintensiv und haben eine hohe Abhängigkeit zu den Werkzeugherstellern und Technologien. Wichtig sind zukünftig Standardisierungen auf einer logisch-fachlichen Ebene, eine Trennung der fachlichen und technischen Schicht sowie die programmierungsunabhängige Generierung der automatisierten Testfälle.
Ausblick:
Im fünften Teil der RFC Blogreihe zum Thema Testautomatisierung beschäftigen wir uns mit den Einsatzgebieten der Testautomatisierung.
__________________________________________________________________________________
Übersicht aller Blogs unserer RFC Blogreihe Testautomatisierung
Blog 2: Der Testprozess – Aspekte der Automatisierung
Blog 3: Was ist bei der Konzeption eines Automatisierungsframeworks zu beachten?
Blog 4: Wie funktioniert die Integration in die Organisation?
Blog 5: Welche Einsatzmöglichkeiten gibt es für die Testautomatisierung?
Blog 6: Testautomatisierung – Best Practices
Gefällt Ihnen unsere Blogreihe, haben Sie Anmerkungen oder neue Ideen? Dann freuen wir uns, wenn Sie uns kontaktieren.
Quelle: Basiswissen Testautomatisierung, dpunkt.verlag