[PYTHON] Airtest, eine Frage nach der anderen. Unity App E2E Test beginnend mit Airtest und Poco

Dieser Artikel ist ein 12/20 Artikel von Samzap Adventskalender 2019 # 1.

Was ist Airtest

https://airtest.netease.com/ Plattformübergreifende UI-Automatisierungs-IDE, entwickelt und veröffentlicht von NetEase. Hier nennen wir es einen allgemeinen Begriff für IDEs und Projekte zum automatischen Testen von mobilen Apps, die Bilderkennung verwenden. Auf diese Weise können Sie Testcode erstellen, ohne den Code im Projekt direkt zu kennen. Sie können den Test in Massenproduktion herstellen, als wäre es ein E2E-Test, oder als Alterungstest können Sie dieselben Aktionen endlos wiederholen. Es ist auch für solche Arbeiten geeignet.

Was ist Poco?

https://github.com/AirtestProject/Poco Unter den automatisierten Tests wie Airtest konzentriert sich diese Bibliothek auf die Benutzeroberfläche von Unity. Durch die Einbindung von Poco in Ihr Unity-Projekt können Sie auf den UITree verweisen.

Airtest_IDE_v1_2_2_____Users_v00136_Desktop_untitled_air_untitled_py.png

verdienen

Fehler

Frage eins Antwort

Wie es auf Android funktioniert

https://github.com/AirtestProject/Airtest/tree/master/airtest/core/android Sie können die Struktur hauptsächlich durch Lesen der Quellcodegruppe hier sehen.

Wir senden Minicaps auf Android, empfangen Bilder von Minicaps und senden Tap-Daten. https://github.com/openstf/minicap https://openstf.io/ Minicap ist übrigens eines der von Cyber Agent veröffentlichten Projekte, die Hochgeschwindigkeits-Screenshots auf Android-Geräten aufnehmen und senden.

Wie es unter iOS funktioniert

libimobiledevice(https://github.com/libimobiledevice) Mit diesem Tool können Sie Bilder erhalten. Dies ist ein Tool, das auch in Flutters iOS-Builds verwendet wird. Darüber hinaus werden durch Tippen auf Informationen usw. XcTest geleitet.

https://airtest.netease.com/docs/en/1_quick_start/3_get_started_with_iOS_test.html

Zu diesem Zweck haben wir ein Testprojekt vorbereitet. Nein, es ist eine ziemliche Fähigkeit. Mit dieser Methode können Sie das Terminal jedoch vom Startbildschirm aus steuern. Dies ist also ein guter E2E-Test.

Einführung von Poco

https://github.com/AirtestProject/Poco-SDK/tree/master/Unity3D Installieren Sie dies und löschen Sie das nicht verwendete Gui-Verzeichnis.

Und wenn Sie einen Manager wie diesen anhängen.

var pocoGameObject = new GameObject();
pocoGameObject.name = "Poco";
pocoGameObject.gameObject.AddComponent<PocoManager>();

Ich möchte ein Video machen.

Abhängig von der Umgebung können die folgenden APIs Ihnen bei Android helfen. Die Verwendung in UnitTest unterstützt die Implementierung. https://github.com/AirtestProject/Airtest/blob/master/airtest/core/android/recorder.py

Ich möchte es als UnitTest ausführen.

Pocos Operation ist schwer.

Die Operation ist in der Regel besonders schwer auf Bildschirmen, auf denen die Menge an GameObject groß ist und sich die Parameter der Positionsinformationen häufig ändern (z. B. Anzeigen eines Zeichens in Live2D). Erwägen Sie die Verwendung von Einfrieren. https://poco.readthedocs.io/en/latest/source/doc/poco-example/optimize_speed_by_freezing_UI.html

Wenn Freeze verwendet wird, bleibt der Speicherort der Benutzeroberfläche zum Zeitpunkt der Verwendung von freeze () erhalten, sodass keine Kommunikation mit der Anwendungsseite stattfindet. Sie können Eingaben mit hoher Geschwindigkeit senden. Wenn sich jedoch die Position der Benutzeroberfläche ändert (Scrollen oder Verschieben der Benutzeroberfläche), müssen der Zeitpunkt und die Position von freeze () berücksichtigt werden.

self.freeze = self.poco.freeze()
#Die Benutzeroberfläche der Schaltfläche "bewegt" sich normalerweise nicht, also holen Sie sie aus dem Einfrieren
#Bitte beachten Sie jedoch, dass es nicht möglich ist, auf dem Bildschirm zu beurteilen, ob oder nicht.
self.attack_button = self.freeze("attack_button")

Ich möchte mehrere Einheiten gleichzeitig steuern.

#Sie können einfach die Anzahl der Terminals angeben.
_serial   = "Android:///hogehoge"
dev       = connect_device(self._serial)
poco = UnityPoco(port, device=dev)

Wie versuchen Sie es in einem tatsächlichen Projekt zu verwenden?

Damit auch QS, die keine Programmierkenntnisse haben, diese nutzen können. Wir haben einen Mechanismus erstellt, um die Reihenfolge der Aktionen in CSV usw. zu beschreiben.

Ändern Sie beispielsweise den Kampf in eine bestimmte Regel. Überprüfen Sie die Parameter nach einer bestimmten Technik. Usw. sind wie folgt. Der Rest ist die Phase der Massenproduktion solcher CSVs und der Automatisierung der Überprüfungen, die die Qualitätssicherung manuell durchgeführt hat.

tag,param,param2
Kriegsende,,ID
Regeländerung,,Vier Grenzen&Heilungsstörung&Solo-Wiedergabe&Wütende Haarrache&Strategischer Aragami&Wächter Hayashi&Himmlische Kraft&Geheimnisvolle Vielseitigkeit
Der Beginn des Krieges,,IDvsID
Spielübergang,hoge,Übergang vom Spielstart zum Kampfstart
Jubel,Unerwartete Rückkehr,1
Tabellenkalkulationseingabe,A2,none
Status Änderung,,ID&0
Status Änderung,,ID&20
Jubel,Unerwartete Rückkehr,1
Tabellenkalkulationseingabe,B2,none

Deshalb habe ich Ihnen eine Einführung in Airtest und Poco geschickt. Je nach Idee müssen Sie in Kombination mit maschinellem Lernen die Schaltfläche nicht im Detail angeben Das Debuggen wird fortgesetzt. Ich denke, ich kann alles, ich würde gerne daran arbeiten. Ich hoffe, Sie können verschiedene Informationen austauschen.

Morgen ist ein Artikel von @mikami_akihisa.

Recommended Posts

Airtest, eine Frage nach der anderen. Unity App E2E Test beginnend mit Airtest und Poco
Mit Codetest stärken ⑦
Mit Codetest stärken ⑨
Mit Codetest stärken ⑤
Mit Codetest stärken ②
Mit Codetest stärken ①
Mit Codetest stärken ⑧
Mit Codetest stärken ⑨
Testautomatisierung beginnend mit L-Chika (3) Einbau eines Oszilloskops
So starten Sie in Atom geschriebenen Code mit einem Befehl, ohne teminal zu starten
Airtest, eine Frage nach der anderen. Unity App E2E Test beginnend mit Airtest und Poco
Testautomatisierung beginnend mit L-Chika (5) Embedded Web Camera und OCR
Lassen Sie uns eine Mac-App mit Tkinter und py2app erstellen
Sehen Sie sich das Profiling und Dumping mit Dataflow an