Travailler avec Appium et Device Farm AWS - AWS Device Farm

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Travailler avec Appium et Device Farm AWS

Cette section décrit comment configurer, empaqueter et télécharger vos tests Appium sur Device Farm. Appium est un outil open source permettant d'automatiser les applications Web natives et mobiles. Pour plus d'informations, consultez la page de présentation d'Appium sur le site web Appium.

Pour un exemple d'application et des liens vers des tests fonctionnels, voir Device Farm Sample App pour Android et Device Farm Sample App pour iOS sur GitHub.

Prise en charge des versions

La prise en charge de divers frameworks et langages de programmation dépend du langage utilisé.

Device Farm prend en charge toutes les versions de serveur Appium 1.x et 2.x. Pour Android, vous pouvez choisir n'importe quelle version majeure d'Appium avec. devicefarm-cli Par exemple, pour utiliser le serveur Appium version 2, ajoutez les commandes suivantes à votre fichier de spécifications YAML de test :

phases: install: commands: # To install a newer version of Appium such as version 2: - export APPIUM_VERSION=2 - devicefarm-cli use appium $APPIUM_VERSION

Pour iOS, vous pouvez choisir des versions spécifiques d'Appium à l'aide des commandes avm ornpm. Par exemple, pour utiliser la avm commande permettant de définir la version du serveur Appium sur 2.1.2, ajoutez les commandes suivantes à votre fichier de spécifications de test : YAML

phases: install: commands: # To install a newer version of Appium such as version 2.1.2: - export APPIUM_VERSION=2.1.2 - avm $APPIUM_VERSION

À l'aide de la npm commande permettant d'utiliser la dernière version d'Appium 2, ajoutez les commandes suivantes à votre fichier de spécifications YAML de test :

phases: install: commands: - export APPIUM_VERSION=2 - npm install -g appium@$APPIUM_VERSION

Pour plus d'informations sur CLI les commandes devicefarm-cli ou toute autre commande, consultez la AWSCLIréférence.

Pour utiliser toutes les fonctionnalités du framework, telles que les annotations, choisissez un environnement de test personnalisé et utilisez la AWS CLI Device Farm console pour télécharger une spécification de test personnalisée.

Configurez votre package de test Appium

Utilisez les instructions suivantes pour configurer votre package de test.

Java (JUnit)
  1. Modifiez pom.xml pour définir l'empaquetage d'un JAR fichier :

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Modifiez pom.xml à utiliser maven-jar-plugin pour intégrer vos tests dans un JAR fichier.

    Le plugin suivant crée votre code source de test (tout ce qui se trouve dans le src/test répertoire) dans un JAR fichier :

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Modifiez pom.xml à utiliser pour maven-dependency-plugin créer des dépendances sous forme de JAR fichiers.

    Le plugin suivant copie vos dépendances dans le dependency-jars répertoire :

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Enregistrez l'XMLassemblage suivant danssrc/main/assembly/zip.xml.

    XMLVoici une définition d'assemblage qui, une fois configurée, indique à Maven de créer un fichier .zip contenant tout ce qui se trouve à la racine du répertoire de sortie de votre build et du répertoire : dependency-jars

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Modifiez le fichier pom.xml pour utiliser maven-assembly-plugin afin de compresser tous les tests et les dépendances en un seul fichier .zip.

    Le plug-in suivant utilise l'assemblage précédant pour créer un fichier .zip nommé zip-with-dependencies dans le répertoire de sortie de build à chaque fois que la commande mvn package est exécutée :

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
Note

