APPIUM Mobile Test Automation

Mobile testing Appium
Par Aziz HELALI il y a un an 4 minutes

Appium est un outil d'automatisation open source qui permet d'automatiser les applications natives, hybrides et web mobiles.

Appium est cross-platform, il fournit une automatisation sur plusieurs plates-formes comme Android, iOS, windows, etc.

Cross-platform veut dire que nous pouvons écrire nos scripts de test automatique une seule fois et les lancer par la suite sans apporter aucune autre modification.

Et cela est possible grâce à l'utilisation d'une seule et unique API/WebService pour communiquer avec toutes ces platformes qui n'est autre que l'API webdriver.

Si vous êtes familiarisés avec Selenium, vous n'aurez aucun mal à vous familiariser avec Webdriver API.

image

Appium supporte plusieurs langages de programmation par ce qu’il est basé sur Selenium, et nous savons bien que Selenium supporte plusieurs langages de programmation.

Vous pouvez écrire vos scripts de test automation en :

Java/JavaScript/Python/C#/Php/Ruby

Autres avantages d’Appium Test Automation

Appium supporte un appareil physique ainsi qu’un émulateur Android ou un simulateur iOS. Même si vous n’êtes pas en possession d’un appareil physique, vous pouvez toujours utiliser Appium en utilisant l’émulateur ou bien le simulateur.

Pas besoin de recompiler ou de modifier l’application pour l’automatisation. Ceci étant dit, vous aurez quand même à tester l’application actuelle sur votre appareil ou dispositif (device).

Appium est maintenant développé et soutenu par Source Labs, cela ajoute un peu de crédibilité à l’outil parce que Source Labs est l’un des plus populaires dans le domaine cloud.

N’oublions surtout pas qu’Appium a aussi un bon soutien communautaire.

Comparaison Appium Test Automation avec les outils open sources les plus populaires

Comparer Appium avec d’autres outils open source est intentionnel sinon ça n’a pas de sens de le comparer avec les outils cloud comme Source Labs et perfecto mobile. En effet, les fournisseurs de services cloud prennent en charge Appium comme Mobile Automation Framework.

image

Ce tableau a été créé par mes soins et vous indique en haut la liste des outils.

Nous avons donc Appium, XCT qui est l’outil de test d’Apple, l’outil Robotium, puis UI Automator et Expresso, qui appartiennent à Google.

Et sur le côté gauche, nous avons nos critères.

Comme vous pouvez le voir, Appium est le seul qui supporte à la fois iOS et Android comme plateforme.

En ce qui concerne les Tests Unitaires, vous pouvez voir qu’Appium n’est pas très approprié parce qu’il est comparativement plus lent.

Si vous êtes développeur alors et que vous comptez faire des tests unitaires mobiles, vous pouvez opter pour XCTest pour les tests IOS et pour Expresso pour les tests sur Android.

En ce qui concerne le support de test fonctionnel, vous pouvez voir qu’Appium est l’outil le plus adapté car il prend en charge à la fois les plateformes et les tests fonctionnels.

Pour les autres outils comme XCTest, Robotium et UI Automator, ils sont tous adaptés pour les tests fonctionnels, mais ils ont des limites vis à vis du support de la plateforme.

En ce qui concerne le support du langage de programmation, Appium est clairement le gagnant puisqu’il qu’il soutient plusieurs langages de programmation.

Dans l’ensemble, on peut donc conclure que Appium convient le mieux à l’automatisation des tests fonctionnels.

Les limites d’Appium Test Automation

L’automatisation iOS avec le serveur Appium local nécessite un Mac.

Ce qui veut dire que si vous voulez automatiser une application iOS, vous devez avoir un Mac en raison des exigences de Xcode.

La maintenance du laboratoire local du serveur Appium nécessite des ressources supplémentaires, et celle-ci est importante.

Si vous allez avoir une petite configuration, alors vous pouvez aller avec le laboratoire de serveur Appium local et vous pouvez bien gérer ça.

Gérer deux ou quatre appareils connectés à une seule machine Mac ou une machine Windows est faisable.

Mais si vous voulez étendre votre automatisation, alors la gestion du laboratoire du serveur Appium local peut devenir un réel problème.

Dans ce cas, vous pouvez toujours utiliser Appium, mais ensuite vous orienter vers les fournisseurs de services cloud où les appareils sont gérés séparément et sont disponibles sur le cloud.

J’aurais aussi tendance à dire que la documentation Appium est limitée, et peut être parfois trop technique pour être comprise.

Enfin, les changements apportés dans le cadre XCTest peuvent potentiellement briser Appium ce n’est pas si fréquent, mais cela peut arriver.

Ainsi, à chaque fois que vous améliorez la version Appium ou celle d’iOS, assurez-vous de bien vérifier qu’il n’y ai pas de modifications majeures suite à ça.

L’Architecture d’Appium Test Automation

image

Nous avons un client qui envoie une requête HTTP au serveur.

La requête HTTP peut être sous forme de :XML,Json,etc.

Une fois que le serveur reçoit la requête HTTP, il la traite et envoie la réponse HTTP au client.

Notez bien que depuis peu, Appium 2.X n’utilise plus le Json wire protocol et ça a été remplacé par le W3C WebDriver Protocol qui est aussi basé sur la même architecture client-serveur.

Appium a développé Plant libraries”, qui implémente le protocole JSON wire/W3C qui s’applique sur le mobile, donc pour chaque langage de programmation pris en charge par Appium, il lui est associé un client Appium comme vous pouvez voir en dessous pour l’Exemple du langage JAVA qui lui est associé un java-client.

image

Le rôle principal de la bibliothèque client est donc de convertir les commandes Java en Restfull Api qui leur correspond.

image

image

Et c’est cette requête là qu’on voit en dessus qui va être envoyée au serveur Appium.

image

Par la suite, le serveur Appium communiquera avec l’appareil mobile correspondant avec les frameworks natifs respectifs.

Par exemple, dans le cas d’Android, Appium serveur interagit avec le Framework UIAutomator2 et pour cela Appium a un pilote UIAutomator2 qui est utilisé pour communiquer avec le Framework de l’UIAutomator2 d’Android.

De manière similaire avec IOS, Appium a un pilote XCUITest qui communique avec le XCUITest natif qui est disponible sur les appareils iOS.