Combien coûte Appium pour le peuple

Dans cet article, nous verrons l'outil Appium. Cet article est une introduction à l'introduction de tests automatisés d'applications mobiles. Il vous montrera les difficultés que vous pourriez rencontrer lors de l'utilisation de cet outil.

Considérons une petite tâche en utilisant l'exemple d'une «calculatrice», essayez d'écrire des tests automatisés pour la tester et ... Commençons par le tout début :)

Contenu


  • Qu'est-ce que Appium?
  • Minimum nécessaire.
  • Énoncé et solution du problème.
  • Confluencé :)

Qu'est-ce que Appium?


Quelques mots sur les tests mobiles. Vous ne pouvez pas avoir un ordinateur, un ordinateur portable à la maison, mais nous ne percevons pas notre vie sans appareils mobiles. Tester les applications mobiles prend une grande place dans ... les tests ... Mmmm ... le beurre c'est le beurre, mais ça l'est. Ce créneau est assez compliqué.

Il y a tellement d'appareils avec leurs systèmes d'exploitation, avec leurs propres interfaces graphiques, résolutions d'écran, etc. Je pense que cette liste est interminable. Donc, en raison de la grande variété d'appareils mobiles, il serait bien d'avoir des tests automatisés pour nos applications afin de réduire la souffrance des testeurs et de ne pas transformer le test d'une fonctionnalité sur des centaines d'appareils en «véritable enfer» (voir l'image ci-dessous).

image

Il existe de nombreux outils pour écrire des autotests pour les appareils mobiles. Pour résoudre les tâches qui m'ont été soumises, j'ai choisi Appium, car il convient simultanément à Android et iOS et vous pouvez écrire des auto-tests en utilisant Java "préféré de tous".

Appium est un outil multiplateforme gratuit et open source qui permet d'automatiser les applications pour Android et iOS. Appium adopte la même approche que Selenium WebDriver, qui reçoit les requêtes HTTP JSON des clients et les convertit en fonction de la plateforme sur laquelle il fonctionne.

image

Minimum requis


Alors, de quoi avons-nous besoin pour travailler avec Appium?

Pour créer des tests pour Android, les exigences suivantes sont mises en avant:

  • Java (version> = 7)
  • API SDK Android (version> = 17)
  • Appareil virtuel Android (AVD) / appareil réel
  • Intel Hardware Accelerated Execution Manager

Pour que l'émulateur d'appareil Android fonctionne à une vitesse proche de celle de l'appareil réel, vous devez installer Intel Hardware Accelerated Execution Manager. Cela permettra de réduire le temps nécessaire au lancement et au débogage de l'application.

Pour iOS:

  • Mac OS X (version> = 10.7)
  • Xcode (version> = 5.1)
  • Java (version> = 7)
  • Homebrew
  • NodeJS
  • npm

Je recommande également d'installer appium-doctor afin de diagnostiquer les problèmes possibles lors de l'installation et de la configuration des composants nécessaires sur les deux plates-formes.

image

Énoncé et solution du problème


Imaginons donc que nous devions écrire des tests automatisés pour une application de calculatrice pour les appareils Android. Pour ce faire, nous devons télécharger Appium sur le site officiel et l'installer sur notre «machine».

image

Lancez Appium.

image

Par défaut, Appium est prêt à écouter localhost avec le port 4723. Ici, nous laisserons tout inchangé et démarrerons le serveur.

image

Appium est maintenant prêt à traiter nos demandes.

Notre futur autotest doit être exécuté soit sur l'émulateur, soit sur un appareil réel. Pour la polyvalence de cet article, considérez le travail du test sur l'émulateur. Pour cela, nous avons besoin d'Android Studio. Téléchargez et installez-le vous-même. Ensuite, ouvrez et accédez à Outils - Gestionnaire AVD.

image

image

image

image

image

image

Ouvrez maintenant le terminal et exécutez la commande adb devices. Elle affichera la liste des appareils connectés.

image

On voit que la liste des appareils est vide, car aucun émulateur n'est en marche, aucun appareil réel n'est connecté à notre «machine».

Exécutez tous les émulateurs que nous avons. Dans mon cas, ce sont deux émulateurs. Exécutez à nouveau la commande adb devices.

image

Nous avons maintenant une liste non vide qui contient l'ID de nos appareils connectés - émulateurs et appareils, le cas échéant.

Avec l'émulateur trié, commençons à écrire du code. Comme décrit ci-dessus, dans mes tests, j'utilise Java.

Créez d'abord une instance d'AndroidDriver. Le constructeur de cette classe attend deux paramètres pour entrer:

image

Capacités souhaitées - Objet JSON (un ensemble de paires clé-valeur) envoyé par le client au serveur.

