Warum braucht es eine Automatisierung von Softwaretests für Nutzeranforderungen?

Table of Contents
    Add a header to begin generating the table of contents
    Test automation

    In eigener Sache

    Wie schreibt man in Zeiten von ChatGPT einen Artikel über Testautomatisierung und unsere Leidenschaft? Macht ein solcher Artikel überhaupt noch Sinn und wenn ja, in welcher Form?

    Nach einiger Überlegung haben wir uns entschieden, den Artikel mit Hilfe von ChatGPT zu schreiben, dies jedoch in zwei Teilen:

    • Teil 1: Unsere persönliche Geschichte mit Testautomatisierung.
    • Teil 2: Allgemeine Überlegungen zur Testautomatisierung, die sich für uns als relevant erwiesen haben. Wir beschreiben sie in Form von Checklisten, um sie so kurz wie möglich zu halten.

    Im ersten Teil bringen wir persönliche Erfahrungen und Gedanken ein, die in dieser Form nicht in ChatGPT zu finden sind, zumindest denken wir das.

    Der zweite Teil enthält allgemeinere und umfassendere Informationen als der erste Teil, ist aber auch weniger persönlich.

    Teil 1: Unsere persönliche Geschichte

    Bei der wega gibt es viele Aktivitäten rund um die Software-Validierung. Dabei geht es darum einen formalen Nachweis für das ordnungsgemässe Funktionieren von Anwendungen zu erstellen. Dies ist insbesondere in regulierten pharmazeutischen Umgebungen ein ‘Muss’ um die Anwendung benutzen zu dürfen.

    Eine der Aktivitäten in diesem Validierungsprozess ist die manuelle Ausführung von Testskripten und damit die Befolgung genau definierter Testschritte in dem zu validierenden System. Bei diesen Skripten handelt es sich um seitenlange Anweisungen, die Schritt für Schritt sehr präzise ausgeführt werden müssen.

    • Als einige von uns dies zum ersten Mal taten, hatten wir gemischte Gefühle und Gedanken:
    • Wow, das erfordert wirklich meine ganze Konzentration.
    • Oh nein, ich habe gerade Schritt 9 übersprungen!
    • Mir ist langweilig. Wie kann das sein? Es ist eine Herausforderung und es ist aufregend, diese Anwendung zu entdecken. Aber trotzdem ist diese Aufgabe sehr ermüdend. Ich fühle mich wie ein Roboter...

    Und das war das Zauberwort: "Roboter"! Versuchen wir es doch zu automatisieren!

    Überlegungen darüber, was automatisiert werden kann und was nicht, und wo Maschinen besser sind als Menschen, haben uns eine neue und faszinierende Art des Testens eröffnet. Wir begannen auch, den Unterschied zwischen Testen und Checken zu verstehen, wie es zum Beispiel auf tutorialspoint beschrieben wird.

    Im Gegensatz zum Checken beinhaltet das Testen die Erkundung des Systems, um zu bewerten, ob es sich wie erwartet verhält, ob die Benutzer sich damit wohlfühlen und bei ihren Aufgaben durch das System unterstützt werden, ob mögliche menschliche Fehler bei der Handhabung des Systems akzeptabel sind, ob die Qualität des Systems den Erwartungen entspricht, ob das Aussehen und die Bedienung ansprechend sind und um letztendlich ein ganzheitliches Feedback über das zu testende System zu geben. Testen ist ein kreativer und forschender Prozess, der menschliches Urteilsvermögen, Erfahrung und Können erfordert. Das lässt sich nicht automatisieren.

    Beim Checken hingegen wird überprüft, ob ein System oder eine Komponente eine Reihe von vordefinierten Anforderungen oder Spezifikationen erfüllt. Mit Hilfe von Skripten werden die tatsächlichen Ergebnisse eines Tests mit den erwarteten Ergebnissen verglichen, um festzustellen, ob das zu testende System korrekt funktioniert. Das Prüfen ist ein strukturierter und verfahrenstechnischer Prozess, der mit einem Testautomatisierungswerkzeug ausgeführt werden kann.

    Aber auch wenn eine genaue Schritt-für-Schritt-Beschreibung in einem Testskript nach dieser Definition automatisiert werden kann - ist das wirklich sinnvoll?

    Wie so oft lautet die Antwort: Es kommt darauf an - und das stimmt, es kommt auf die Ziele an, die Sie mit der Testautomatisierung erreichen wollen.

    Bislang haben wir drei verschiedene Ziele beobachtet, die mit Testautomatisierung erreicht werden können:

    1. Reduzierung des Testaufwands und der Kosten bei gleichzeitiger Erhöhung der Zuverlässigkeit, wenn Sie einen Anwendungsfall haben, bei dem dasselbe Testskript wiederholt ausgeführt werden muss. Das ist zum Beispiel für der Durchführung von Regressionstests gegeben.
    2. Die Verkürzung der Testausführungszeit kann für sich genommen auch schon wertvoll sein. Wenn Sie zum Beispiel in der Situation sind, wo ein Stück Software geliefert wurde, und das darauffolgende Testen zeitnah und schnell ausgeführt werden muss, kann ein automatisiertes Testskript die Testausführungszeit im Vergleich zu manuellen Tests erheblich verkürzen.
    3. Erhöhung der Zuverlässigkeit und der Nutzerzufriedenheit durch die Implementierung einer Systemüberwachung: Die Digitalisierung der Biowissenschaften führt zur Schaffung von Anwendungsökosystemen, die mehr oder weniger in Echtzeit miteinander kommunizieren müssen. Wenn es sich dabei um Anwendungen handelt, die als SaaS verkauft werden, wird es schwieriger, Releases und ihre Auswirkungen auf das gesamte Ökosystem zu verwalten. Wenn wir die Tatsache einbeziehen, dass IT-Aktivitäten wie Patching und Wartung auch ausserhalb der Bürozeiten stattfinden können, summieren sich viele Faktoren, die sich unserer Kontrolle entziehen und möglicherweise wichtige tägliche Geschäftsprozesse zum Stillstand bringen können. In einem solchen Fall scheint uns der Mehrwert der Testautomatisierung enorm zu sein: Es ist sicherlich eine grössere Anfangsinvestition, die Testskripte zu entwickeln die es Ihnen ermöglichen, alle wichtige Prozesse abzudecken, aber wenn diese einmal eingerichtet sind, spricht nichts dagegen, die Durchführung aller Tests jedes Wochenende oder sogar jede Nacht zu planen! Sie können Ihr Tool so programmieren, dass es Ihnen bei der Entdeckung eines Fehlers eine Benachrichtigung schickt, so dass Sie im Vorfeld handeln können; vielleicht können Sie das Problem lösen, bevor die Benutzer überhaupt merken, dass es ein Problem gibt, oder im schlimmsten Fall können Sie sie zumindest warnen, dass das Problem bekannt ist und bearbeitet wird, und so gleichzeitig eine Menge Supportanfragen vermeiden.

    Zusammenfassend möchten wir einige zusätzliche Erfahrungen hervorheben, die wir gemacht haben:

    • Schon beim Schreiben von automatisierten Testskripten können Sie das System sehr genau testen. Das Skript muss bis ins letzte Detail definiert werden und kann nicht mehr oder weniger beschrieben werden, wie es in Skripten für die manuelle Ausführung der Fall sein könnte.
    • Fehler im Testskript können schnell erkannt werden, wenn Sie automatisierte Testskripte schreiben: Da die Testausführung sehr schnell ist, können Sie sie wiederholt ausführen, um die Qualität Ihres Skripts zu überprüfen. Im Gegensatz dazu werden Fehler im Testskript für die manuelle Ausführung geprüft, indem ein Tester jeden Schritt durchklickt und überprüft, ob es für Menschen verständlich und eindeutig geschrieben ist.
    • Und nicht zu vernachlässigen: Das Schreiben automatisierter Tests macht Spass! Anders als bei der manuellen Testskripten können wir nun beobachten, wie sich die Maus in der zu testenden Anwendung bewegt und klickt. Nachdem wir Stunden damit verbracht haben, dies manuell zu tun, ist dies eine ganz besondere Befriedigung.

    Teil 2: Erwägungen zur Testautomatisierung

    Einführung

    Bei der Softwareentwicklung ist das Testen ein entscheidender Schritt, um sicherzustellen, dass die Software die gewünschten Anforderungen erfüllt und wie beabsichtigt funktioniert. Manuelles Testen kann zeitaufwändig, fehleranfällig und ineffizient sein, insbesondere beim Testen grosser oder komplexer Softwaresysteme. Die Testautomatisierung hat daher in der modernen Softwareentwicklung zunehmend an Bedeutung gewonnen.

    Bei der Testautomatisierung werden Softwaretools eingesetzt, um Tests automatisch auszuführen, die tatsächlichen mit den erwarteten Ergebnissen zu vergleichen und detaillierte Berichte über die Testergebnisse zu erstellen. Ziel ist es, das Testen zu beschleunigen, die Testgenauigkeit zu verbessern und das Risiko menschlicher Fehler zu verringern. Die Testautomatisierung kann auf verschiedene Arten von Tests angewandt werden, darunter Unittests, Integrationstests, Systemtests, Tests der Benutzeroberfläche und Regressionstests.

    Die Testautomatisierung ist jedoch keine Einheitslösung, sondern erfordert eine sorgfältige Planung und Ausführung, um effektiv zu sein. Es ist wichtig, die richtigen zu automatisierenden Tests zu identifizieren, sicherzustellen, dass das Testautomatisierungs-Framework robust und wartbar ist, und die Tests kontinuierlich zu überwachen und zu aktualisieren, um mit den Änderungen an der Software Schritt zu halten. Es ist auch wichtig, ein Gleichgewicht zwischen automatisierten und manuellen Tests herzustellen, da einige Szenarien schwierig oder unpraktisch zu automatisieren sind.

    Vorteile und Nachteile von automatisierten Softwaretests der Benutzeroberfläche

    Die Automatisierung von Softwaretests in Bezug auf die Nutzeranforderungen kann mehrere Vorteile bieten, unter anderem:

    1. Gesteigerte Effizienz: Automatisierte Tests können schneller und konsistenter ablaufen als manuelle Tests, so dass die Tests schneller und effizienter durchgeführt werden können.
    2. Verbesserte Genauigkeit: Automatisierte Tests können menschliche Fehler ausschliessen und liefern genauere Ergebnisse als manuelle Tests.
    3. Bessere Testabdeckung: Automatisierte Tests können mehr Szenarien und Testfälle abdecken als manuelle Tests und gewährleisten, dass alle Teile der Software gründlich getestet werden.
    4. Kostenersparnis: Durch automatisiertes Testen können insbesondere für Regressionstests die Testkosten gesenkt werden, da der Zeitaufwand für die Ausführung der Tests geringer ist.
    5. Schnellere Markteinführung: Automatisierte Tests können dazu beitragen, den Entwicklungsprozess zu beschleunigen, indem Fehler und Probleme, die behoben werden müssen, schnell identifiziert werden.

    Die Automatisierung von Softwaretests bietet zwar viele Vorteile, aber es gibt auch einige potenzielle Nachteile zu beachten. Hier sind einige Gründe, warum Sie Softwaretests vielleicht nicht automatisieren sollten:

    1. Hohe Anfangsinvestitionen: Die Automatisierung von Softwaretests erfordert erhebliche Vorabinvestitionen in Form von Zeit, Ressourcen und Fachwissen. Ausserdem fallen Lizenzen bzw. Lizenzgebühren an. Dies kann ein Hindernis für kleinere Teams oder Organisationen mit begrenzten Ressourcen darstellen.
    2. Begrenzter Umfang: Automatisierte Tests können nur das testen, wofür sie programmiert wurden, was möglicherweise nicht alle möglichen Szenarien oder Randfälle abdeckt. Dies bedeutet, dass manuelle Tests weiterhin notwendig sind, um eine vollständige Abdeckung zu gewährleisten.
    3. Wartungskosten: Automatisierte Tests müssen laufend gewartet werden, um sicherzustellen, dass sie weiterhin korrekt funktionieren, wenn sich die Software im Laufe der Zeit ändert. Dies kann zeitaufwändig und kostspielig sein.
    4. Falsch positive Ergebnisse: Automatisierte Tests können manchmal falsch-positive Ergebnisse liefern, d. h. ein Testergebnis zeigt ein Problem an, das in Wirklichkeit gar nicht existiert. Dies kann dazu führen, dass Zeit und Ressourcen für die Untersuchung nicht vorhandener Probleme verschwendet werden.
    5. Fehlende menschliche Einsicht: Automatisierte Tests können die menschliche Einsicht und Kreativität nicht ersetzen, die manchmal erforderlich ist, um subtile oder komplexe Probleme zu erkennen, die von automatisierten Tests übersehen werden könnten.

    Insgesamt kann die Automatisierung von Softwaretests erhebliche Vorteile bringen, da sie die Effizienz, die Genauigkeit, die Testabdeckung, die Kosteneinsparungen und die Markteinführungszeit verbessert.

    Dennoch ist es wichtig, die potenziellen Nachteile zu berücksichtigen und die Kosten und Vorteile abzuwägen, bevor man sich für oder gegen eine Automatisierung entscheidet.

    Erwägungen zum Aufbau einer Testautomatisierungssuite

    Bei der Erstellung einer Testautomatisierungssuite sind mehrere wichtige Aspekte zu berücksichtigen, um sicherzustellen, dass die Suite effektiv und effizient ist. Im Folgenden finden Sie einige Schlüsselfaktoren, die zu berücksichtigen sind, sowie potenzielle Probleme, die es zu vermeiden gilt:

    1. Testabdeckung: Stellen Sie sicher, dass die Testautomatisierungssuite die kritischen automatisierbaren Szenarien und Funktionen des Systems abdeckt. Wenn wichtige Anwendungsfälle nicht abgedeckt werden, können Fehler übersehen werden, während übermässiges Testen zu ineffizienten Testläufen führen kann.
    2. Testumgebung: Stellen Sie sicher, dass die Testumgebung möglichst genau der Produktionsumgebung entspricht, einschliesslich der Hardware-, Software- und Netzwerkkonfigurationen. Unterschiede zwischen den Umgebungen können zu falschen Testergebnissen oder übersehenen Fehlern führen.
    3. Test-Wartung: Die Testautomatisierungssuite muss wartbar und skalierbar sein. Änderungen am System oder an den Anforderungen sollten in der Testautomatisierungssuite aufgenommen werden können, und veraltete oder überholte Tests sind zu entfernen.
    4. Testberichte: Stellen Sie sicher, dass die Testautomatisierungssuite klare und umsetzbare Berichte liefert, einschliesslich Testergebnissen, Protokollen und Screenshots. Schlechte Berichte können die Identifizierung und Diagnose von Fehlern erschweren.
    5. Testdurchführung: Stellen Sie sicher, dass die Testautomatisierungssuite zuverlässig und effizient mit einem Minimum an manuellen Eingriffen ausgeführt werden kann. Unzuverlässige oder ineffiziente Testläufe können zu einer Verschwendung von Zeit und Ressourcen führen.
    6. Test-Framework: Stellen Sie sicher, dass die Testautomatisierungssuite auf einem robusten und skalierbaren Test-Framework aufbaut. Ein unzureichendes oder schlecht konzipiertes Framework kann zu Wartungsproblemen, instabilen Tests und Schwierigkeiten bei der Skalierung führen.

    Einige potenzielle Probleme, die bei der Erstellung einer Testautomatisierungssuite vermieden werden sollten, sind:

    1. Konzentration auf Quantität statt auf Qualität: Es ist wichtig sicherzustellen, dass die Tests in der Suite effektiv und effizient sind, anstatt zu versuchen, so viele Szenarien wie möglich abzudecken.
    2. Vernachlässigung der Wartung: Testautomatisierungssuites müssen laufend gewartet werden, um effektiv zu bleiben. Zudem kann eine Vernachlässigung der Wartung zu veralteten oder überholten Tests führen.
    3. Unzureichende Testdaten: Die Testdaten müssen genau, relevant und aktuell sein, um effektive Tests zu gewährleisten.
    4. Übermässiges Vertrauen in die Automatisierung: Es ist wichtig, ein Gleichgewicht zwischen automatisierten und manuellen Tests zu finden, da einige Szenarien schwierig oder unpraktisch zu automatisieren sind.
    5. Schlecht konzipiertes Test-Framework: Ein schlecht konzipierter Test-Framework kann zu Wartungsproblemen, instabilen Tests und Schwierigkeiten bei der Skalierung führen.

    Wenn Sie diese Faktoren berücksichtigen und potenzielle Probleme vermeiden, können Sie eine effektive und effiziente Testautomatisierungssuite erstellen, die die Qualität Ihres Systems gewährleistet.

    Erwägungen zur Auswahl, Eingabe und Verwendung von Testdaten

    Wenn Sie Tests automatisieren, müssen Sie Testdaten einbringen, die verschiedene Szenarien abdecken, um sicherzustellen, dass sich das System unter verschiedenen Bedingungen wie erwartet verhält. Im Folgenden finden Sie einige Möglichkeiten, wie Sie Testdaten einbringen können und was Sie dabei beachten sollten:

    1. Manuelle Eingabe: Sie können Testdaten manuell in Ihre automatisierten Testskripte eingeben, aber das kann zeitaufwändig und fehleranfällig sein. Es muss unbedingt sichergestellt werden, dass die Daten korrekt eingegeben werden, da dies sonst zu falschen Testergebnissen führen kann.
    2. CSV- oder Excel-Dateien: Sie können Testdaten in CSV- oder Excel-Dateien speichern und sie in Ihre automatisierten Testskripte importieren. Dieser Ansatz kann Zeit sparen und Fehler reduzieren. Sie müssen jedoch sicherstellen, dass die Daten richtig strukturiert sind und die Dateien zugänglich und aktuell sind.
    3. Datenbankabfragen: Sie können Datenbanken abfragen, um Testdaten abzurufen und sie in Ihren automatisierten Tests zu verwenden. Dieser Ansatz kann effizient sein, erfordert aber fortgeschrittene Kenntnisse in SQL und Datenbankmanagement.
    4. APIs: Sie können APIs verwenden, um Testdaten aus externen Quellen wie Webdiensten abzurufen. Dieser Ansatz kann beim Testen von Integrationen mit anderen Systemen nützlich sein.

    Wenn Sie Testdaten einbringen, sollten Sie Folgendes beachten:

    1. Sicherstellen, dass die Testdaten repräsentativ für reale Szenarien sind.
    2. Prüfen Sie, ob die Testdaten korrekt und auf dem neuesten Stand sind.
    3. Berücksichtigung der Grösse und Komplexität der Testdaten.
    4. Plan für die Datenpflege, einschliesslich der Aktualisierung der Testdaten, falls erforderlich.
    5. Schutz sensibler Daten im Einklang mit den Unternehmensrichtlinien und gesetzlichen Vorschriften.
    6. Berücksichtigung der Auswirkungen grosser Testdatensätze auf die Leistung.
    7. Überprüfen Sie, ob die Testdaten zugänglich sind und in die automatisierten Tests importiert werden können.

    Wenn Sie diese Faktoren berücksichtigen, können Sie sicherstellen, dass Ihre automatisierten Tests relevante und genaue Testdaten verwenden, was die Wahrscheinlichkeit erhöht, dass Fehler entdeckt werden und die Qualität des Systems gewährleistet ist.