Testautomatisierung – praktisches Feedback

Januar 2020

Test Automatisierung

[toc] Automatisierte Softwaretests sind Teil des Testprozesses in der Qualitätskontrolle Phase des Softwareentwicklungsprozesses. Testautomatisierung verwendet Software zum Ausführen von Tests und zum Überprüfen der Ergebnisse, wodurch die Testzeit verkürzt und der Prozess vereinfacht wird. Die ersten Versuche zur „Automatisierung“ wurden im Zeitalter von DOS- und CP / M-Betriebssystemen unternommen. Anschließend wurden Befehle über die Befehlszeile an die Anwendung ausgegeben und die Ergebnisse analysiert. Etwas später wurden Remote-Aufrufe über API hinzugefügt. Zum ersten Mal wird das automatisierte Testen im Buch Mythical Man-Month von Frederick Brooks erwähnt, in dem über die Aussichten der Verwendung von Unit-Tests gesprochen wird. Doch erst in den 1980er Jahren begann sich eine echte Testautomatisierung zu entwickeln.

Die Ansätze der Test-Automatisierung

Es gibt zwei Hauptansätze für die Test-Automatisierung: Testen auf Codeebene und auf der Benutzeroberfläche. Der erste Typ umfasst insbesondere Einheitentests. Der Zweite - Nachahmung von Benutzeraktionen - Funktionstests (unter Verwendung spezieller Test-Frameworks.)

GUI-Automatisierung

Die häufigste Form der Automatisierung ist das Testen von Anwendungen über eine grafische Benutzeroberfläche (englisch GUI). Die Beliebtheit dieser Art von Tests erklärt sich aus zwei Faktoren: Erstens wird die Anwendung auf die gleiche Weise getestet, wie sie von anderen verwendet wird. Zweitens können Sie das Programm durchgehen, ohne Zugriff auf den Quellcode zu haben. Die GUI-Automatisierung hat sich über 4 Generationen von Tools und Techniken entwickelt.
  1. Generation: Die Aufnahme- / Wiedergabewerkzeuge zeichnen die Aktionen des Testers während des manuellen Tests auf. Sie ermöglichen es Ihnen, Tests über einen langen Zeitraum ohne direkte menschliche Beteiligung durchzuführen, was die Produktivität erheblich steigert und die „stumpfen“ Wiederholungen der gleichen Abhandlungen während händischer Tests beseitigt. Gleichzeitig erfordert jede kleine Änderung in der getesteten Software das Umschreiben manueller Tests. Daher ist diese erste Generation von Tools weder effizient noch skalierbar.
  2. Generation: Scripting ist eine Form der Programmierung in Sprachen, die speziell für die Automatisierung von Softwaretests entwickelt wurde - sie verringert viele Probleme bei Aufnahme- und Wiedergabe-Tools. Die Entwicklung wird jedoch von hochrangigen Programmierern durchgeführt, die getrennt von Testern arbeiten, die Tests direkt ausführen. Darüber hinaus eignen sich Skripte am besten zum Testen von GUIs und können nicht eingebettet, gebündelt oder in irgendeiner Weise in ein System integriert werden. Schließlich erfordern Änderungen an der getesteten Software komplexe Veränderungen an den entsprechenden Skripten, und die Unterstützung einer ständig wachsenden Bibliothek von Testskripten wird zu einer unüberwindlichen Aufgabe.
  3. Generation: Datengetriebenes Testen ist eine andere Methode, die in der Test-Automatisierung verwendet wird. Die Besonderheit ist, dass Testskripte auf der Grundlage von Daten ausgeführt und überprüft werden, die in einem zentralen Data Warehouse oder einer Datenbank gespeichert sind. Die Datenbankrolle kann von ODBC-Ressourcen, CSV- oder XLS-Dateien usw. durchgeführt werden. Datengesteuertes Testen ist eine Kombination aus mehreren interagierenden Testskripten und deren Datenquellen in dem in der Methodik verwendeten Framework. In diesem Framework werden Variablen sowohl für Eingabewerte als auch für Ausgabetestwerte verwendet: In einem Testskript werden die Anwendungsnavigation, das Lesen von Datenquellen und das Verwalten von Testprotokollen normalerweise codiert. Somit hängt die Logik, die im Skript ausgeführt wird, auch von den Daten ab.
  4. Generation: Beim schlüsselwortbasierten Automatisierungstest wird der Prozess der Fallerstellung in zwei Phasen unterteilt: die Planungsphase und die Implementierungsphase. In diesem Fall ist der Abschlusstest kein Programmcode, sondern eine Beschreibung der Abfolge der Aktionen mit ihren Parametern (z. B. "Eingabe in die Benutzerdatenbank mit XXX-Benutzernamen und JJJ-Passwort"). Gleichzeitig ist das Framework für die direkte Implementierung von Schlüsselwörtern (Handlungen) verantwortlich. Es reicht aus, wenn der Testdesigner eine Vorstellung von der Gesamtheit der im Framework implementierten Aktionen hat. Auf diese Weise können Tests für Personen erstellt werden, die keine Programmierkenntnisse haben.

