Seminare der PW-Akademie

Automation Testing

Was sind die Automation Testing Grundlagen?

Nach dem International Software Testing Qualifications Board ISTQB (2019) bezeichnet Automation Testing (auch Testautomatisierung genannt) „das Testen (Prüfen) von Software mittels spezieller Werkzeuge oder Software und umfasst eine oder mehrere der folgenden Aufgaben:

  • Steuerung und Erfüllung von Vorbedingungen
  • Ausführung von Tests
  • Vergleich der tatsächlichen mit den erwarteten Ergebnissen.“

Weiterhin unterstützt ein Automation Testing die einheitliche und wiederholte Ausführung von Testfällen gegen verschiedene Versionen des Systems unter Test und/oder in verschiedenen Umgebungen (ISTQB, 2019).

Welchen Vor- und Nachteile von Automation Testing?

Automation Testing bezieht sich auf den Prozess der Verwendung von Softwaretools zur Ausführung von Testfällen, die normalerweise manuell durchgeführt werden. Es ist eine Art von Software-Testing, bei dem spezielle Tools und Frameworks eingesetzt werden, um den Testprozess zu automatisieren.
Automatisiertes Software Testing hat viele Vorteile, darunter gehören die Verbesserung der Testqualität, die Reduzierung von Fehlern und menschlichem Versagen (z.B. Bedienfehler), die Einsparung von Zeit und Ressourcen sowie die Verbesserung der Gesamteffizienz von Software-Entwicklungsprojekten. Dazu zählt auch, dass Testressourcen effektiv und effizienter genutzt werden, und die Konsistenz der Tests verbessert wird.

Es gibt dennoch Nachteile und Beschränkungen des Automatisierten Testens. Nachteilig ist, dass zusätzliche Kosten anfallen und der Bedarf an zusätzlicher Technologien und Wartung berücksichtigt werden muss. Automatisiertes Testen könnte auch von den Testzielen ablenken, z.B. durch Konzentration auf die Automatisierung von Testfällen statt auf die Ausführung von Tests. Zudem können zusätzliche Fehler durch die Automatisierung entstehen.

Zu den Beschränkungen des Automatisierten Testens gehören die fehlende Anwendbarkeit bei nicht maschineninterpretierbaren Ergebnissen, wie z.B. bei manuellen Tests. Des Weiteren stellt das automatisierte Testen keinen Ersatz für exploratives Testen dar.

Wie funktioniert automatisiertes Testen?

Das automatisierte Testen wird in der Regel in mehreren Schritten durchgeführt:

  • Planung: In diesem Schritt werden die zu testenden Funktionen oder Anforderungen identifiziert und Testfälle erstellt, um sicherzustellen, dass die Software gemäß den Anforderungen funktioniert.
  • Aufnahme: Das Testskript oder die Testfälle werden in eine Automation Testing Software eingefügt. Die meisten Automation Testing Tools haben die Möglichkeit, Testskripte aufzuzeichnen, indem Interaktionen mit der Benutzeroberfläche des Systems aufgenommen werden.
  • Erstellung von Testskripten: In diesem Schritt werden die Testfälle oder -skripte erstellt. Das können beispielsweise Skripte sein, die die Benutzeroberfläche eines Programms simulieren oder Daten automatisch in eine Datenbank oder API einfügen.
  • Ausführung: Sobald die Testskripte erstellt wurden, kann der Testprozess automatisiert werden. Das Test-Tool führt die Tests durch und generiert einen Bericht über das Ergebnis.
  • Überprüfung der Ergebnisse: Die Ergebnisse werden überprüft, um sicherzustellen, dass die Software wie erwartet funktioniert.
  • Wiederholung: Automatisierte Tests können jederzeit wiederholt werden, um sicherzustellen, dass das System bei Änderungen oder Updates immer noch korrekt funktioniert.

