4 besten Entwurfsmuster für automatisierte Tests (und 86 weitere)

Hallo alle zusammen. Im Vorfeld des Kursbeginns bereitete „Python QA Engineer“ eine Übersetzung eines weiteren interessanten Materials vor.




Der größte Teil des Erfolgs Ihrer Automatisierungsprojekte liegt in der Wiederverwendung bekannter Testmuster, die, wie bereits bewiesen, dazu beitragen, die Zuverlässigkeit von Automatisierungsszenarien zu erhöhen.

Ein automatisiertes Testdesignmuster ist eine einfache Lösung, die der Welt Tag für Tag ihre Wirksamkeit beweist. Diese Vorlagen gelten auch als Best Practices für jedes Projekt, das mit objektorientierter Programmierung erstellt wurde.

Warum sind Entwurfsmuster für automatisierte Tests so wichtig?

Nehmen Sie an, dass sich Ihre Anwendungen im Laufe der Zeit ändern werden.
Und da Sie wissen, dass Änderungen auf die eine oder andere Weise stattfinden werden, sollten Sie von Anfang an die Best Practices und Entwurfsmuster verwenden. Sie machen Ihre Tests wiederverwendbar und einfacher zu warten.

Im Folgenden finden Sie einige gängige automatisierte Testdesignmuster, mit denen viele Teams eine robuste Testautomatisierung erstellen und die gesamte Testlogik verbessern.

Seitenobjekte



Ein Beispiel für ein Seitenobjekt von Nikolay Advolodkin aus der Automation Guild 2017

Eine der beliebtesten Strategien zum Testen der Automatisierung besteht darin, das Verhalten Ihrer Anwendung zu modellieren.
Zu diesem Zweck können Sie einfache Seitenobjekte verwenden, die die zu testenden Softwareteile simulieren.
Sie können beispielsweise ein Seitenobjekt für eine Anmeldeseite oder eine Startseite schreiben. Dieser Ansatz spiegelt das Prinzip der geteilten Verantwortung korrekt wider.

Wenn sich beispielsweise die ID des Elements ändert, müssen Sie nur eine Stelle im Code ändern, und alle Tests, die dieses Seitenobjekt verwenden, erhalten diese Änderung automatisch ohne unnötige Aktionen. Der Testcode sollte nur an einer Stelle aktualisiert werden. Dieser Ansatz trägt auch dazu bei, die Codeduplizierung zu reduzieren.

Seitenobjekte verbergen auch die technischen Details von HTML und CSS hinter Methoden mit einfachen und klaren Namen.
Die Aufmerksamkeit für die Benennung Ihrer Methoden hat den zusätzlichen Vorteil, dass Sie eine angenehme, lesbare API (Application Programming Interface) erstellen können, die ein weniger technisch versierter Programmierer schnell verwenden kann.

Dieses Muster folgt auch der gängigen DRY- Softwareentwicklungspraxis (Wiederholen Sie sich nicht, wiederholen Sie es nicht).
Grundsätzlich bedeutet das DRY-Prinzip, dass für jeden Teil der Logik ein Code und nicht mehr verantwortlich sein sollte. Das Duplizieren von Code erschwert die Wartung. Je weniger Code Sie schreiben, desto besser, da mehr unterstützter Code die Wahrscheinlichkeit erhöht, dass sich ein Fehler in Ihr Testframework einschleicht.

Diese Software-Design-Vorlage allein kann den Großteil Ihrer Testprobleme leicht lösen, ist aber auch kein Allheilmittel. Auf diese Weise können Sie jedoch einen großen Schritt nach vorne machen und Ihre automatisierten Funktionstests stabiler gestalten.
Einige Tester argumentieren, dass das Seitenobjektmuster häufig gegen das Prinzip verstößt, dass eine Klasse nur einen Grund zur Änderung haben sollte.

Um dies zu vermeiden, wenden sich viele dem Drehbuch zu, das zuerst von Anthony Marcano ( @AntonyMarcano) unter Beteiligung von Andy Palmer ( @AndyPalmer), Jan Molak ( @JanMolak) und anderen beschrieben wurde.

Drehbuchmuster


Seitenobjekte sind ein guter Weg, um Ihre Tests wartbar zu machen. Wenn Sie jedoch nicht vorsichtig sind, können sie im Laufe der Zeit immer noch außer Kontrolle geraten.
Das Drehbuchmuster (früher als Reisemuster bekannt) ist eine Anwendung der SOLID- Entwurfsprinzipien für automatisierte Abnahmetests und hilft Teams bei der Lösung dieser Probleme. Dies ist in der Tat das Ergebnis einer rücksichtslosen Umgestaltung von Seitenobjekten unter Verwendung der SOLID-Entwurfsprinzipien.

Das Drehbuchmuster nimmt Seitenobjekte auf und zerlegt sie in wirklich winzige Teile. Einige Tester sagen, dass dies ihre Tests wartbarer und zuverlässiger gemacht hat.
Ein weiterer wesentlicher Vorteil besteht darin, dass Testskripte besser lesbar sind.

