Testautomatisierung Definition, Tutorial und Artikel

Testautomatisierung

Testautomatisierung

Testautomatisierung

Testautomatisierung ist ein automatisiertes Testverfahren und bezeichnet die Automatisierung von Testaktivitäten. Wobei sich das in diesem Webportal auf den Bereich Software-Qualitätssicherung bzw. den Softwaretest beschränkt, also dem IT-Sektor.

Bei diesem automatisierten Testverfahren wird mit auf dem Markt befindlichen Testautomatisierungstools oder selbst entwickelter Testsoftware ein Softwareprodukt getestet. Von diesem Testautomatisierungs-Tool wird die zu testende Software angesprochen und damit gesteuert. Nach jeder Aktion werden im Normalfall Verifikationspunkte ausgewertet, um zu prüfen, ob bei dem automatisierten Testschritt das Ergebnis wie geplant ist. Ist das Ergebnis nicht wie geplant, sollte eine Anomalie als Ergebnis geloggt werden.

Am Ende ist manuell auszuwerten, ob es sich bei den Anomalien um einen Fehler handelt oder nicht. Die angezeigte Anomalie vom Testautomatisierungstools könnte beispielsweise auch auf eine neue Softwareversion mit korrektem und geändertem Software Design beruhen und "nur" das Testskript wurde vergessen zu aktualisieren.

Es gibt verschiedene Level an Schnittstellen auf die eine Testautomatisierung aufsetzen kann

  • GUI-Level - Grafische Oberfläche
  • API Schnittsellen - zB. HTTP
  • Unit-Tests auf Codeebene - Auch Modultests oder Komponententests genannt.

Wann und Warum ist Einführung einer Testautomatisierung sinnvoll?

Automatisierte Tests und die Einführung der Testautomatisierung in den QS-Prozess sind kein "Muss", um Software in hoher Qualität zu produzieren. Allerdings bietet sich Testautomatisierung bei komplexer Software mit höherem Anteil an Regressionstests (Wiederholbare Tests) an. Grundsätzlich spricht ein gewisser Grad an Regressionstests für eine Testautomatisierung.

Wenn sich eine Software hingegen (z.B. in der Anfangsphase des Entwicklungsprozesses) sehr stark und ständig ändert, kann eine Testautomatisierung nicht die beste Wahl sein, da der Aufwand der Wartung der Testautomatisierung dann zu hoch sein kann.

Besonders im Zuge der Agilen Entwicklung, kann auf  Testautomatisierung kaum verzichtet werden. Die meisten Best Practices und guten Erfahrungsberichte von Agile-Experten sind sich einig, dass gerade bei den kürzeren Iterationen automatisierte Tests eine äußerst sinnvolle Ergänzung sind. Somit können Tests auch über Nacht laufen und Tests können auch automatisch nach jedem Code-Check-in inklusive eines automatischen Build-Prozesses ablaufen.

Continuous Integration, Continuous Delivery  und Teststufen

Pyramide Teststufenaufteilung und Testautomatisierung in Agilen Entwicklungsmethoden

Pyramide Teststufenaufteilung und Testautomatisierung in Agilen Entwicklungsmethoden

Wenn wir über den Automatischen Build-Prozess und automatische Tests nach Code-Check-in sprechen, heißt das Schlagwort "Continuous Integration", welches gerade durch die Agilen Methoden weiter in den Vordergrund gerückt ist. Beim "Continuous Integration" sollen nach dem Code-check-in ein automatischer Software-Build und Installationsprozess laufen. Anschließend laufen Unit Tests über die Software, um den Entwicklern in kürzester Zeit Feedback über die grundlegende Qualität der Software zu geben.

Auch andere Teststufen wie Integrationstests und Systemtests (automatisierte GUI-Tests) können automatisch anlaufen und schnelles Feedback geben. Hierbei ist zu beachten, dass die die Zahl der automatisierten GUI-Tests viel kleiner sein sollte als die der Unit-Tests. Dies soll das Diagramm der Agilen Test Pyramide verdeutlichen.

Ziel der Testautomatisierung

Effiziente Testautomatisierung und hohe Qualität durch Automatisierte TestsEine Testautomatisierung muss nicht eine Beschleunigung des Entwicklungsprozesses mit sich bringen, das Ziel sollte eher eine höhere Software-Qualität durch höhere Testabdeckung sein.