Die meisten Automation Testing Tools bieten eine Möglichkeit, Tests mit unterschiedlichen Dateneingaben und Umgebungen zu skalieren und parallel auszuführen. Dadurch kann die Effizienz des Automation Testing verbessert werden, indem mehrere Tests gleichzeitig ausgeführt werden.

Welches Ziel hat das Automation Testing?

Das Ziel des Automatisierten Testens ist es, die Qualität und Effizienz von Tests zu verbessern, indem manuelle Interaktionen minimiert und die Wiederholbarkeit der Tests verbessert werden.
Hier sind einige der Ziele des Automatisierten Testens:

  • Effizienz: Automatisierte Tests können schneller ausgeführt werden als manuelle Tests und ermöglichen es Testern, mehr Tests in kürzerer Zeit durchzuführen.
  • Wiederholbarkeit: Automatisierte Tests können jederzeit wiederholt werden, um sicherzustellen, dass das System bei Änderungen oder Updates immer noch korrekt funktioniert.
  • Genauigkeit: Automatisierte Tests minimieren die Möglichkeit von menschlichem Versagen und reduzieren die Anzahl der falsch-positiven oder falsch-negativen Ergebnisse.
  • Skalierbarkeit: Automatisierte Tests können mit minimalen Ressourcen schnell und einfach skaliert werden, um verschiedene Anwendungsfälle zu unterstützen.
  • Zeitersparnis: Automatisierte Tests reduzieren die Zeit, die für manuelle Tests benötigt wird, und ermöglicht es Entwicklern und Testern, sich auf andere Aufgaben zu konzentrieren.
  • Konsistenz: Automatisierte Tests gewährleisten eine hohe Konsistenz bei der Durchführung von Tests und reduzieren die Möglichkeit von menschlichen Fehlern oder Unregelmäßigkeiten bei der Durchführung von Tests.
  • Frühes Feedback: Automatisierte Tests bieten Entwicklern und Testern frühes Feedback auf Probleme, was zu einer verbesserten Qualität der Software und einer schnelleren Markteinführung führt.

Wo kann ein automation Testing angewendet werden?

Automatisiertes Testen kann in einer Vielzahl von Softwareentwicklungsprojekten angewendet werden, einschließlich:

  • Unit-Tests: Automatisierte Tests, die einzelne Methoden und Funktionen innerhalb des Codes prüfen.
  • Integrationstests: Automatisierte Tests, die prüfen, ob die verschiedenen Komponenten einer Anwendung korrekt zusammenarbeiten.
  • Funktionstests: Automatisierte Tests, die prüfen, ob die Anwendung die erwarteten Funktionen bereitstellt und korrekt auf Eingaben reagiert.
  • Regressionstests: Automatisierte Tests, die prüfen, ob die Anwendung nach Änderungen oder Updates immer noch korrekt funktioniert.
  • Last- und Performance-Tests: Automatisierte Tests, die prüfen, wie gut die Anwendung unter bestimmten Lastbedingungen funktioniert.
  • API-Tests: Automatisierte Tests, die prüfen, ob die API-Kommunikation zwischen Anwendungen korrekt funktioniert.
  • Sicherheitstests: Automatisierte Tests, die prüfen, ob die Anwendung sicher und gegen Bedrohungen geschützt ist.

Generell kann Automatisiertes Testen überall dort eingesetzt werden, wo manuelle Tests eingesetzt werden können, und es kann in allen Phasen des Softwareentwicklungslebenszyklus verwendet werden. Darüber hinaus können automatisierte Tests verwendet werden, um hochgradig wiederholbare funktionale Testfälle auszuführen oder zu automatisieren.

Es ist jedoch wichtig zu beachten, dass nicht alle Tests automatisiert werden sollten. Bestimmte Arten von Tests, wie explorative Tests oder Usability-Tests, sind besser manuell durchzuführen, da sie ein hohes Maß an menschlicher Urteilsfähigkeit erfordern. Automation Testing sollte als Ergänzung zu manuellen Tests betrachtet werden, um die Effizienz und Genauigkeit von Tests zu verbessern.