Das erste Mal, dass ich 2017 in der Automation Guild Session von dem Drehbuchmuster hörte, war von John Smart (dem @Wakeleo)Erfinder eines meiner bevorzugten Testautomatisierungs-Frameworks, Serenity) . Das
Drehbuch verwendet die Idee von Akteuren, Aufgaben und Zielen, um Tests formal zu beschreiben und die Bedingungen für die Interaktion mit dem System abzulehnen. Im Drehbuch beschreiben Sie die Tests anhand eines Schauspielers, der Ziele hat.

Hier ein Beispiel:


Ein Beispiel für die Implementierung des Drehbuchmusters aus der Automation Guild Session 2017 von John Smart

Auf den ersten Blick scheint es, dass die Verwendung dieses Musters viel schwieriger ist als die gleichen Seitenobjekte, aber John erwähnte, dass die Verwendung dieses Ansatzes den Teams, mit denen er gearbeitet hat, viel Zeit spart, indem die Kosten für Wartung und Support gesenkt werden.

Anschlüsse und Adapter


Die Architektur von Ports und Adaptern soll sicherstellen, dass Sie das Prinzip der Einzelverantwortung anwenden , dh ein bestimmtes Objekt sollte eine Sache tun und nur einen Grund für die Änderung haben.
Wenn Sie es in der Automatisierung verwenden, stellen Sie sicher, dass Sie den Testfallcode von allem anderen trennen, um langsame Komponenten und schnelle Simulatoren austauschen zu können, sodass Sie den Test und die zu testende Anwendung in einem Prozess ausführen können.

Entfernen Sie Netzwerke und E / A, damit die Testsuite nicht verlangsamt wird. Dies ist natürlich nicht einfach, aber je mehr Sie beim Erstellen der Automatisierung der Benutzeroberfläche danach streben, desto besser wird es für Sie.

Ich habe dieses Muster in einem Interview mit dem Gurkenschöpfer Aslak Hellesoy kennengelernt ( @aslak_hellesoy)er beschrieb es als eine Strategie, um schnelles Feedback von den End-to-End-Tests der Gurke zu erhalten.

Aslak empfahl auch eine Ressource namens Todo-Subsekunde , die ich meinem Beitrag Top Resource for hinzufügte Test Automation Engineers : Diese winzige Anwendung mit Full-Stack-Abnahmetests, die in Millisekunden ausgeführt werden können, soll die grundlegenden Methoden veranschaulichen, um dies in jedem System zu erreichen. verhaltensgetriebene Entwicklung.

Moderator zuerst


Presenter First ist eine Modifikation des Model-View-Controllers (MVC) zum Organisieren von Code und Entwicklung, um vollständig getestete Software unter Verwendung eines testgetriebenen Entwicklungsansatzes (TDD) zu erstellen.
Ich habe dieses Muster zum ersten Mal durch ein Interview mit Sab Rose erfahren (@SebRose, einem der Mitwirkenden am Cucumber-Projekt und Autor von Cucumber for Java.
Er sagte, wenn Sie das MVC-Muster in Form von Blöcken und Pfeilen zeichnen, werden Sie sehen, dass die Ansicht, die Ihre Benutzeroberfläche ist, klar definierte Verbindungen mit dem Modell und dem Controller hat. Wenn Sie sie zur Laufzeit durch Modelle und Controller ersetzen können, die Ihr Test erstellt und steuert, gibt es keinen Grund, warum Sie nicht überprüfen können, ob sich die Benutzeroberfläche nicht wie gewünscht verhält.

Sie können Ihr Modell und Ihren Controller auch so anpassen, dass sie alle Arten von seltsamem Verhalten simulieren, z. B. Netzwerkfehler.

86 andere automatisierte Testmuster


Ich habe diesen Artikel vor vielen Monaten geschrieben, ihn aber nie veröffentlicht.
Ich war zuversichtlich auf meiner Liste, bis ich mit Seretta Gamba , Autorin des neuen Buches Eine Reise durch Testautomatisierungsmuster , sprach , in dem sie und ihre Co-Autorin Dorothy Graham über 86 Muster sprechen!

Sie unterteilen Muster in vier verschiedene Kategorien: Prozessmuster, Kontrollmuster, Entwurfsmuster und Ausführungsmuster.
Die von mir beschriebenen beziehen sich auf Entwurfsmuster, aber es gibt viele andere Muster, die Probleme nicht nur mit Code lösen.

Zum Beispiel gibt es Muster, die sich auf schlechte Unternehmenskultur- und Governance-Modelle beziehen, die meiner Erfahrung nach dazu neigen, alle Bemühungen zur Automatisierung von Tests zunichte zu machen.
Eine vollständige Liste finden Sie im Designmuster- Wiki oder bestellen Sie ein Buch bei Amazon.

Erfahren Sie mehr über den Kurs.

All Articles