Connaissance des pilotes Appium (ou comment choisir le pilote nécessaire)

Remarque transl .: J'ai traduit cet article pour aider ceux qui font leurs premiers pas dans l'automatisation des tests et qui veulent en savoir plus sur l'outil Appium. Il décrit le principe général de fonctionnement des pilotes Appium, ainsi que leurs types et leur objectif. Au début du voyage, de nombreux testeurs manquent d'informations ordonnées et ce matériel aidera à déterminer le choix du bon outil.



Appium est un outil multiplateforme qui vous permet d'automatiser les tests d'applications mobiles (iOS et Android) et de bureau en même temps. La façon de mettre en œuvre ce modèle multi-plateforme consiste à utiliser différents pilotes. Essentiellement, Appium a à peu près la même architecture que Selenium WebDriver, qui utilise également un certain nombre de pilotes indépendants pour prendre en charge l'automatisation des tests entre navigateurs.

Il existe des pilotes Appium distincts pour différents outils d'automatisation, ce qui signifie généralement utiliser un pilote pour chaque plate-forme (un pour iOS, un pour Android, etc.). Il existe cependant des exceptions. Ils sont liés au fait que dans l'automatisation des tests d'applications pour certaines plates-formes (par exemple, pour Android), plusieurs outils sont utilisés conjointement avec Appium. En fait, il existe trois pilotes pour Android: basés sur UiAutomator, UiAutomator 2 et Espresso.

Le principe de fonctionnement des chauffeurs


Les pilotes sont peut-être le composant le plus important de l'ensemble de l'outil, car leur tâche consiste à exécuter les commandes de l'API Appium (connu sous le nom de WebDriver Protocol) sur une plate-forme spécifique. En substance, les pilotes sont des traducteurs qui transforment le code client Appium en quelque chose qui exécute des commandes sur iOS, Android, etc.

Pour des raisons de simplicité architecturale, entre autres raisons, chaque pilote individuel lui-même est un serveur autonome compatible WebDriver (bien qu'il n'ait pas accès à toutes les options du serveur Appium principal). A l'intérieur du pilote, les commandes reçues sont traitées de manière particulière. Par exemple, ils peuvent être transférés vers un processus distinct qui exécute du code Java sur un appareil Android.

Les pilotes eux-mêmes ont une architecture interne assez complexe, parfois basée sur toute une gamme de technologies. Voici un diagramme qui montre la pile de technologies impliquées dans le pilote XCUITest (pilote iOS actuel):

Comme vous pouvez le voir, le principe du pilote XCUITest n'est pas si simple. Il est disponible dans le cadre d'Appium et démarre chaque fois que vous démarrez une session iOS. À l'intérieur, le pilote utilise un autre outil, appelé WebDriverAgent, qui est responsable de la conversion des commandes du protocole WebDriver en appels de bibliothèque XCUITest.

De nombreux pilotes ont une architecture similaire, bien que chacun d'eux puisse implémenter la sienne, car le pilote est finalement publié dans npm en tant que classe héritant de la classe Appium BaseDriver. Cela permet aux pilotes de se connecter facilement à Appium.

Types de conducteurs


Alors, combien de pilotes y a-t-il? Honnêtement, c'est assez difficile à dire avec certitude, car, en plus des pilotes officiels Appium, il y en a aussi des non officiels. Mais si nous regardons le code source d'Appium, nous verrons ce qui suit:

const AUTOMATION_NAMES = { APPIUM: 'Appium', UIAUTOMATOR2: 'UiAutomator2', UIAUTOMATOR1: 'UiAutomator1', XCUITEST: 'XCUITest', YOUIENGINE: 'YouiEngine', ESPRESSO: 'Espresso', TIZEN: 'Tizen', FAKE: 'Fake', INSTRUMENTS: 'Instruments', WINDOWS: 'Windows', MAC: 'Mac', }; 

