Publié: Avril 6, 2020
Le guide complet des tests mobiles Selenium
Dans aujourd'hui DevOps L'ère du développement continu et du déploiement continu est l'objectif principal des environnements de développement logiciel. Le code est développé en continu et testé en continu Les outils de tests automatisés sont essentiels au déploiement continu des applications. Selenium est un outil d'automatisation de tests populaire qui aide les développeurs Selenium à intégrer les tests continus au processus de développement. Il est compatible avec de nombreux navigateurs, plateformes et systèmes d'exploitation.
Cependant, la prolifération des smartphones a introduit sur le marché une vaste gamme d'appareils, de plateformes et de systèmes d'exploitation. Auparavant, les écrans mobiles étaient petits et leur conception peu ergonomique. La situation a radicalement changé avec les écrans actuels. Les applications conçues pour les mobiles sont désormais la nouvelle norme. Les entreprises doivent donc adapter leurs stratégies de test en conséquence. solutions d'applications mobiles.
Les applications mobiles sont faciles à utiliser et plus accessibles. Aujourd'hui, de plus en plus de personnes utilisent leurs appareils mobiles pour faire des achats en ligne ou s'abonner à des services. Désormais, 60 % des ressources des entreprises sont consultées via mobile. Cependant, la plupart des testeurs privilégient Selenium à Appium pour les tests mobiles des solutions d'automatisation.
Selenium prend-il en charge les tests d'applications mobiles ? Bien qu'il ne les prenne pas directement en charge, il propose des frameworks pour tester les applications mobiles. Selenroid est un framework de test mobile basé sur Selenium qui permet aux entreprises d'exécuter des tests automatisés sur les appareils Android. Cependant, les options restent limitées. C'est là qu'Appium intervient pour les développeurs de tests mobiles Selenium. Appium est un puissant framework d'automatisation des tests mobiles basé sur Selenium et offrant une compatibilité multiplateforme et multi-technologies. Vous pouvez ainsi écrire un seul code de test pour Android et iOS.
Pour en savoir plus sur les tests Selenium et Appium avec DécouvrirTest, cliquez ici.
Protocole technologique
Selenium et Appium utilisent le même protocole : JSON Wire. Ce protocole est récemment devenu une norme du W3C. Aujourd’hui, de nombreux secteurs d’activité, ainsi que les fournisseurs de navigateurs, l’adoptent comme protocole standard.
Architecture Selenium

Selenium permet d'écrire du code dans différents langages tels que Java, PHP, C# et Python. Ce code est exécuté via le protocole JSON Wire. Ce protocole est une API REST utilisée pour contrôler le navigateur. Lorsqu'une requête HTTP REST est exécutée, le serveur Selenium crée une nouvelle session. Il invoque ensuite le pilote du navigateur (Chrome, Safari ou Edge) pour y accéder. Le navigateur envoie les informations demandées au serveur Selenium via son pilote, et ces informations sont ensuite transmises au client.
Composants de la grille Selenium

Selenium Grid comprend trois composants principaux. Le hub Selenium Grid est le serveur qui distribue les tâches de test aux nœuds. Ce serveur détermine quel nœud recevra le test en fonction des capacités requises prédéfinies. Le nœud Selenium Grid exécute les tests reçus du hub. Chaque serveur peut gérer plusieurs nœuds. L'URL `wd/hub` permet la communication entre le hub et les nœuds.
Architecture Appium

