Airtest IDE - eine neue Methode zum Testen der Automatisierung mobiler Spiele?

Heute möchte ich Ihnen von einem ziemlich neuen Open-Source-Tool für automatisierte Tests namens Airtest erzählen . In Zukunft werde ich einige weitere Artikel mit einer detaillierten Geschichte über die einzelnen Elemente dieses Toolkits und die Arbeitsweise damit verfassen. Jetzt habe ich das Ziel, Sie vorzustellen und eine allgemeine Vorstellung davon zu geben.


Dies ist der erste von drei Artikeln. Der zweite Teil beschreibt das Framework für die Bilderkennung (Image Recognition) - AirTest , und der dritte und letzte Teil ist Poco gewidmet - dem UI-Automatisierungsframework durch Schreiben von Code .


AirTest IDE wurde von NetEase entwickelt und ist für "schwer zu automatisierende" Anwendungen wie beispielsweise Spiele gedacht. Eigentlich sind sie das Hauptaugenmerk der Entwickler, obwohl dies die Verwendung von AirTest für andere Anwendungen nicht beendet.


AirTest IDE läuft unter Windows, MacOS X und Linux und enthält zwei Frameworks: AirTest und Poco. Diese Entwicklung wurde von Xin Liu auf dem Android Game Developer Summit 2018 vorgestellt . Python 2.7 und Python 3.3+ werden zum Schreiben von Tests verwendet. Wichtige Dinge wie die Unterstützung für das sofortige Ausführen von Tests auf einer großen Anzahl von Geräten, Open Source Code und kostenlose Anwendungen sowie einfache schriftliche Tests - dies sind die Vorteile, die von Entwicklern hervorgehoben werden. Die Anwendung kann sowohl unter Windows als auch unter MacOS verwendet werden und ermöglicht die Automatisierung von Anwendungen unter folgenden Betriebssystemen: Windows, iOS, Android.


Das AirTest-Projekt auf GitHub enthält 4 Projekte: Airtest , Poco , iOS-Tangent , Multi-Device-Runner .
Erwähnenswert ist auch, dass NetEase eine eigene physische Gerätefarm für automatisierte Tests namens AirLab bereitstellt .


Bild

Kurz über Frameworks.


Airtest ist ein plattformübergreifendes Bilderkennungs-Framework für mobile Spiele und Anwendungen, das auf Image Thersholding basiert. Mit AirTest IDE können Sie mit den folgenden Befehlen mit der Anwendung interagieren:
Berühren, warten, streichen, vorhanden, Text, Schlüsselereignis, Schnappschuss, Ruhezustand, assert_exists, assert_not_exists, assert_equal, assert_not_equal. Ich werde in einem separaten Artikel über die Funktionen und Parameter der Befehle sprechen, der einer detaillierteren Untersuchung von AirTest- und Poco-Frames gewidmet ist. Erwähnenswert ist nun, dass der Befehl keyevent für das Drücken der physischen Tasten des Geräts verantwortlich ist, z. B. Home, Power, Menu, Back. Bei Verwendung der meisten Befehle wird der Benutzer aufgefordert, einen Teil des Bildschirms des Arbeitsgeräts hervorzuheben, von dem ein Screenshot für den entsprechenden Befehl (Berühren, Streichen, Bestätigen usw.) verwendet wird.


Bild

Die Vorteile von Airtest, die ich nach der Arbeit hervorheben kann:


  1. Schnelles und klares Schreiben von Code. In der Praxis wird im automatischen Modus alles erledigt. Sie müssen nur die erforderlichen Parameter auswählen, die Timings anpassen und bei der Auswahl des Bildes vorsichtig sein.
  2. Die genaue Definition des Bildes, das im Code verwendet wird, auf dem aktiven Arbeitsgerät. Außerdem gibt der Bericht den Prozentsatz der Übereinstimmung (Vergleich) des im Code verwendeten Bildes und des Bildes vom Bildschirm des Arbeitsgeräts an.
  3. Apropos Berichte. Nach jedem Start können Sie mit der Tastenkombination Strg \ Cmd + L einen Bericht erstellen. Ein praktischer Bericht enthält Informationen wie: Arten von Zusicherungen, deren Ergebnisse und außerdem wird jeder Testschritt in einem separaten Unterabschnitt mit Informationen darüber hervorgehoben, wo AirTest geklickt hat, wo ein Bild erwartet wurde, Prozentsatz der übereinstimmenden Bilder usw.
  4. Sobald Sie den Code geschrieben haben, können Sie ihn auf jedem Gerät verwenden.
  5. Multithreading: Schließen Sie mehrere Testgeräte an und führen Sie sie parallel aus.