Welche Tools eignen sich zum Automation Testing?

Es gibt viele Tools, die für das automatisierte Testen eingesetzt werden können. ECU-TEST ist eine Automation Testing Software für die Validierung von eingebetteten Systemen im Automobilbereich. Das Werkzeug führt Regressionstests durch, die für die Validierung komplexer technischer Produkte wie z.B. elektronischer Steuergeräte (ECUs) essentiell sind. ECU-TEST kann sowohl während der Produktentwicklung als auch während der Qualitätskontrolle in der Produktion selbst eingesetzt werden. (ASAM, 2017)

TestWeaver ist eine intelligente Automation Testing Lösung, die Systemtests erstellt und ausführt, um Fehler zu erkennen und eine hohe Testabdeckung bei geringem Spezifikationsaufwand zu erreichen (Synopsys, 2019). Mittels Testweaver kann das klassische Automation Testing durch Tausende von computergenerierten Szenariovariationen ergänzt werden. Als Ergebnis werden selbstlernende Algorithmen verwendet, um die Abdeckung folgender Punkte zu maximieren: Hardware-Zustände, Software-Zustände, Umgebungsbedingungen, Fahrer-Manöver, Parameter-Toleranzen, Komponenten-Fehler
Beispiele für kommerzielle Tools im Bereich HIL-Tests sind EXAM der Firma MicroNova, AutomationDesk der Firma dSPACE, ECU-TEST der Firma TraceTronic und iTestStudio der Firma iSyst. Manche firmeninterne Lösungen sind erwähnungswert wie TA2 und TA3 der Continental AG. (Trenkel, 2016).

Nach der Association for Standardization of Automation and Measuring Systems (ASAM, 2017) sind weitere Tools wie TPT, TesteeM, TestWork von der Firma HORIBA FuelCon GmbH, NI TestStand der Firma National Instruments Corporation.
Des Weiteren wird, im Automotive-Bereich, Python für die Testausführung verbreitet zum Einsatz verwendet. Durch Python als Sprache lassen manche kommerziellen Tools ihre Debug-Möglichkeiten zu.

Bei der Auswahl von Automation Testing Tools ist folgendes wichtig: die Benutzerfreundlichkeit, die Kosten und die unterstützende Plattformen. Außerdem ist es wichtig, vor der Entscheidung, das Testen zu automatisieren, dafür zu sorgen, dass kompetente Mitarbeiter für die Arbeit mit Automation Testing Tools vorhanden sind.

Was muss man noch über Automation Testing Wissen?

Bevor es auf Automation Testing umgestellt wird, muss der aktuelle Zustand der manuellen Tests bewertet werden und der effektivste Ansatz für die Automatisierung der Testressourcen ermittelt werden. Es ist zu empfehlen, dass die manuelle Teststrategie bereits so umgesetzt werden sollte, dass sie durch ihre Struktur eine spätere Automatisierung berücksichtigt. Vor dem Starten des automatisierten Testens sollen die Sinnvolligkeit und die Durchfürhbarkeit des Test im Vergleich zu manuellen Tests mit folgenden Eignungskriterien geprüft werden:

  • Verwendungshäufigkeit
  • Komplexität der Automatisierung
  • Werkzeugunterstützung
  • Reifegrad des Testprozesses
  • Steuerbarkeit des Systems unter Test
  • Proof of Concept
  • Anforderungsstabilität
  • Lebenszyklus des Systems unter Test