Si un message d'erreur indique que l'annotation n'est pas prise en charge dans la version 1.3, ajoutez les éléments suivants au fichier pom.xml :

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Java (TestNG)
  1. Modifiez pom.xml pour définir l'empaquetage d'un JAR fichier :

    <groupId>com.acme</groupId> <artifactId>acme-myApp-appium</artifactId> <version>1.0-SNAPSHOT</version> <packaging>jar</packaging>
  2. Modifiez pom.xml à utiliser maven-jar-plugin pour intégrer vos tests dans un JAR fichier.

    Le plugin suivant crée votre code source de test (tout ce qui se trouve dans le src/test répertoire) dans un JAR fichier :

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.6</version> <executions> <execution> <goals> <goal>test-jar</goal> </goals> </execution> </executions> </plugin>
  3. Modifiez pom.xml à utiliser pour maven-dependency-plugin créer des dépendances sous forme de JAR fichiers.

    Le plugin suivant copie vos dépendances dans le dependency-jars répertoire :

    <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <version>2.10</version> <executions> <execution> <id>copy-dependencies</id> <phase>package</phase> <goals> <goal>copy-dependencies</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/dependency-jars/</outputDirectory> </configuration> </execution> </executions> </plugin>
  4. Enregistrez l'XMLassemblage suivant danssrc/main/assembly/zip.xml.

    XMLVoici une définition d'assemblage qui, une fois configurée, indique à Maven de créer un fichier .zip contenant tout ce qui se trouve à la racine du répertoire de sortie de votre build et du répertoire : dependency-jars

    <assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0 http://maven.apache.org/xsd/assembly-1.1.0.xsd"> <id>zip</id> <formats> <format>zip</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <fileSets> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>*.jar</include> </includes> </fileSet> <fileSet> <directory>${project.build.directory}</directory> <outputDirectory>./</outputDirectory> <includes> <include>/dependency-jars/</include> </includes> </fileSet> </fileSets> </assembly>
  5. Modifiez le fichier pom.xml pour utiliser maven-assembly-plugin afin de compresser tous les tests et les dépendances en un seul fichier .zip.

    Le plug-in suivant utilise l'assemblage précédant pour créer un fichier .zip nommé zip-with-dependencies dans le répertoire de sortie de build à chaque fois que la commande mvn package est exécutée :

    <plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.4</version> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> <configuration> <finalName>zip-with-dependencies</finalName> <appendAssemblyId>false</appendAssemblyId> <descriptors> <descriptor>src/main/assembly/zip.xml</descriptor> </descriptors> </configuration> </execution> </executions> </plugin>
Note

Si un message d'erreur indique que l'annotation n'est pas prise en charge dans la version 1.3, ajoutez les éléments suivants au fichier pom.xml :

<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin>
Node.JS

Pour empaqueter vos tests Appium Node.js et les télécharger sur Device Farm, vous devez installer les éléments suivants sur votre machine locale :

  • Node Version Manager (nvm)

    Utilisez cet outil pour développer et créer vos packages de test afin qu'aucune dépendance inutile n'y soit incluse.

  • Node.js

  • npm-bundle (installé globalement)

  1. Vérifiez que nvm est présent

    command -v nvm

    Vous devez voir nvm en tant que sortie.

    Pour plus d'informations, consultez nvm on GitHub.

  2. Pour installer Node.js, exécutez la commande suivante :

    nvm install node

    Vous pouvez spécifier une version particulière de Node.js :

    nvm install 11.4.0
  3. Vérifiez que la version correcte de Node est en cours d'utilisation :

    node -v
  4. Installer npm-bundle globalement :

    npm install -g npm-bundle
Python
  1. Nous vous recommandons vivement de configurer virtualenv Python pour le développement et la création d'un package de tests afin qu'aucune dépendance inutile ne soit incluse dans votre package d'application.

    $ virtualenv workspace $ cd workspace $ source bin/activate
    Astuce
    • Ne créez pas d'environnement virtualenv Python avec l'option --system-site-packages, car il hérite des packages de votre répertoire site-packages global. Cela peut entraîner l'inclusion dans votre environnement virtuel de dépendances qui ne sont pas requises par vos tests.

    • Vous devez également vérifier que vos tests n'utilisent pas de dépendances aux bibliothèques natives. En effet, il est possible que ces bibliothèques natives ne soient pas présentes sur l'instance sur laquelle ces tests sont exécutés.

  2. Installez py.test dans votre environnement virtuel.

    $ pip install pytest
  3. Installez le client Appium Python dans votre environnement virtuel.

    $ pip install Appium-Python-Client
  4. À moins que vous ne spécifiiez un chemin différent en mode personnalisé, Device Farm s'attend à ce que vos tests y soient stockéstests/. Vous pouvez utiliser find pour afficher tous les fichiers dans un dossier :

    $ find tests/

    Vérifiez que ces fichiers contiennent des suites de test que vous souhaitez exécuter sur Device Farm

    tests/ tests/my-first-tests.py tests/my-second-tests/py
  5. Exécutez cette commande à partir du dossier workspace de votre environnement virtuel pour afficher une liste de vos tests sans les exécuter.

    $ py.test --collect-only tests/

    Vérifiez que le résultat indique les tests que vous souhaitez exécuter sur Device Farm.

  6. Nettoyez tous les fichiers mis en cache sous votre dossier tests/ :

    $ find . -name '__pycache__' -type d -exec rm -r {} + $ find . -name '*.pyc' -exec rm -f {} + $ find . -name '*.pyo' -exec rm -f {} + $ find . -name '*~' -exec rm -f {} +
  7. Exécutez la commande suivante dans votre espace de travail pour générer le fichier requirements.txt :

    $ pip freeze > requirements.txt