Nachteile Airtest, die ich nach der Arbeit hervorheben kann:


  1. Wenn es dabei Elemente gibt, die optisch gleich aussehen, z. B. Schieberegler, Schaltflächen usw., wird AirTest mit hoher Wahrscheinlichkeit nicht verstehen, welches Steuerelement Sie verwenden möchten. Dies wird im entsprechenden Fehler angezeigt. Auf dieses Minus kann jedoch leicht verzichtet werden, wenn das zweite Framework (Poco) verwendet wird, auf das weiter unten eingegangen wird.
  2. Der Vergleich von Bildern (aus dem Code und den aktuellen auf dem Bildschirm) erfolgt in Schwarzweiß. Es lohnt sich zu überlegen, ob Sie zum Beispiel das visuelle Erscheinungsbild des Charakters (seine Farbe, verschiedene Kleidungsstücke usw.) wichtig sind. Wenn die Zeichen visuell unterschiedlich sind, sie jedoch auf dieselbe Weise auf dem Bildschirm angezeigt werden (eine Pose usw.), ist die Prüfung höchstwahrscheinlich erfolgreich. Die Bilderkennungsoptionen verfügen über ein Häkchen für "RGB", das Sie verwenden können. Wenn Sie ein kleines Bild haben, funktioniert dies jedoch nicht sehr gut.
  3. Sie können den Bildschirm nicht "einfrieren", während Sie die Anwendung verwenden, um die benötigten Screenshots genau aufzunehmen. Von Zeit zu Zeit müssen Sie den gewünschten Rahmen "fangen".
  4. Weil Anwendung in der offenen Beta, dann können verschiedene lästige Fehler oder Ungenauigkeiten auftreten, z. B. die Unfähigkeit, die Größe eines Fensters mit einer integrierten Anwendung unter Windows zu ändern. Die Autoren aktualisieren die AirTest-IDE jetzt alle paar Monate, und ich hoffe, dass diese Probleme bald behoben werden.

Poco ist ein universelles Framework zur Automatisierung der Benutzeroberfläche, das leistungsstarke APIs unabhängig von der (Spiel-) Engine bereitstellt. Diese wiederum rufen zur Laufzeit die Hierarchie der UI-Elemente ab. Dank dessen kann der Benutzer die gesamte Elementhierarchie auf der aktuellen Seite mit wenigen Klicks auf das von ihm benötigte Element usw. "erreichen". Mit diesem Framework können Sie auch den aktuellen Bildschirm zum Schreiben von Code basierend auf der Hierarchie der Elemente des aktuellen Fensters "einfrieren". Poco soll AirTest helfen, zu verstehen, um welche Art von UI-Element es sich bei den Tests handelt, aber niemand stört Sie daran, alle Tests nur mit diesem Framework zu schreiben.
Alle Tests sind in Python geschrieben. Befehlsimplementierungen finden Sie in den entsprechenden APIs: Modul airtest.core.api, Paket airtest.core.android, Paket airtest.core.ios, Paket airtest.core.win


Bild


