Appium

Automatisation des tests mobiles – 1ère partie

Sep 26, 2016

Idir BOURKEB

L’automatisation des tests dans le domaine des applications mobiles offre des avantages indéniables, le principal étant un gain de temps et de ressources considérable. Elle convient parfaitement aux tests de type « non régression » (TNR), ainsi qu’aux tests de performances. Différents outils permettent d’accomplir cette tâche, et cet article, 1er d’une série sur l’automatisation des tests mobiles, se propose d’aborder Appium.

 

Qu’est-ce qu’Appium ?

Appium est un framework open source de test pour applications mobiles.

Il supporte les applications natives, web mobiles et hybrides. Il est également cross-platform (les apis fournies fonctionnent à la fois pour les plateformes IOS et Android), ce qui permet la réutilisation d’une grande partie des tests.

Avantages :

  • Différents langages sont supportés (Java, Objective-C, JavaScript, PHP, Python, Ruby, C#…).
  • Cross-platform, il supporte les applications natives, web mobiles et hybrides.
  • Pas besoin de modifier l’application pour la tester.

Inconvénients :

  • Appium ne supporte pas les versions d’Android inférieures à 4.2.
  • Le test d’application IOS en parallèle n’est pas possible mais peut être contourné avec le test cloud.

Architecture d’Appium :

L’outil Appium est principalement un serveur, il est implémenté en Node.js et s’appuie sur les Webdriver de Sélénium.

Ce serveur fournit des apis de type REST qui ont les fonctions suivantes :

  • Réception de la connexion du client
  • Ecoute des commandes
  • Exécution des commandes
  • Retour des statuts d’exécution des commandes

Le diagramme ci-dessous explique le fonctionnement plus en détail :

archi_appium

 

Mise en place d’Appium :

Les étapes pour l’installation de cet outil peuvent être assez fastidieuses. En effet, elles diffèrent selon les plateformes que l’on veut tester et selon le type de système d’exploitation où il sera installé.

Voici quelques informations qui permettent d’apporter quelques éclaircissements sur ce processus de mise en place.

Prérequis :

iOS :

  • Mac OSX >= 10.10 la version recommandée est la 10.11.1
  • Xcode >= 6.0 , la version recommandée est la 7.1.1
  • Apple developer tools

Android :

  • Android SDK API >=17
  • Les OS Windows, OSX et Linux peuvent être utilisés

Limitation :

Il y a différentes limitations selon les OS.

Windows :

  • Il n’est pas possible de tester des application iOS sous Windows car Appium se sert des librairies fournis par OSX.
  • Le recorder est indisponible sous Windows

Linux :

  • Il n’y a pas d’interface graphique.
  • Le test d’application iOS est également indisponible

 

Vous l’aurez donc compris, pour bénéficier de toutes les fonctionnalités il est préférable d’utiliser un OS type OSX.

Remarque : A la fin de l’installation il est conseillé d’utiliser Appium Doctor qui permet de s’assurer qu’Appium est opérationnel en vérifiant que les différentes briques (SDK , XCode , variables d’environnement) sont présentes et fonctionnelles.

doctor

Appium Inspector :

Cet outil permet de localiser les différents éléments d’une application afin de pouvoir interagir avec elle durant les tests. Il propose différents moyens d’identification (xpath, id, …). D’autres méthodes peuvent être utilisées telle que l’outil UiAutomatorViewer.

Appium Inspector permet également l’enregistrement d’un script de test. Pour ce faire on active la fonctionnalité Record puis on effectue les différentes actions voulues. Les tests seront générés dans le langage choisi. Cette fonctionnalité est très utile, mais on se rend compte très vite que beaucoup de tests doivent être complétés ou créés manuellement.

inspector

Création d’un test

Il y a différentes manières de s’organiser pour le développement des tests, néanmoins un test doit toujours être composé de :

  • Capabilities : c’est ici que l’on définira les différentes informations dont le serveur a besoin (plateforme utilisée, version de l’OS, le nom du device …).
  • Une connexion au serveur : ici on se connectera à une session et l’on fournira les capabilités précédemment définies.
  • Les commandes : dans cette partie on décrira toutes les interactions que l’on souhaite reproduire sur l’application.

Exemple :

import io.appium.java_client.AppiumDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;
public class {scriptName} {
    public static void main(String[] args) {
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability("appium-version", "1.0");
        capabilities.setCapability("platformName", "Android");
        capabilities.setCapability("platformVersion", "5.1");
        capabilities.setCapability("deviceName", "745e31e90ffc2365");
        capabilities.setCapability("app", "/Users/user/workspace/phoneword.apk");
        capabilities.setCapability("appPackage", "com.companyname.phoneword");
        capabilities.setCapability("appActivity", "md5eb8cee9bb2852617ab2e56c7bf729ae8.MainActivity");
        wd = new AppiumDriver(new URL("https://127.0.0.1:4723/wd/hub"), capabilities);
        wd.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.LinearLayout[1]/android.widget.EditText[1]")).sendKeys("123456789");
        wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.LinearLayout[1]/android.widget.Button[1]")).click();
        Assert.assertEquals(wd.findElement(By.xpath("//android.widget.LinearLayout[1]/android.widget.FrameLayout[2]/android.widget.LinearLayout[1]/android.widget.Button[2]")).getText(),"Call 32823");
        wd.close();
         } }

Ne reste plus qu’à lancer l’exécution.

Conclusion :

Appium est de mon point de vue un candidat intéressant pour l’automatisation des tests mobiles car comme exposé ci-dessus, il offre beaucoup d’avantages (plusieurs langages supportés, cross plateform …etc.) et il bénéficie également d’une communauté très active.

1 Commentaire

  1. Camara Moussa

    Très bon tuto. Merci a vous depuis Montréal

    Réponse

Soumettre un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Découvrez nos autres articles

Aller au contenu principal