Es ist wichtig, eine korrekte Erwartungshaltung zu haben und die üblichen überzogenen Geschichten oder Anpreisungen über Automation Testing zu vermeiden, um ein späteres Misstrauen der Beteiligten in die Entscheidungsfähigkeit des Testmanagers zu vermeiden.
Häufige Missverständnisse über Automation Testing lauten wie folgt:

  • Tester werden nicht mehr benötigt, sobald Automation Testing erreicht sind.
  • Es ist möglich, eine hundertprozentige Automatisierung zu erreichen.
  • Das Ausführen von Testfällen durch Automatisierung erfordert nur einen einzigen Klick.
  • Automation Testing helfen, mehr Fehler zu finden.
  • Automatisiertes Testen ist immer besser als manuelles Testen.

Außerdem ist es wichtig zu wissen, dass Automation Testing auch bei der Entwicklung mobiler Apps eingesetzt wird, um verschiedene Funktionen der mobilen Anwendungen zu testen. Mobile Automation Testing beinhaltet die Verwendung von Automation Testing, um die Ladezeit, die Benutzererfahrung, die Benutzerfreundlichkeit der Funktionen, die Zugänglichkeit, die Sicherheit und die Leistung der Apps in verschiedenen Browsern, Betriebssystemen und zahlreichen mobilen Geräten zu testen.

Darüber hinaus wird maschinelles Lernen in Automatisierungstools eingesetzt, um die Qualitätssicherungserfahrung zu verbessern. Künstliche Intelligenz kann und wird bei der Generierung von Unit Tests für existierende Codes eingesetzt. Dennoch sind die Herausforderungen geringer und die Entwicklungskosten sowie die Instandhaltungskosten sind mehr bei der Generierung von System Tests sowie bei Tests an der Benutzerschnittstelle als bei den Unit Tests. Der Grund ist, dass eine einfache und kleine Änderung an der Benutzerschnittstelle oft dazu führen kann, dass viele Systemtests nicht mehr korrekt ausgeführt werden können. Deswegen sind noch unvorhergesehene Ansätze zur Anwendung der künstlichen Intelligenz im Bereich automatisiertes Testen zu erwarten (Smith et al. 2022). ISTQB (International Software Testing Qualifications Board) bietet verschiedene Zertifizierungen im Bereich des Softwaretestens an, darunter auch eine Zertifizierung speziell für Automation Testing. ISTQB Automation Testing Kurse können den Teilnehmern helfen, ihre Fähigkeiten und Kenntnisse in der Automatisierung von Softwaretests zu verbessern und ihre Karrieremöglichkeiten im Bereich des Softwaretestens zu erweitern.

Referenzen:

ASAM (2017) ASAM Solutions Guide. Abgerufen am 20. März 2023
ATAMAN, Altay, 2023. Machine Learning in test automation in 2023. AIMultiple. Online. 27 January 2023. Abgerufen am 20. März, 2023
Cummings-John, Ronald (2023). What is automation testing?. Abgerufen am 20. März 2023.
ISTQB 2019: Certified Tester Advanced Level Syllabus Testautomatisierungsentwickler
Prabhashi, H.K.D., Shafana, M.S. and Ahamed Sabani, M.J., 2022. Comparative analysis of functional test automation tools. Abgerufen am 20. März 2023
Synopsys (2019). TestWeaver Datasheet. Abgerufen am 20. März 2023
TestingXperts (2020). Why Should Businesses Focus on Mobile Auomation Testing? Abgerufen am 31. März, 2023
Trenkel, Kristian (2016). Konzept und Umsetzung einer modularen, portierbaren Middleware für den automatisierten Test eingebetteter Systeme Abgerufen am 20. März 2023

JOSE, Boby, 2021 Test Automation: A manager’s guide. Swindon, England: BCS, The Chartered Institute for IT. ISBN 9781780175478.

SMITH, Adam Leon, Rex BLACK, James DAVENPORT, Joanna OLSZEWSKA, Jeremias ROSSLER und Jonathon WRIGHT, 2022. Artificial Intelligence and Software Testing Building systems you can trust. Swindon: BCS, The Chartered Institute for IT. ISBN 9781780175782