Ruby

Pour empaqueter vos tests Appium Ruby et les télécharger sur Device Farm, vous devez installer les éléments suivants sur votre machine locale :

  • Gestionnaire de versions Ruby (RVM)

    Utilisez cet outil de ligne de commande pour développer et créer vos packages de test afin qu'aucune dépendance inutile n'y soit incluse.

  • Ruby

  • Bundler (Cette gem est généralement installée avec Ruby.)

  1. Installez les clés requisesRVM, et Ruby. Pour obtenir des instructions, consultez la section Installation RVM sur le RVM site Web.

    Une fois l'installation terminée, rechargez votre terminal. Pour cela, déconnectez-vous puis reconnectez-vous.

    Note

    RVMest chargé en tant que fonction pour le shell bash uniquement.

  2. Vérifiez que rvm est installé correctement.

    command -v rvm

    Vous devez voir rvm en tant que sortie.

  3. Si vous souhaitez installer une version spécifique de Ruby, telle que 2.5.3, exécutez la commande suivante :

    rvm install ruby 2.5.3 --autolibs=0

    Vérifiez que vous êtes sur la version demandée de Ruby :

    ruby -v
  4. Configurez le bundler pour compiler les packages pour les plateformes de test souhaitées :

    bundle config specific_platform true
  5. Mettez à jour votre fichier .lock pour ajouter les plateformes nécessaires à l'exécution des tests.

    • Si vous compilez des tests à exécuter sur des appareils Android, exécutez cette commande pour configurer le Gemfile afin qu'il utilise les dépendances de l'hôte de test Android :

      bundle lock --add-platform x86_64-linux
    • Si vous compilez des tests à exécuter sur des appareils iOS, exécutez cette commande pour configurer le Gemfile afin qu'il utilise les dépendances de l'hôte de test iOS :

      bundle lock --add-platform x86_64-darwin
  6. La gem bundler est généralement installée par défaut. Si ce n'est pas le cas, installez-la :

    gem install bundler -v 2.3.26

Création d'un fichier de package de test compressé

Avertissement

Dans Device Farm, la structure des dossiers des fichiers de votre package de test compressé est importante, et certains outils d'archivage modifieront implicitement la structure de votre ZIP fichier. Nous vous recommandons de suivre les utilitaires de ligne de commande spécifiés ci-dessous plutôt que d'utiliser les utilitaires d'archivage intégrés au gestionnaire de fichiers de votre bureau local (tels que le Finder ou l'Explorateur Windows).

Maintenant, groupez vos tests pour la batterie de périphériques.

Java (JUnit)

Construisez et empaquetez vos tests :

$ mvn clean package -DskipTests=true

Le fichier zip-with-dependencies.zip sera créé en conséquence. Ceci est votre package de tests.

Java (TestNG)

Construisez et empaquetez vos tests :

$ mvn clean package -DskipTests=true

Le fichier zip-with-dependencies.zip sera créé en conséquence. Ceci est votre package de tests.

Node.JS
  1. Vérifiez votre projet.

    Assurez-vous d'être dans le répertoire racine de votre projet. Vous pouvez voir package.json dans le répertoire racine.

  2. Pour installer vos dépendances locales, exécutez la commande suivante.

    npm install

    Cette commande crée également un dossier node_modules au sein de votre répertoire actuel.

    Note

    À ce stade, vous devriez être en mesure d'exécuter vos tests en local.

  3. Exécutez cette commande pour regrouper les fichiers de votre dossier actif dans un package *.tgz. Le fichier créé est nommé en fonction de la propriété name indiquée dans votre fichier package.json.

    npm-bundle

    Ce fichier tarball (.tgz) contient votre code et toutes les dépendances.

  4. Exécutez cette commande pour inclure le fichier tarball (*.tgz) généré à l'étape précédente dans une seule archive compressée :

    zip -r MyTests.zip *.tgz

    Il s'agit du MyTests.zip fichier que vous chargez sur Device Farm dans le cadre de la procédure suivante.

Python
Python 2

Générez une archive des packages Python requis (appelé dossier wheelhouse) en utilisant pip :

$ pip wheel --wheel-dir wheelhouse -r requirements.txt

Regroupez votre dossier wheelhouse, vos tests et vos exigences concernant pip dans une archive zip pour Device Farm :