Wann und warum ist eine Einführung einer Test-Automatisierung sinnvoll?

Automatisiertes Testen ist keine Voraussetzung für die Erstellung hochwertiger Software. Die Test-Automatisierung ist jedoch hilfreich für komplexe Programme mit einem höheren Anteil an Regressionstests (wiederholte Tests). Grundsätzlich deutet ein gewisser Grad an Regressionstests auf eine Test-Automatisierung hin. Wenn sich andererseits die Software (zum Beispiel in den frühen Phasen des Entwicklungsprozesses) sehr schnell und konstant ändert, ist die Test-Automatisierung möglicherweise nicht die beste Wahl, da die Kosten für die Wartung einer Test-Automatisierung zu hoch sein können. Insbesondere im Zuge einer agilen Entwicklung mit Test-Automatisierung ist dies fast unmöglich. Die meisten Best Practices stimmen darin überein, dass automatisierte Tests eine äußerst nützliche Ergänzung zu kürzeren Iterationen darstellen. Somit können Tests auch über Nacht ausgeführt werden, sie können ebenso automatisiert nach jeder Coderegistrierung durchgeführt werden, einschließlich des automatischen Erstellungsprozesses. Die Anwendung automatisierter Tests kann den Entwicklungsprozess grundsätzlich immer unterstützen, die Frage ist nur, zu welchem ​​Preis. Da eine solche Verwendung und die anfängliche Entwicklung einer Reihe von Testfällen natürlich auch die Aufwendungen in der Anfangsphase erheblich erhöht. In vielen Fällen sind die Einsparungen an anderen Stellen in der Testgruppe jedoch viel höher und die Qualitätsverbesserung spürbar. Die Automatisierung macht Testfälle wiederholbar und kann ohne Qualitätseinbußen und mit geringem oder ohne zusätzlichen Aufwand beliebig oft und zu jeder Zeit durchgeführt werden. Dies macht sie besonders für große und langfristige Projekte geeignet, bei denen viele Baugruppen viel Zeit in Anspruch nehmen. Auf diese Weise erhalten Entwickler ein regelmäßiges Feedback zur Qualität ihrer Arbeit und können Probleme schnell erkennen. Sie sind nicht auf langwierige manuelle Tests beschränkt, die zeitaufwendiger und fehleranfälliger sind als ein automatisierter Prozess, da sie manuell durchgeführt werden. In längeren Entwicklungszyklen werden so umfangreiche Testfälle definiert und immer wieder verwendet, was in einem rein händischen Testmodus mit einer Vielzahl von Testfällen nicht möglich gewesen wäre. Neben der Frage, für welche Projekte und in welchen Situationen automatische oder manuelle Testverfahren sinnvoller sind, sollten Sie sich überlegen, welche Testarten am besten unterstützt werden. Während Unit-Tests und Funktionstests (Whitebox) häufig auf manueller Qualitätskontrolle beruhen, können Regressionstests, Lasttests und Leistungstests stark von der Automatisierung sowie von datenorientierten Tests profitieren.

Wann ist Test-Automatisierung sinnvoll?

Test-Automatisierung wird immer dann empfohlen, wenn beim Entwickeln und Bereitstellen von Software Geschwindigkeit erforderlich ist und Ressourcen gespart werden müssen. Das automatisierte Testen erfordert nur einen Bruchteil der Zeit und des Aufwands für das Testen. Bevor Sie mit der Automatisierung beginnen, sollten Sie den aktuellen Zustand Ihrer Systeme sorgfältig untersuchen und anhand der gewonnenen Erkenntnisse den Zweck und die Anforderungen genau bestimmen. Nach dem Start durchlaufen automatisierte Tests denselben Zyklus (Regressionstests). Auf diese Weise können Sie die Qualität der Software messen und sofort Fehler beheben. So erhalten Entwickler ohne manuelle Eingriffe einen schnellen Überblick über die gesamte Software.