Poco Vorteile, die ich nach der Arbeit hervorheben kann:


  1. Es gibt Unterstützung für eine Reihe wichtiger Spiele-Engines, darunter Unity3D, cocos2dx-js, cocos2dx-lua, interne NetEase-Engines sowie Unterstützung für native Android / iOS-Anwendungen. Wenn Sie eine Engine verwenden möchten, die nicht in der Liste der "unterstützten" Engines aufgeführt ist, können Sie Ihre eigene Engine schreiben, indem Sie den entsprechenden Anweisungen folgen. In der offiziellen Dokumentation wird die Unreal Engine erwähnt, aber bisher beschränkt sich alles auf den Satz "Coming soon".
  2. Die Hierarchie der UI-Elemente auf dem Bildschirm wird in Echtzeit zurückgegeben.
  3. Schnellstart und Testlauf.
  4. Wie bei AirTest habe ich den Code einmal geschrieben - verwenden Sie ihn überall. Python 2.7 und 3.3+ Unterstützung
  5. Es ist möglich, externe Bibliotheken mit Ihrem Projekt zu verbinden
  6. Gemessen an der Dokumentation gibt es Unterstützung für GPS-, Beschleunigungsmesser- und Kreiselsensoren sowie Unterstützung für Hoch- und Querformat-Anzeigemodi.

Poco Nachteile, die ich nach der Arbeit hervorheben kann:


  1. Während der Arbeit unter Windows 7 habe ich keine grundlegenden Probleme gefunden. Dies würde die vollwertige Arbeit beeinträchtigen, ist jedoch derzeit bei der Arbeit mit Windows 10 der Fall. Die Hauptsache ist in einigen Fällen die falsche Bewegung von Objekten (Wischbefehl). Zum Beispiel gebe ich das zu verschiebende Objekt und die Koordinaten des zweiten Objekts an, das der Endpunkt ist. In diesen seltenen Fällen verfehlt Poco den endgültigen Ort, aber die Berichte zeigen die korrekten Verschiebungsdaten (Vektor) und der Schritt wird als erfolgreich angesehen.
  2. Wenn Sie einige Elemente mit großen Layouts (Layout) auswählen, überlappt die Auswahl möglicherweise das Poco Assistant-Fenster, und Sie können andere Elemente erst auswählen, wenn die Auswahl aus dem aktuellen entfernt wird. Um die Auswahl zu entfernen, können Sie die Tastenkombination Alt + F4 verwenden

Um das Bild zu vervollständigen, ist es erwähnenswert, dass Airtest IDE über ein eigenes Selenium-Plug-In verfügt , mit dem Sie Ihr Webprojekt automatisieren können, jedoch nur mit einem Chrome-Browser. Der Rest wird derzeit nicht unterstützt. Persönlich habe ich noch nicht mit ihm gearbeitet, daher kann ich nichts über seine Arbeit sagen, aber es war unmöglich, ihn in dieser kurzen Beschreibung zu übersehen.


Bild


Daher würde ich sagen, dass AirTest IDE eine sehr vielversprechende Entwicklung ist, die die Benutzeroberfläche in Spielen automatisieren soll, aber derzeit nicht zum Testen des Spielprozesses als solchen geeignet ist. Wenn Sie viele UI-Elemente und / oder viele Geräte überprüfen müssen und nicht viele Arbeitsstunden aufwenden möchten, wird diese IDE möglicherweise zu Ihrem Lebensretter. Um mit dem Schreiben der einfachsten Tests zu beginnen, benötigen Sie keine umfassenden Kenntnisse in Automatisierung und Programmierung. Sie müssen lediglich über grundlegende Kenntnisse der Arbeit mit Python verfügen. Auf diese Weise werden Sie natürlich nicht weit kommen und diese Programmiersprache lernen müssen, aber um zu beginnen und zu verstehen, wie realistisch dieses Programm zu Ihnen passt, ist es genug für Ihre Augen. Das einzige, was jetzt frustrierend ist, sind verschiedene lästige Fehler, die beispielsweise mit der Unfähigkeit verbunden sind, die Größe eines Fensters mit einem Arbeitsgerät (Windows-Anwendung) nach dem Einbetten zu ändern, ein großes ausgewähltes Objekt der Hauptprogrammoberfläche zu überlappen usw., aber es ist durchaus möglich insbesondere angesichts der Tatsache, dass sich die Anwendung in der Beta-Phase befindet.


Bild

Source: https://habr.com/ru/post/de461773/


All Articles