Im Endeffekt kann sich die Entwicklungszeit sicherlich verkürzen, da auch früher Fehler gefunden werden können, wenn die automatisierten Tests öfter laufen, dies sollte aber nicht der generelle Fokus sein. Was sicher ist, ist die höhere Testqualität und damit höhere Softwarequalität, wenn auf allen Teststufen entsprechend der Software und den Zielen ein passender Umfang an Testautomatisierung gewählt wird.

Hat eine Software einen sehr hohen Bedarf an Regressionstests, dann ist Automatisiertes Testen in jedem Fall auch ein Zeitgewinn wie auch eine Kostenersparnis. Da so nach Erstellung der automatisierten Tests tausende Testskripte in kurzer Zeit durchlaufen werden können, wo man hingegen im Manuellen Test ein vielfaches an Zeit und Arbeitskräfte bräuchte.

Bei großen Softwareprojekten, die wegen der Komplexität mit vielen Regressionstests getestet werden, erreicht man schnell so große Dimensionen an Anzahl von Testfällen und damit sehr langen Test-Ausführungszeiten, dass man es mit Manuellen Tests gar nicht mehr abdecken könnte, auch nicht mit einem vielfachen an Testern. In diesem Fall ist eine Testautomatisierung natürlich essentiell.

Vor und Nachteile der Testautomatisierung

Ob ein "Testskript" ein besserer und aufmerksamerer "Tester" ist als ein "Mensch", kommt auf den genauen Fall an. Testet ein Manueller Tester 8 Stunden am Tag Regressionstests, gegebenenfalls alle paar Tage die gleichen Tests, wird man mit Sicherheit eine gewisse Betriebsblindheit unterstellen dürfen. Denn jeder Mensch übersieht auch mal etwas, gerade bei solch einer Vorgehensweise.

Auf der anderen Seite können Testskripte auch Fehler haben und Testautomatisierungstools können Bugs haben. Und es kann vergessen werden, bei Softwareänderungen nötige Änderungen in der Testautomatisierung nachzuziehen, sodass das Testskript zwar noch durchläuft, aber nicht mehr alles korrekt prüft. Hierbei würden Fehler verschleiert werden und es kommt ein sicheres Gewühl auf, wenn man auf die Ergebnisse schaut, obwohl Fehler enthalten sind, die aber durch die schlechte Qualität der Testskripte nicht gefunden werden. Einem menschlichen Manuellen Tester wären diese Fehler gegebenenfalls direkt ins Auge gesprungen. Ein Testskript prüft eben nur exakt das, was man ihm beibringt.

Weiterhin besitzt ein Testautomatisierungsskript eben keine Intelligenz. Ein menschlicher Tester kann beim Ausführen von Manuellen Tests immer seine Erfahrung mit ins Spiel bringen und links und rechts schauen, ob abseits der exakten Teststeps noch Fehler sind. Hier kommen wir in dem Raum der Explorativen- und Erfahrungsbasierenden-Tests.

Somit ist eine Testautomatisierung sicherlich nie Ersatz des kompletten manuellen Tests. Dennoch ist es oft ein gutes Instrument in der Software Qualitätssicherung und darum wird in vielen komplexen und großen Software-Projekten auch ein sehr großer Anteil der Tests durch automatisierte Testverfahren ausgeführt.

Die meisten Fehler werden allerdings gefunden, wenn man beide Instrumente des Softwaretests vernünftig einsetzt.

Aufbau der Testautomatisierung  und Testwerkzeuge

Es gibt einen großen Markt an kommerziellen und Open-Source Testautomatisierungs-Tools. Eine sehr aktuelle und vollständige Liste findet man in diesem Beitrag: Testautomatisierungs Tools

Für den Aufbau einer Testautomatisierung  gibt es verschiedene Strategien, von der Einführung vorhandener Testwerkzeuge und der Anpassungen an die eigenen Bedürfnisse bis hin zur kompletten eigenen Entwicklung eines kompletten Testautomatisierungs-Tools und Testautomatisierungs-Frameworks. Generell sind im Aufbau einer Testautomatisierung immer auch Entwicklungserfahrungen und Programmierung benötigt.

Bei einer guten Testautomatisierung muss aber nur ein kleiner Teil der Testautomatisierer programmieren können. Durch Methoden wie Schlüsselwort-getriebener und Daten-getriebener Testautomatisierung, kann nach außen hin mit der Nutzung von "Schlüsselwörter" automatisiert werden. Hierzu ist unter Umständen auch eine grafische Oberfläche (UI) vorhanden, sodass die Tester die automatisierten Tests leicht und effizient grafisch zusammenstellen können. Wichtig hierbei ist auch die gewünschte Granularität der Schlüsselwörte durch eine umfassende Analyse zu bestimmen.Test Automation Business Goals and strategy