Vor- und Nachteile der Test-Automatisierung

Die Test-Automatisierung vereinfacht und beschleunigt die Fehlersuche. Wenn das Testen der Software automatisiert wird, wird Kapazität für andere Aufgaben frei. Dies kann eine Herausforderung für Tester darstellen, da es oft mühsam und fehleranfällig ist, diese Aufgabe manuell auszuführen. Häufige Wiederholungen desselben Vorgangs erfordern ein hohes Maß an Genauigkeit und sind als ausgeführte Wiederholungsaufgabe der Maschine vorgegeben. Durch die Automatisierung dieser Routineaufgaben können sich die Mitarbeiter auf komplexere Aspekte der Qualitätsbewertung konzentrieren, die mehr Kreativität beanspruchen, beispielsweise die Risikoanalyse. Vordefinierte Designteams, die sowohl für Tests als auch für funktionsübergreifende Tests konfiguriert sind, sind erfahrungsgemäß die beste Lösung. So kann eine Person über den Tellerrand hinaus denken. Dies kommt der Kommunikation und der Teamarbeit zugute. Es gibt viele Halbwahrheiten und Mythen in Bezug auf die Test-Automatisierung. Beginnen wir also mit den Vorteilen der Test-Automatisierung. Test-Automatisierung ist immer eine ernsthafte Investition, auch wenn von Zeit zu Zeit darüber etwas anderes behauptet wird. Automatisiertes Testen erfordert neben den möglichen Kosten für eine Softwarelizenz viel Zeit und Energie. Das Gute an der Investition in die Test-Automatisierung ist, dass sich daraus ergibt, wie viele Geschäftsvorgänge korrekt ausgeführt wurden. Die Ausgabe des Automatisierungstests kann, durch den Wert des ROI ausgedrückt werden (Return on Investment). Im Moment sollten wir nicht über Indikatoren aus Test-Automatisierungsprojekten philosophieren oder theoretische Anhaltspunkte berechnen, da sich viele Leute bereits damit befasst haben. Der Return on Investment kann in der Test-Automatisierung nicht vollständig von einem Projekt auf ein anderes übertragen werden, da es viele einflussreiche Faktoren gibt. Wie der Name schon sagt, geht es in diesem Artikel um praktisches Feedback, das für jedes Teammitglied bei erfolgreicher Test-Automatisierung greifbar ist und nur schwer in Zahlen ausgedrückt werden kann.

Wie drückt sich die Zufriedenheit der Tester in Bezug auf die Leistung verlässlich aus?

  1. Weniger Fehler und mehr Kunden. Mit der richtigen Test-Automatisierungslösung können Sie viele Defekte schneller finden und vor der Veröffentlichung beheben. Die Minimierung von Softwarefehlern ist das Hauptziel eines jeden Qualitätssicherungsprozesses: Je weniger Fehler in der Software vorliegen, desto zufriedener sind die Kunden.
  2. Stabilere Softwaretestautomatisierung sorgt für größere Softwarestabilität. Ein Skript, das täglich ausgeführt wird, erkennt mit höherer Wahrscheinlichkeit Probleme bei Software-Abweichungen als ein Handheld-Tester, der alle drei Monate vor der Veröffentlichung Regressionstests durchführt.
  3. Die Kostensenkung. Dieser Punkt besteht aus zwei Punkten. Einerseits ist die automatische Qualitätssicherung bei einer bestimmten Wiederholungsrate wesentlich kostengünstiger als die manuelle Sicherung der Qualität. Andererseits definiert eine gute Test-Automatisierungslösung Fehler relativ früh, und je eher der Defekt erkannt wird, desto geringer sind die Kosten für die Fehlerbehebung für das Unternehmen.
  4. Testbedingungen. Automatische Testfälle können sofort nach jedem Versionswechsel ausgeführt werden und berichten in kürzester Zeit über die Qualität der Softwareversion.
  5. Vereinbarte (24/7) automatisierte Skripte können rund um die Uhr durchgeführt werden.
  6. Vermeidung von Betriebsblindheit. Automatisierte Tests testen unermüdlich bestimmte Funktionen. Bei Funktionstestern, insbesondere bei solchen mit monotonen/langweiligen Aufgaben, kann „Fehler-Blindheit“ mit einer exakten Wiederholungsrate festgestellt werden.
  7. Mehr Zeit für neue Funktionen. Wenn sich hoch qualifizierte Funktionstester nicht um die Überprüfung alter Direktionen in langweiligen Regressionstests kümmern müssen, haben Sie mehr Zeiträume, um frische Funktionalitäten und Anforderungen anzuwenden.
  8. Zufriedenstellendere Funktionstester. Niemand möchte einen ganzen Tag damit verbringen, wiederholende Aktivitäten durchzuführen. Diese Aufgabe wird von den manuellen Testern entfernt, damit sie mehr Zeit für interessante Aufgaben haben.
  9. Verbesserung der Softwareverfügbarkeit. Durch die Automatisierung von Bodentests ist es einfach festzustellen, ob auf der Benutzeroberfläche angezeigte Informationen verfügbar sind. Dies sichert die Verfügbarkeit.

