[PYTHON] Airtest, une question à la fois. Test E2E de l'application Unity commençant par Airtest et Poco

Cet article est un article du 20/12 du Calendrier de l'Avent Samzap 2019 # 1.

Qu'est-ce que Airtest

https://airtest.netease.com/ IDE d'automatisation d'interface utilisateur multiplateforme développé et publié par NetEase. Ici, nous l'appellerons un terme général pour les IDE et les projets de test automatique des applications mobiles qui utilisent la reconnaissance d'image. En utilisant cela, vous pouvez créer du code de test sans connaître directement le code du projet. Vous pouvez produire en masse le test comme s'il s'agissait d'un test E2E, ou en tant que test de vieillissement, répétez les mêmes actions à l'infini. Il convient également à de tels travaux.

Qu'est-ce que Poco

https://github.com/AirtestProject/Poco Parmi les tests automatisés comme Airtest, cette bibliothèque se concentre sur l'interface graphique d'Unity. En incorporant Poco dans votre projet Unity, vous pourrez référencer l'UITree.

Airtest_IDE_v1_2_2_____Users_v00136_Desktop_untitled_air_untitled_py.png

mérite

Démérite

Question une réponse

Comment ça marche sur Android

https://github.com/AirtestProject/Airtest/tree/master/airtest/core/android Vous pouvez voir la structure principalement en lisant le groupe de code source ici.

Nous envoyons des minicaps sur Android, recevons des images de minicaps et envoyons des données de tap. https://github.com/openstf/minicap https://openstf.io/ À propos, minicap est l'un des projets publiés par Cyber Agent, qui prend et envoie des captures d'écran à haute vitesse sur les appareils Android.

Comment ça marche sur iOS

libimobiledevice(https://github.com/libimobiledevice) Vous pouvez obtenir des images avec cet outil. Il s'agit d'un outil également utilisé dans les versions iOS de Flutter. De plus, les informations sur les clics, etc. passent par XcTest.

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

Pour cela, nous avons préparé un projet de test. Non, c'est tout un talent. Mais avec cette méthode, vous pouvez contrôler le terminal depuis l'écran d'accueil, c'est donc un très bon test E2E.

Introduction de Poco

https://github.com/AirtestProject/Poco-SDK/tree/master/Unity3D Installez-le et supprimez le répertoire Gui inutilisé.

Et si vous attachez un gestionnaire comme celui-ci.

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

Je veux prendre une vidéo.

En fonction de l'environnement, les API suivantes peuvent vous aider avec Android. L'utilisation dans UnitTest prendra en charge l'implémentation. https://github.com/AirtestProject/Airtest/blob/master/airtest/core/android/recorder.py

Je veux l'exécuter comme un UnitTest.

L'opération de Poco est lourde.

L'opération a tendance à être particulièrement lourde sur les écrans où la quantité de GameObject est importante et les paramètres des informations de position changent fréquemment (par exemple, l'affichage d'un personnage dans Live2D). Pensez à utiliser le gel. https://poco.readthedocs.io/en/latest/source/doc/poco-example/optimize_speed_by_freezing_UI.html

Lorsque freeze est utilisé, l'emplacement de l'interface utilisateur au moment où freeze () est utilisé est conservé, de sorte que la communication avec le côté application ne se produit pas. Vous pouvez envoyer des entrées à grande vitesse. Cependant, si l'emplacement de l'interface utilisateur change (défilement ou déplacement de l'interface utilisateur), il est nécessaire de prendre en compte le moment et l'emplacement de freeze ().

self.freeze = self.poco.freeze()
#L'interface utilisateur du bouton ne «bouge» généralement pas, alors récupérez-la en gelant
#Cependant, veuillez noter qu'il n'est pas possible de juger «si oui ou non» à l'écran.
self.attack_button = self.freeze("attack_button")

Je souhaite contrôler plusieurs unités en même temps.

#Vous pouvez simplement spécifier le nombre de terminaux.
_serial   = "Android:///hogehoge"
dev       = connect_device(self._serial)
poco = UnityPoco(port, device=dev)

Comment essayez-vous de l'utiliser dans un projet réel?

Pour que même l'assurance qualité qui ne possède pas de connaissances en programmation puisse l'utiliser. Nous avons créé un mécanisme pour décrire l'ordre des actions en CSV, etc.

Par exemple, changez la bataille en une règle spécifique. Vérifiez les paramètres après avoir utilisé une technique spécifique. Etc. sont les suivants. Le reste est l'étape de production de masse de ce CSV et d'automatisation des vérifications que QA avait effectuées manuellement.

tag,param,param2
Fin de la guerre,,ID
Changement de règle,,Quatre limites&Troubles de la guérison&Rendu solo&Vengeance des cheveux en colère&Aragami stratégique&Gardien Hayashi&Puissance céleste&Polyvalence mystérieuse
Le début de la guerre,,IDvsID
Transition de jeu,hoge,Transition du début du jeu au début de la bataille
Applaudissement,Retour inattendu,1
Entrée de feuille de calcul,A2,none
Changement de statut,,ID&0
Changement de statut,,ID&20
Applaudissement,Retour inattendu,1
Entrée de feuille de calcul,B2,none

C'est pourquoi je vous ai envoyé une introduction à Airtest et Poco. Selon l'idée, en combinaison avec l'apprentissage automatique, vous n'avez pas à spécifier le bouton en détail Le débogage se poursuit. Je pense que je peux tout faire, j'aimerais y travailler. J'espère que vous pourrez échanger diverses informations.

Demain est un article de @mikami_akihisa.

Recommended Posts

Airtest, une question à la fois. Test E2E de l'application Unity commençant par Airtest et Poco
Renforcez avec le test de code ⑦
Renforcez avec le test de code ⑨
Renforcez avec le test de code ③
Renforcez avec le test de code ⑤
Renforcez avec le test de code ②
Renforcez avec le test de code ①
Renforcez avec le test de code ⑧
Renforcez avec le test de code ⑨
Automatisation des tests à partir de L-Chika (3) Incorporation d'un oscilloscope
Comment démarrer du code écrit en Atom avec une seule commande sans démarrer Teminal
Airtest, une question à la fois. Test E2E de l'application Unity commençant par Airtest et Poco
Automatisation des tests à partir de la caméra Web intégrée L-Chika (5) et de l'OCR
Créons une application Mac avec Tkinter et py2app
Jetez un œil au profilage et au vidage avec Dataflow