Der Schlüsselwort-getriebene Ansatz hat auch enorme Vorteile bei der Wartung. Die Wartung der Testautomatisierung ist häufig ein unterschätzter Punkt, denn das Testautomatisierungs-System muss in der Regel laufend angepasst werden. Generell gilt, dass bei Änderungen der Software die Änderungen in der Testautomatisierung an möglichst wenig Stellen zu bewerkstelligen sein sollte.

Ein gutes Beispiel dazu ist der "Login" in eine Software Application. Dieser "Login"-Testschritt kommt später sicher in den meisten Test-Skripten und Testfällen vor, jedoch will niemand bei Änderungen am "Login", hunderte oder gar tausende von Testskripten anpassen. Dazu muss eine Testautomatisierungs Lösung vernünftig strukturiert aufgebaut werden.

Automatisierte Tests sind ein echtes Softwareprojekt

Leider wird automatisiertes Testen in Unternehmen oft gar nicht die Beachtung geschenkt die es braucht. "Nur mal eben nebenbei" ist hierbei nicht angebracht. Eine Testautomatisierung wird schnell so komplex, dass sie ähnlich wie ein Softwareprojekt aufgesetzt werden muss. Dazu gehört eben auch eine Versionskontrolle, um den Code der Testskripte in ein Sourcecode-Repository zu haben und Änderungen gut nachvollziehen zu können.

Es sollten Aufwände geschätzt werden und die Testautomatisierung in die Projektplanung der zu testenden Software mit einbezogen werden. Auch Budget muss ausreichend eingeplant werden, für Arbeitskraft und auch Tools und Testumgebung. Es werden sicherlich auch Fehler in der vorhandenen Testautomatisierungs-Lösung gefunden werden, diese Fehler sollten bei großen Testautomatisierungs-Projekten auch in Bug-Tracking-Tools (Defect-Management-Tools) gesammelt werden.

Kurze Anmerkung: Neben den vorhandenen ausführlichen Testing-Tool Listen auf diesem Webportal, werden Sie demnächst auch eine ausführliche Liste über Bug-Tracking-Tools finden.

Es folgt eine Übersicht von Artikeln über Testautomatisierung der Testing-Board Redaktion und weiterführenden Artikeln externer Blogs über das Thema "Automatisierte Tests".

 

Artikel zum Thema Testautomatisierung

WWW – Aus externen Blogs über Testautomatisierung und Automatisiertes Testen sowie unserem Partner-Portal Testautomatisierung.org

  • Incremental steps to continuous releases

    von noreply@blogger.com (Maaret Pyhäjärvi) am Mai 26, 2017 um 12:27 pm

    The last eight months for me have had one theme in particular that I consistently drive forward, in small steps that sometimes feel small enough that […]

  • Pair Testing with a 15-year-old

    von noreply@blogger.com (Maaret Pyhäjärvi) am Mai 26, 2017 um 10:40 am

    A few months back, I had the pleasure of working with a trainee at F-Secure. As usual in schools in Finland, there was a week of practice at work […]

  • Impact of Test Automation in my Everyday Worklife

    von noreply@blogger.com (Maaret Pyhäjärvi) am Mai 24, 2017 um 1:28 pm

    I'm not particularly convinced of the testing our teams test automation does for us. The scenarios is automation are somewhat simple, yet take […]

  • TestBash Philadelphia 2017 is Live!

    von Richard Bradshaw am Mai 22, 2017 um 2:35 pm

    TL: DR Tickets are here. 16 talks, a circus and an awesome party. Limited Super Early Bird tickets available. I’m very excited to launch our […]

  • Test Estimation Techniques

    von noreply@blogger.com (Aravind Patel) am Mai 22, 2017 um 7:46 am

    Estimation very important thing in project, estimation nothing but estimating the effort that is require to test particular thing, estimation is more […]

  • Test Data Generation with GEDIS Studio Online Tool (Part-2)

    von Prathibha am Mai 19, 2017 um 2:37 pm

    Test Data Generation – Demo Using a Free Online GEDIS Studio Tool (Part -2): Read part-1 of this test data management tutorials series […]

Fanden Sie den Artikel hilfreich?
[Gesamt: 0 Durchschnitt: 0] -

Leave a Reply