Weitere Vor- und Nachteile automatisierter Softwaretests

Das Testen von Software war eine eigenständige Disziplin in der Ingenieurswelt. Der Schwerpunkt der Programm-Qualität liegt daher auf dem Thema Test-Automatisierung. Zunächst werden sogenannte Regressionstests durchgeführt, einschließlich Tests, die wiederholt werden, wenn ein neues Software-Update erforderlich ist. Dies ist bei einiger Software bis zu sieben Mal im Jahr der Fall. Die DFS - Deutsche Flugsicherung GmbH bearbeitet jedes Mal rund 9.000 Testfälle und 81.000 Testschritte.

Qualitätsverbesserung muss stimmen

Aber es gibt Risiken: „Automatisierung macht nur Sinn, wenn sie mehr Aufwand reduziert als sie verursacht“. Die Steigerung der Qualität im Vergleich zur manuellen Regression ist auch wichtig für die Beurteilung der Kosten und des Nutzens der Implementierungsqualität. „Außerdem müssen Automatisierungstools in der Praxis nur einmal gezeigt werden, inwieweit sie das Testen von grafischen Benutzeroberflächen unterstützen, ob sie von der Anwendung verwendet werden können und ob sie das Management steuern. Automatisierungstools sind so gut wie nie einfach zu entpacken und sofort zu verwenden. Manchmal ist die Test-Automatisierung nicht sinnvoll, da die Einsparungen durch Investitionen ausgeglichen werden. Wie viel Aufwand ist bei jedem Testverfahren zu erwarten? Und welchen Nutzen bekomme ich dafür? Auch wenn die Berechnung von Kosten und Gewinn nicht positiv ausfällt, gibt es immer viele Möglichkeiten die Testautomatisierungstools anzupassen.

Aufbau der Test-Automatisierung und Testwerkzeuge

Es gibt einen großen Markt für kommerzielle und Open-Source-Testautomatisierungstools. Darüber hinaus bestehen verschiedene Strategien zum Anpassen der Test-Automatisierung, von der Implementierung vorhandener Test- und Optimierungstools bis hin zur vollständig internen Entwicklung eines exhaustiven Test-Automatisierungstools und einer Testautomatisierung Infrastruktur. Generell erfordert die Herausbildung der Test-Automatisierung immer Erfahrung in der Software-Entwicklung und Programmierung. Geschäftsziele und -strategien für die Test-Automatisierung. Bei einer guten Test-Automatisierung sollte jedoch ein kleiner Teil der Testautomatisierungs-Personals programmieren können. Der Einsatz von Methoden auf Basis von Schlüsselwörtern und Daten kann extern mithilfe von „Schlüsselwörtern“ automatisiert werden. Dies kann eine grafische Benutzeroberfläche (GUI) umfassen, sodass Tester einfach und effizient grafische automatisierte Tests erstellen können. Es ist wichtig, die gewünschte Granularität der Schlüsselwörter durch eine umfassende Analyse zu bestimmen. Ein schlüsselwortbasierter Ansatz bietet auch enorme Servicevorteile. Die Wartung der Test-Automatisierung wird häufig unterschätzt, da Testautomatisierungssysteme ständig aktualisiert werden müssen. Im Allgemeinen sollten Änderungen an der Software an möglichst wenigen Stellen vorgenommen werden. Ein gutes Beispiel hierfür ist der „Einstieg“ in eine Softwareanwendung. Dieser Schritt des "Log-in" -Tests wird später in den meisten Testfällen nützlich sein, aber niemand möchte beim Ändern des "Log-in" Hunderttausende von Testfällen ändern. Dazu muss eine Testautomatisierungslösung intelligent strukturiert sein.

Zurück