L'architecture d'Appium est très similaire à celle de Selenium. Appium permet également aux développeurs de tests mobiles Selenium d'écrire du code dans plusieurs langages tels que Java, PHP, C#, Python, Ruby, JavaScript (WebdriverIO) et JavaScript (WD). Appium propose également d'autres options. Par exemple, en Java, il hérite de RemoteWebDriver. Le serveur Appium peut être installé sur la machine ou dans le cloud. Lorsque la commande `createSession()` est exécutée depuis le client Appium via le protocole JSON Wire, le serveur Appium crée une nouvelle session sur l'appareil mobile via le pilote Appium (pilote Android ou iOS). Pour les appareils Android, il utilise l'infrastructure Android ADB et crée des fichiers APK sur la machine si nécessaire. Pour iOS, il utilise l'environnement de développement intégré (IDE) mobile et communique avec la ligne de commande.
L'idée est d'exécuter des tests infinis factices sur des appareils mobiles. Sous iOS, on utilise XCUITest. Les tests sont gérés par le serveur.
Installer Appium
L'installation d'Appium pour Android est assez simple. Cependant, elle se complexifie légèrement avec les appareils iOS. La principale difficulté réside dans le fait qu'il est impossible de simplement prendre une application et de l'installer sur l'appareil. Comme il s'agit d'applications destinées aux développeurs, chaque application doit être signée sur l'appareil. L'utilisation d'émulateurs permet de contourner certaines étapes. De plus, vous aurez besoin d'un identifiant de développeur Apple, d'un certificat de développement valide, d'un profil de provisionnement, d'un fichier .ipa signé, de Xcode et des outils de développement en ligne de commande. Enfin, vous devrez configurer l'appareil pour le développement dans Xcode.
Par exemple, si vous utilisez Java, vous devez effectuer les tâches suivantes :
- Configurer Java
- Installer Homebrew
- Ensuite, installez Node.js et npm.
- Ensuite, installez Appium.
- npm install -g appium
- Enfin, installez wd
- npm install wd
- Configurer l'appareil iOS Appium qui installera ilibmobiledevice
- configurer le pilote XCUITest
Vous pouvez consulter ce tutoriel pour obtenir les étapes d'installation d'Appium.
http://appium.io/docs/en/about-appium/getting-started/#installing-appium
Matrice de couverture
Pour tester les applications Android, vous pouvez utiliser des ordinateurs Windows, Mac ou Linux. En revanche, pour tester les applications iOS, un appareil Mac est nécessaire. Le cloud est compatible avec les applications iOS et Android.
Appareil mobile vs navigateur
Avant de passer aux tests mobiles, il est important de comprendre les différences environnementales entre les appareils mobiles et les navigateurs.
- gestes: Les appareils mobiles utilisent différentes options de saisie ou gestes tels que le balayage, le pincement, le toucher à deux doigts, le toucher multi-doigts, etc., qui ne sont pas disponibles dans les navigateurs Web.
- Système d'URL différent : Les applications mobiles sont spécifiques aux appareils mobiles et ne disposent pas d'URL web classiques.
- Appareils réels et émulateurs : Vous effectuez vos tests sur des appareils physiques et des simulateurs. Sous Android, vous utilisez les mêmes fichiers APK dans les deux cas. En revanche, sous iOS, vous utilisez des technologies différentes : les simulateurs fonctionnent sur des systèmes x64 tandis que les appareils physiques utilisent des processeurs ARM. Vous devrez donc réaliser vos tests sur les deux plateformes.
- Boutons: Les appareils mobiles sont équipés de boutons tels que Accueil, marche/arrêt et volume. Il faut en tenir compte lors des tests.
- Écran d'accueil: Les appareils mobiles possèdent un écran d'accueil avec une barre de notifications. Il convient donc de prendre en compte les interactions sur cet écran d'accueil.
- Écran rotatif : L'écran mobile peut être basculé en mode portrait ou paysage, ce qui modifie la taille de l'écran.
- Différentes connexions réseau : Il convient de tenir compte des conditions du réseau (2G, 3G, 4G, 5G). Des tests fonctionnels doivent notamment être effectués à différents débits internet.
Applications mobiles vs applications web
En matière d'applications, les applications mobiles diffèrent de leurs homologues web :
- Cycle de vie de l'application : Le cycle de vie des applications mobiles est différent et complexe. On peut installer, désinstaller, lancer et fermer des applications.
- Navigation avec état : Les applications mobiles conservent en mémoire votre session et s'adaptent en conséquence lors de votre prochaine connexion. Elles gèrent mieux l'état de la session. La navigation est également simple.
- Technologies d'interface utilisateur DOM : sont différentes pour iOS et Android
- Scripting côté client : JavaScript, par exemple, n'est pas disponible dans les applications mobiles.
- Outil de débogage : (par exemple : F12 dans Chrome) n’est pas disponible.
Capacités mobiles
Pour les fonctionnalités locales, vous devez préciser les détails suivants :
- Nom de la plateforme : Précisez la plateforme (iOS / Android)
- Nom de l'appareil : Spécifiez le nom de l'appareil (car vous utiliserez plusieurs appareils).
- Nom de l'automatisation : Précisez la technologie d'automatisation utilisée (par exemple : XCUITest pour iOS).
- app: Pour installer une application, spécifiez le chemin d'accès au fichier APK.
- bundleId/appActivity : Spécifiez l'identifiant du bundle de l'application. Sous Android, vous pouvez lancer une activité de bundle ou une activité spécifique. En revanche, sous iOS, seule l'activité de bundle est disponible.
Capacités du cloud
Lorsque les développeurs Selenium utilisent la technologie cloud :
- clé d'accès : La clé d'accès permet d'accéder aux tests à distance
- deviceQuery : Pour trouver les appareils utilisés dans le cloud
Commandes mobiles
Pour surcharger les commandes mobiles, les développeurs Selenium peuvent utiliser ExecuteScript. Voici quelques exemples de commandes mobiles liées à l'application :
- installer l'application
- launchApp
- réinitialiser l'application
- supprimer l'application
- terminateApp
- exécuterAppEnArrière-plan
Quelques exemples de commandes de périphérique
- Verrouillage
- Accéder
- Rotation
- Shake
- masquer le clavier
- isLock
Vous trouverez toutes les commandes disponibles sur cette page Appium : http://appium.io/docs/en/commands/mobile-command/
Comment créer un test mobile avec Selenium et Appium ?
Utilisation de Selenium
Étape 1 : Créer un fichier Gradle
Pour commencer le test, ouvrez votre IDE. Par exemple, si vous utilisez Java, vous pouvez ouvrir IntelliJ.
- Créer un nouveau projet
- Sélectionnez Gradle (vous pouvez utiliser d'autres options telles que Maven).
- Donnez un nom au projet (ex : Selenium 2)
- Cliquez sur Terminer
Étape 2 : Ajouter Selenium à Gradle
- Pour ajouter du code pour Selenium Gradle, rendez-vous sur Google et recherchez Selenium Gradle.
- Ouvrez le lien du dépôt Maven : https://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-java/2.41.0
- Cliquez sur la version la plus récente

- Lorsque vous cliquez sur la nouvelle version, celle-ci s'affiche. Cependant, il s'agit actuellement de la version alpha. Cliquez sur Selenium Java.

- Choisissez la dernière version sur la page suivante.

- Copiez le code de la page suivante et collez-le dans le champ des dépendances de l'IDE. Ce dernier téléchargera toutes les dépendances nécessaires, si votre appareil ne les possède pas déjà.

- Nous utiliserons TestNG pour ce test. Importez donc Selenium TestNG et le pilote Chrome. Vous pouvez télécharger le pilote Chrome ici : https://chromedriver.chromium.org/
- Créez un nouveau paquet (répertoire) et nommez-le (ex : William.demo).
- Créez une classe (par exemple : williamSeleniumdemo)
- Vous disposez maintenant de tous les éléments nécessaires. Écrivez le code d'un test Selenium.
- Par exemple, utiliser `driver.get()` pour ouvrir une URL et attendre que la page se charge.
- Utilisez Driver.navigate() pour naviguer entre les pages.
- trouverÉlément(Par.xpath())
- driver.quit() pour fermer tous les navigateurs
- Exécutez le test
Test Appium
Tester des appareils iOS avec Appium est légèrement plus complexe qu'avec des appareils Android. C'est pourquoi ce guide de test utilisera un appareil iOS.
- Ouvrez l'IDE IntelliJ.
- Ajoutez les dépendances Appium à Gradle (supprimez les dépendances Selenium, le cas échéant).
- Installez le pilote iOS (WebDriver ne possède pas de commandes iOS spécifiques).
- Les développeurs Selenium peuvent utiliser le test Selenium comme base et le modifier pour en faire un test iOS.
- Définissez les fonctionnalités souhaitées (cela vous aidera à établir une table de correspondance entre les valeurs clés et la méthode de connexion au cloud, le lancement d'applications, etc.).
- Vous avez besoin d'une clé d'accès pour accéder aux appareils. Rendez-vous donc dans votre environnement cloud et créez une clé d'accès.
- Donnez un nom au test (ex. : test WilliamAppium)
- Sélectionnez l'application à utiliser et récupérez son identifiant. Vous pouvez également accéder à l'environnement cloud et la télécharger sur l'appareil.
- Définir le type de capacité mobile
- Initialisez le pilote en créant un nouveau pilote iOS et en fournissant l'URL wd
- Lancez maintenant le test depuis l'IDE. Il lancera le pilote et exécutera le test sur les appareils mobiles.
- Accédez à la page cloud et ouvrez l'appareil pour voir en direct comment l'application est installée, lancée et fermée.
Exécution du test depuis l'application Appium

- Accédez à Appium
- Créer une nouvelle session
- Il existe plusieurs fournisseurs de services cloud. Choisissez-en un.

- Saisissez le nom d'utilisateur et la clé d'accès
- Définissez le nom de la plateforme (ex. : iOS)
- Définir la requête de périphérique (ex. : os=iOS)
- Cliquez sur démarrer la session
- Le périphérique sera sélectionné automatiquement. Vous pouvez utiliser l'interface Appium pour identifier les différents éléments et leurs propriétés.
- Ecrire le code
- Driver.findelement(by.xpath)
- Envoyer les clés() (nom d'utilisateur et mot de passe)
- Exécutez le code. Il sélectionnera alors un autre appareil.
- Accédez au cloud et vérifiez comment le test s'exécute sur différents appareils.
- Vous pouvez insérer un point d'arrêt pour le débogage.
Et voilà ! Les développeurs Selenium ont maintenant exécuté avec succès les tests à l'aide d'Appium.
Cliquez ici pour en savoir plus sur les tests Appium et Selenium avec Experitest.
Vous aimerez aussi
Appium et les frameworks mobiles modernes : comprendre les défis de l’automatisation
L'automatisation mobile a considérablement mûri au cours de la dernière décennie, en grande partie…
Le mythe du verrouillage de l'automatisation : migrer Quantum sans réécriture
Lors de mes échanges avec de nombreuses équipes d'assurance qualité d'entreprise en tant que…
Cadre de conception d'applications axé sur l'automatisation et meilleures pratiques
Un concept promouvant la manière dont les développeurs peuvent concevoir leurs applications pour…