Les capacités souhaitées décrivent les fonctionnalités de la session créée (nom de l'appareil / émulateur, système d'exploitation (OS), version du système d'exploitation, application lancée, etc.).

Exemple de

image

capacités : nous décrivons nos capacités et créons AndroidDriver.

image

deviceName est un paramètre obligatoire, mais pour Android, il n'est pas vérifié. Si nous parlons d'iOS, alors lors de la spécification du nom, vous devez utiliser l'un des noms réservés (un exemple de ces noms est donné dans les commentaires sur le code). La description des autres paramètres est donnée dans le code (voir image ci-dessus), mais nous nous concentrerons sur certains d'entre eux.

udid est un identifiant unique pour le périphérique. Nous pouvons obtenir cet identifiant d'appareil avec la commande adb devices.

image

appPackage est le nom du package Java de l'application Android que nous voulons exécuter.

appActivities est le nom des activités que nous ouvrons.

appPackage et appActivities peuvent être obtenus de différentes manières, mais la plus simple consiste à installer l'application "APK Info" de Google Play.

Après avoir ouvert ce programme, vous verrez une liste de toutes les applications installées. Nous sommes intéressés par la calculatrice. Sélectionnez-le dans la liste.

image

Et voici toutes les informations dont nous avons besoin.

image

image

Les a remplis. Ensuite, créez une instance d'AndroidDriver: enregistrez l'URL Appium et passez l'objet capacités en tant que deuxième paramètre.

image

Ce code exécutera uniquement la calculatrice sur l'émulateur. Nous devons apprendre à gérer en quelque sorte les éléments de la calculatrice afin de pouvoir écrire un test simple. Le principe est ici similaire à celui de Selenium Web Driver. Nous devons accéder aux éléments via n'importe quel localisateur. Inspecteur Appium nous aidera à les obtenir. Ouvrez Appium.

image

image

Maintenant, toutes nos capacités décrites dans le code doivent être transférées à l'inspecteur, dans l'onglet Capacités souhaitées.

image

Session de démarrage.

image

L'inspecteur traduit ce qui est affiché sur l'appareil. Un peu à droite est un arbre de tous les éléments de l'activité en cours. Pour obtenir les attributs d'un élément, il vous suffit de sélectionner l'élément dont nous avons besoin.

image

Après avoir sélectionné, tous les attributs disponibles pour cet élément sont affichés. Dans ce cas, il n'est pas si important pour nous de savoir comment accéder à l'élément: par ID ou par xPath. Mais dans les applications volumineuses et complexes, il est préférable d'utiliser des ID, car xPath ralentit beaucoup les tests. De plus, lors du test d'applications hybrides, l'ID sera un pour Android et iOS, et xPath sera différent. Nous avons appris comment obtenir les attributs nécessaires. Maintenant, par analogie avec le pilote Web Selenium, nous obtenons les éléments nécessaires dans le code.

image

Pour obtenir l'article, j'utilise la méthode findElementById. Vous pouvez créer une instance de la classe MobileElement et travailler avec, ou vous pouvez sans en créer une. Ici, nous définissons les éléments des nombres 2, + et 3. Au final, je m'attends à ce que le résultat soit 5. Au final, ce qui suit est ressorti:

image

Je mets le test et travaille sur la création de la session dans des méthodes distinctes. Maintenant, je vais essayer de montrer ce que nous avons fait.


Confluencé :)


image

Dans cet article, j'ai montré comment démarrer rapidement avec Appium et ce qui est nécessaire pour cela. Comme vous l'avez peut-être remarqué, commencer à écrire des tests simples n'est pas si difficile. Vous pouvez ensuite attacher le rapport au projet, par exemple, Allure. Mais c'est une histoire complètement différente :)

Vous aurez peut-être des problèmes individuels lors de l'installation de divers outils nécessaires pour travailler avec Appium. Mais tous ces problèmes sont facilement résolus par la recherche Google :)

Le sujet des tests pour iOS n'a pas été divulgué, mais je veux «dire», ou plutôt écrire quelques mots à ce sujet.

Afin d'exécuter l'application via Appium sur iOS, j'ai passé beaucoup de temps à configurer l'environnement (xCode, Appium, certificats de développeur, etc.). Il était nécessaire d'ouvrir le projet Appium via xCode, de spécifier les certificats de développeur et d'autres paramètres, d'assembler le projet, et ce n'est qu'ensuite qu'il s'est avéré exécuter les commandes via Appium sur les appareils iOS. Après chaque mise à jour d'Appium, vous devez effectuer cette procédure. Peut-être que tout se passera beaucoup plus facilement pour vous, vous devriez y croire. Jusqu'à présent, je n'ai pas trouvé une autre solution, peut-être qu'elle l'est, mais jusqu'à présent, cela me convient.

Je tiens à noter une fois de plus qu'il est préférable d'utiliser des identifiants lors de l'accès aux éléments que xPath. Même si l'élément ne contient pas d'ID, demandez / forcez le développeur à spécifier l'ID. Cela vous facilitera la vie et augmentera votre vitesse d'exécution des tests.

Et pourtant, plus vous avez de vrais appareils, plus il est probable qu'il trouve un bogue avant que les utilisateurs finaux ne le trouvent. En principe, vous pouvez créer votre propre usine d'appareils. Mais il me semble plus judicieux de se tourner vers des solutions cloud, par exemple BrowserStack, SauceLabs et autres.

C'est tout ce que je voulais dire! Projet

PS sur GitHub

PPS Un peu de mon groupe

Maintenant c'est tout!

All Articles