Die Zukunft des Automatischen Testing E2E in Flutter: Maestro

Flutter, das Software-Entwicklungstool, welches die von Google kreierte Sprache Dart verwendet, bietet eine unglaubliche und innovative Möglichkeit für die Entwicklung sowohl auf verschiedenen mobilen Plattformen (Android und IOS) als auch, in neueren Versionen, in einer traditionelleren Webumgebung für den Desktop-Zugriff.

In der automatisierten Testumgebung E2E* wurden im Laufe der Jahre viele Technologien zur Entwicklung freigegeben, sowohl vom Flutter-Team selbst als auch von externen Entwickler-Communities, die das Potenzial dieses Software-Entwicklungstools erkannt haben.

Heute wollen wir uns eine von den Entwicklern stammende Technologie anschauen, Maestro.

*(End To End, wobei zusammenfassend der Weg von Punkt X zu Punkt Y der Anwendung als QA aus der Sicht des Benutzers getestet wird).

Über das Automatische Testing in Flutter

Um zu entscheiden, ob wir uns für die eine oder andere Technologie entscheiden, wenn es um die Automatisierung der Testfälle unserer Anwendung geht, müssen wir zunächst verstehen, was genau „Automatische Flutter Tests“ sind.

Mit dem Fokus auf „end to end“ bietet Flutter die Bibliotheken flutter_test und bdd_widget_test. Dies sind Tools, die innerhalb der von uns entwickelten Anwendung platziert werden und vollen Zugriff auf die verschiedenen Widgets, Seiten und Codezeilen haben und uns eine großartige Kontrolle über alles, was innerhalb der Anwendung passiert, geben und die beste Lösung für Unit-Tests in Flutter sind.

Sie bieten auch Kompatibilität mit Cucumber, was unsere Tests dank der dort angebotenen Gherkin-Sprache, für nicht-technische Benutzer viel besser lesbar macht.

Obwohl all dies geboten wird muss trotzdem ein großer Punkt berücksichtigt werden. Und das ist das umfangreiche Wissen, welches der Tester über Flutter, die genannten Bibliotheken sowie Cucumber benötigt. Dies ist meist der größte Berg, den es in Bezug auf die QA in unserem Projekt zu erklimmen gilt.

Und genau hier kommt Maestro ins Spiel

Maestro, Wirksamkeit in der Einfachheit

Geschrieben u.a. auf der Grundlage von Appium, Espresso, UIAutomator und XCTest, werden mit Hilfe des so genannten „Flow“ (der Definition der Schritte des Benutzers in der Anwendung) Testmöglichkeiten angeboten, die sehr einfach und sofort überall ausgeführt werden können, da sie nicht zum Projekt gehören, sondern extern laufen..

Die Ausführung erfolgt über ein .yaml-Format (eine Sprache, die auch für Personen ohne umfassende Kenntnisse technischer Begriffe leicht zu lesen und zu schreiben ist).

Es ist so konzipiert, dass über die verfügbaren Befehle nicht nur jeder auf dem Bildschirm abgespielte Emulator leicht erkennbar ist, ohne dass irgendetwas verknüpft werden muss, sondern auch, dass die verschiedenen, für das Absolvieren der gewünschten Testroute notwendigen, Widgets schnell zu finden sind.

Um die fehlende Kompatibilität mit dem POM- und Cucumber-Modell zu kompensieren, bietet Maestro die Möglichkeit, eine Struktur von verschachtelten Ausführungen zu organisieren, die „Nested flows“ genannt werden. Mit Hilfe des „runFlow“-Befehls, der bei korrekter Verschachtelung die separate Ausführung von Maestro-Dateien ermöglicht, wird die Wiederverwendung von Code und die Möglichkeit, eine leicht verständliche und überschaubare Struktur zu organisieren, erheblich erleichtert.

Ausführliche Informationen über Maestro, seine Vor- und Nachteile

1. Die Einfachheit ist zu einfach

Wenn wir uns mit Maestro beschäftigen, ist auf den ersten Blick erkennbar, dass wir schon alles gesehen haben, was sowohl gut als auch schlecht ist. Auf dieses Thema werden wir im nächsten Abschnitt zurückkommen, weil es vielleicht der größte mögliche Wendepunkt ist.

Funktionen wie die korrekte Implementierung eines Page Object Model, Cucucmber,

Datenbankanbindung und weitere fortgeschrittene Ergänzungen sind mit Maestro nicht möglich, jedenfalls nicht in der gleichen Weise wie es bei den anderen Systemen angeboten wird.

2. Menschliche Sprache

Maestro ist schnell zu erlernen und dank der Verwendung der .yaml-Sprache sind keine fortgeschrittenen Kenntnisse erforderlich. Es bietet auch die Möglichkeit, Befehle mit Javascript auszuführen, was eine interessante zusätzliche Ebene des Tiefgangs bietet.

Dieser einfache Code würde es uns bereits ermöglichen, eine Anwendung auf einem Gerät zu öffnen und einen Tastendruck zu simulieren.

In den oben genannten Bibliotheken wäre dies wesentlich komplexer.

3. Vielzahl an Umgebungen

Es bietet nicht nur Hilfestellung bei der Portabilität von Tests, da es nicht dem Basisprojekt angehört, sondern das Tool erkennt sowohl angeschlossene Geräte als auch simulierte Emulatoren von Android Studio (Android-Geräte) und XCode (IOS-Geräte).

Im Gegenzug für diese Bequemlichkeit verliert Maestro auf der Seite des Testers an Handwerkszeug, da nicht auf Dinge zugegriffen werden kann, die im Basisprojekt vorhanden sind.

Maestro bei WATA Factory

Maestro ist ein Werkzeug, dessen Nützlichkeit und Zukunftsprognose von WATA Factory erkannt wurde. Die Einfachheit der Testentwicklung ist etwas, das man bei anderen Tools nicht sieht, und auch wenn das Tool bei einigen Projekten aufgrund ihrer jeweiligen Komplexität nicht zum Einsatz kommt, steht es dennoch immer im Mittelpunkt, wenn über Automatisches Testing in zukünftigen Flutter-Anwendungen gesprochen wird.