$ zip -r test_bundle.zip tests/ wheelhouse/ requirements.txt
Python 3

Regroupez vos tests et vos exigences concernant pip dans un fichier zip :

$ zip -r test_bundle.zip tests/ requirements.txt
Ruby
  1. Pour créer un environnement Ruby virtuel, exécutez cette commande :

    # myGemset is the name of your virtual Ruby environment rvm gemset create myGemset
  2. Pour utiliser l'environnement que vous venez de créer, exécutez cette commande :

    rvm gemset use myGemset
  3. Vérifiez votre code source.

    Assurez-vous d'être dans le répertoire racine de votre projet. Vous pouvez voir Gemfile dans le répertoire racine.

  4. Pour installer vos dépendances locales et toutes les gems à partir du fichier Gemfile, exécutez cette commande :

    bundle install
    Note

    À ce stade, vous devriez être en mesure d'exécuter vos tests en local. Pour exécuter un test en local, utilisez cette commande :

    bundle exec $test_command
  5. Regroupez vos gems dans le dossier vendor/cache.

    # This will copy all the .gem files needed to run your tests into the vendor/cache directory bundle package --all-platforms
  6. Exécutez la commande suivante pour regrouper votre code source, ainsi que toutes vos dépendances, dans une seule archive compressée :

    zip -r MyTests.zip Gemfile vendor/ $(any other source code directory files)

    Il s'agit du MyTests.zip fichier que vous chargez sur Device Farm dans le cadre de la procédure suivante.

Téléchargez votre package de test sur Device Farm

Vous pouvez utiliser la console Device Farm pour télécharger vos tests.

  1. Connectez-vous à la console Device Farm à l'adresse https://console.aws.amazon.com/devicefarm.

  2. Sur le panneau de navigation de Device Farm, choisissez Mobile Device Testing, puis Projects.

  3. Si vous êtes un nouvel utilisateur, choisissez Nouveau projet, entrez un nom pour le projet, puis choisissez Soumettre.

    Si vous avez déjà un projet, vous pouvez le choisir pour y télécharger vos tests.

  4. Ouvrez votre projet, puis choisissez Create a new run (Créer une exécution).

  5. Pour les tests natifs Android et iOS

    Sur la page Choisir une application, choisissez Application mobile, puis sélectionnez Choisir un fichier pour télécharger le package distribuable de votre application.

    Note

    Le fichier doit être un fichier Android .apk ou un fichier iOS .ipa. Les applications iOS doivent être construites pour des appareils réels, et non pour le simulateur.

    Pour les tests d'application web mobile

    Sur la page Choisir une application, sélectionnez Web App.

  6. Donnez à votre test un nom approprié. Il peut contenir n'importe quelle combinaison d'espaces ou de ponctuation.

  7. Choisissez Suivant.

  8. Sur la page Configurer, dans la section Configuration du framework de test, choisissez Appium language, puis Choisissez un fichier.

  9. Recherchez et choisissez le fichier .zip contenant vos tests. Le fichier .zip doit respecter le format décrit dans Configurez votre package de test Appium.

  10. Choisissez Exécuter votre test dans un environnement personnalisé. Cet environnement d'exécution permet de contrôler totalement la configuration, le démontage et l'invocation des tests, ainsi que de choisir des versions spécifiques des environnements d'exécution et du serveur Appium. Vous pouvez configurer votre environnement personnalisé via le fichier de spécifications de test. Pour plus d'informations, consultez la section Utilisation d'environnements de test personnalisés dans AWS Device Farm.

  11. Choisissez Next, puis suivez les instructions pour sélectionner les appareils et démarrer l'exécution. Pour plus d’informations, consultez Création d'un test dans Device Farm.

Note

Device Farm ne modifie pas les tests Appium.

Prenez des captures d'écran de vos tests (facultatif)

Vous pouvez effectuer des captures d'écran dans le cadre de vos tests.

Device Farm définit la propriété DEVICEFARM_SCREENSHOT_PATH sur un chemin d'accès complet du système de fichiers local, sur lequel Device Farm prévoit que les captures d'écran Appium seront enregistrées. Le répertoire spécifique au test dans lequel les captures d'écran sont stockées est défini lors de l'exécution. Les captures d'écran sont extraites automatiquement dans vos rapports Device Farm. Pour afficher les captures d'écran, dans la console Device Farm, choisissez la section Screenshots (Captures d'écran).

Pour plus d'informations sur la prise de captures d'écran dans les tests Appium, voir Take Screenshot dans la documentation d'APIAppium.