Les noms d'automatisation sont des clés pour divers pilotes utilisés par Appium. Cette section de code détermine quelles lignes peuvent être utilisées comme valeurs pour la fonction automationName. Chaque pilote ne prend généralement en charge qu'une seule plate-forme. Voici une brève description de chaque pilote en fonction de son automationName:

  • Appium n'est qu'un pointeur vers le pilote par défaut pour la plate-forme sélectionnée et n'est pas un pilote distinct;
  • UiAutomator2 ( référentiel ) - le pilote actuel pour la plate-forme Android, utilisé par défaut et basé sur l'outil Google UiAutomator;
  • UiAutomator1 ( référentiel ) est un ancien pilote Android basé sur une ancienne version d'UiAutomator. Ce pilote ne sera plus supporté à l'avenir, il est donc préférable de l'abandonner au profit d'UiAutomator2;
  • XCUITest ( référentiel ) - le pilote par défaut pour iOS, basé sur l'outil Apple XCUITest;
  • YouiEngine ( référentiel ) - un pilote des développeurs de You.i Labs, qui est utilisé pour automatiser les tests d'application pour diverses plates-formes créées sur la base de leur SDK;
  • Espresso ( référentiel ) - le dernier pilote pour Android, basé sur l'outil Google Espresso;
  • Tizen ( référentiel ) - un pilote des développeurs Samsung pour automatiser le test des applications basées sur Xamarin utilisées dans Tizen OS;
  • Fake (le nom parle de lui-même) est utilisé comme outil de test interne pour Appium. Vous n'aurez jamais à l'utiliser;
  • Instruments ( référentiel ) - un pilote obsolète utilisé pour les applications avec iOS 9.3 et inférieur;
  • Windows ( référentiel ) - Microsoft a assemblé un serveur compatible avec Appium, l'appelant WinAppDriver, et ce pilote le connecte au serveur Appium principal. Conçu directement pour automatiser les applications de bureau pour Windows;
  • Mac ( référentiel ) - un pilote qui vous permet d'automatiser le test des applications de bureau pour Mac.

Comme déjà mentionné, chacun de ces pilotes a sa propre architecture, qui peut être vue en regardant ce diagramme:


FAQ pour les pilotes


Alors, comment savez-vous quel pilote utiliser?

Eh bien, si vous avez besoin d'écrire des autotests pour des applications pour iOS, Windows, Mac ou Tizen , le choix est évident - utilisez le pilote par défaut pour chacune de ces plates-formes. Quant à Android, vous devez choisir entre UiAutomator2 et Espresso. Il est préférable d'en savoir d'avance sur chacun de ces outils et de comprendre celui qui convient le mieux à votre cas. Les capacités des pilotes UiAutomator2 et Espresso sont similaires, mais pas complètement identiques.

Tous les pilotes prennent-ils en charge les mêmes commandes de manière égale?

Oui et non. À un niveau fondamental, nous sommes limités par les capacités d'automatisation fournies par les fournisseurs de plateformes. Appuyez sur un appareil Android fonctionne de la même manière que sur un appareil iOS. Mais le processus d'exécution d'autres commandes peut varier. Les développeurs d'Appium, dans la mesure du possible, essaient d'assurer le même comportement de pilote sur différentes plates-formes.

Puis-je passer d'un pilote à un autre et m'attendre à ce que mes tests échouent?

Oui et non. Tout dépend des pilotes dont nous parlons. L'un des avantages de l'utilisation d'Appium est que vous pouvez passer d'un outil d'automatisation à un autre (par exemple, de UiAutomator2 à Espresso) sans sacrifier une suite de tests prête à l'emploi. Néanmoins, vous devez migrer lentement et méthodiquement, en vous assurant que tout se passe comme prévu. L'équipe Appium publie parfois des directives de migration pour passer d'un pilote à un autre - vous devez y faire attention avant la migration.

Puis-je créer mon propre pilote?

Oui! Beaucoup l'ont déjà fait, en particulier Jason Huggins et moi (à AppiumConf 2019). Mais il existe d'autres pilotes propriétaires, comme le pilote hbbtv de Christian Broman .

Les pilotes changeront-ils dans Appium 2.0?

C'est une très bonne question! L'un des aspects négatifs du système de pilotes Appium est qu'ils sont tous inclus dans la dépendance du serveur Appium. Mais nous nous efforçons de garantir que les pilotes existent dans un système moins cohérent, où vous pouvez choisir les pilotes spécifiques à utiliser avec Appium. Si vous résolvez ce problème, vous n'aurez pas à installer l'ancien pilote UiAutomator2 et à connecter ses dépendances lorsque vous utilisez Appium uniquement pour exécuter des tests iOS. (Savez-vous qu'il existe une proposition pour le développement d'Appium 2.0 ?)

J'espère que cet article vous a été utile. Je serai heureux de lire dans les commentaires sur votre expérience d'utilisation des pilotes Appium.

Source: https://habr.com/ru/post/fr480490/


All Articles