Calabash Android Tutoriel sur l'outil de test

⚡ Résumé intelligent

Calabash est un framework de tests d'acceptation open-source qui pilote de véritables actions d'interface utilisateur sur Android et des applications iOS, en utilisant un anglais simple Cucumber scénarios reposant sur des définitions d'étapes Ruby et un serveur de test côté périphérique.

  • (I.e. Définition: Calabash Automatise les interactions tactiles, la saisie de texte et les assertions avec les applications mobiles natives et hybrides sur des appareils réels et des émulateurs.
  • ☑️ Pile de langages : Les scénarios sont écrits dans des fichiers de fonctionnalités Gherkin, et les méthodes correspondantes se trouvent dans des fichiers Ruby à l'intérieur des définitions d'étapes.
  • ✅ Fondation BDD : Le développement piloté par le comportement permet aux chefs d'entreprise, aux développeurs et aux testeurs de s'entendre sur le comportement avant même l'existence du moindre script.
  • 🧪 Ordre de configuration : Java JDK, puis Ruby, puis Android Studio, puis la gemme calabash-android, vérifiée avec une commande de version.
  • ️ Flux d'exécution: Signez le fichier APK, créez le serveur de test, connectez un appareil, interrogez les localisateurs, puis exécutez les fichiers de fonctionnalités.
  • (I.e. Situation actuelle: Calabash est archivé et non mis à jour, les nouveaux projets choisissent donc généralement Appium, Espresso ou XCUITest à la place.

Calabash Tutoriel sur l'outil de test pour Android montrant Cucumber fichiers de fonctionnalités pilotant une application mobile

Qu'est-ce que le Calabash?

Calabash est une acceptation open-source Tests framework qui vous permet d'écrire et d'exécuter des tests pour iOS et Android Applications.

Il s'agit d'un framework d'interface utilisateur automatisé qui permet d'écrire des tests en Ruby. Cucumber.

Calabash Il fonctionne en activant les interactions automatiques avec l'interface utilisateur d'une application mobile, telles que le clic sur des boutons, la saisie de texte, la validation de réponses, etc. Il peut être configuré pour s'exécuter sur différents appareils. Android et les appareils iOS, qui fournissent des commentaires et des validations en temps réel.

⚠️ Note de version : Microsoft a mis fin à ses contributions à Calabash après la version finale d'iOS 11 et Android 8 sorties, et les dépôt calabash-android Ce projet se présente désormais comme recherchant un responsable de la maintenance. La procédure détaillée ci-dessous est conservée telle quelle, et les solutions de remplacement modernes sont présentées dans la dernière section.

Pourquoi Calabash Automatisation?

Avant toute installation, il est utile de comparer les avantages du système aux coûts de maintenance.

Avantages Désavantages
Cela contribue à augmenter le débit/productivité. Des compétences sont requises pour rédiger les scripts de tests d’automatisation.
Qualité améliorée ou prévisibilité accrue de la qualité Le débogage du script de test est un problème majeur.
Robustesse (cohérence) améliorée des processus ou des produits. La maintenance des tests est coûteuse dans le cas des méthodes de lecture.
Cohérence accrue de la production et réduction des coûts et dépenses de main-d’œuvre La maintenance des fichiers de données de test est difficile si le script de test teste plus d'écrans

Calabash et BDD

  • Calabash is Développement axé sur le comportement (BDD)C'est la même chose que Développement piloté par les tests (TDD)mais au lieu de créer des tests pour décrire la structure des API, c'est le comportement de l'application qui est spécifié.
  • Le BDD est un processus dans lequel plusieurs parties prenantes interviennent pour créer une compréhension commune de ce qui doit être construit.
  • BDD est utile pour créer le bon logiciel et le concevoir du point de vue du propriétaire de l'entreprise.

Le schéma ci-dessous montre comment un Calabash La suite est structurée en couches, depuis le fichier de fonctionnalités lisible par les métiers en haut jusqu'à l'interaction avec l'appareil en bas.

Calabash Diagramme de couches BDD montrant les fichiers de fonctionnalités, les définitions d'étapes et la couche d'automatisation du dispositif

Comment installer Calabash

Calabash on Windows Quatre prérequis doivent être installés dans l'ordre. Terminez chaque étape entièrement avant de passer à la suivante, car la gem calabash-android vérifie la présence de Ruby et de Android Kit de développement logiciel (SDK) lors de l'installation.

Partie I) Installation Java JDK – Reportez-vous à ce guide – /install-java.html

Partie II) Téléchargez et installez Ruby.

Étape 1) Téléchargez Ruby depuis le URL https://rubyinstaller.org/downloads

Page de téléchargement de RubyInstaller répertoriant les versions de Ruby disponibles pour Windows

Étape 2) Ouvrez le fichier .exe et suivez les instructions à l'écran. Une fois l'installation terminée, l'écran suivant s'affichera. Cliquez sur Terminer.

Écran de fin de l'assistant d'installation de Ruby avec le bouton Terminer mis en évidence

Démarrer l'invite de commande avec Ruby activé Windows 10 et tapez ci-dessous Commande.

ruby -v

La console affiche la version de l'interpréteur installée, comme indiqué ci-dessous.

Invite de commandes avec Ruby affichant le numéro de version de Ruby installé

Partie III) Télécharger et installer Android

Étape 1) Téléchargez Android Studio at https://developer.android.com/studio

Android Studio L'assistant d'installation est en cours d'exécution. Windows pendant l'installation

Étape 2) Ouvrez le fichier .exe, suivez les instructions à l'écran et terminez l'installation. Cliquez sur le bouton « Terminer » une fois l'installation terminée.

Android Studio Écran de fin d'installation avec le bouton de fin

Partie IV) Installation Calabash Android

Étape 1) Dans la console, saisissez `gem install calabash-android`. L'installation démarrera et prendra un certain temps.

Sortie de la console pendant l'installation de la gem calabash-android et de ses dépendances

Étape 2) Une fois l'installation terminée, saisissez calabash-android version

La console confirme la version du gem calabash-android installée.

Travailler avec Calabash

Une fois la gemme installée, la prochaine étape consiste à localiser le dossier du framework et à comprendre la structure de base avec laquelle il est fourni.

Ouvrez le dossier « calebasse-android-0.9.0 ». Il réside dans le chemin C:\Ruby23\lib\ruby\gems\2.3.0\gems\calabash-android-0.9.0. Les noms des dossiers changeront en synchronisation avec la version Ruby/Calebash que vous installez sur votre ordinateur.

Ouvrez le dossier du squelette de fonctionnalités. Recherchez ce cadre de base.

Calabash Dossier squelette de fonctionnalités contenant les répertoires support et step_definitions

  • Le fichier *.feature contient des scénarios que nous allons automatiser.
  • La méthode utilisée par le fichier de fonctionnalités est écrite dans le fichier *.rb dans le dossier « step_definitions ».
  • Les méthodes courantes, la configuration de l'environnement, l'installation de l'application et les hooks doivent être placés dans le dossier « support ».

Démissionnez et créez l'application

  • Calabash-Android resign *.apk
  • Calabash-version Android *.apk

La resignature remplace la signature du développeur par une clé de débogage afin que le serveur de test puisse instrumenter l'application, et l'étape de compilation produit ce serveur de test, comme le montre la sortie de la console ci-dessous.

Sortie console des commandes calabash-android resign et build produisant un serveur de test

Connectez l'appareil au système/Ouvrez l'émulateur

Vérifiez le périphérique connecté. Tapez la commande

adb devices

La liste des périphériques connectés devrait s'afficher. Si le périphérique est absent, suivez les étapes de débogage et d'appairage USB décrites dans la section correspondante. Guide de connexion ADB résoudre la plupart des cas.

Liste des commandes adb devices (une pièce jointe) Android appareil par numéro de série

Comment trouver le localisateur d'éléments

  • Ouvrez la console. Tapez la commande.
    calabash-android console "APK Path"
    start_test_server_in_background
  • La commande ci-dessus lance l’application sur l’appareil. Pour trouver le localisateur d'éléments, utilisez la commande suivante.
    query "*"

Ceci affichera tous les localisateurs d'éléments sur l'écran actuel. Les testeurs qui préfèrent un inspecteur visuel peuvent vérifier la même hiérarchie avec uiautomatorviewer.

Calabash Affichage dans la console de l'arborescence des éléments interrogés pour l'écran de l'application actuelle

Calabash Structure du projet et étapes prédéfinies

Plutôt que de copier manuellement le dossier gem, le framework peut générer un projet fonctionnel pour vous. L'exécution du générateur dans le répertoire de votre projet crée le fichier standard. Cucumber disposition que chaque Calabash la suite s'attend à.

calabash-android gen

L'arbre généré sépare les trois préoccupations d'une suite BDD :

  • traits/ — les scénarios du Gherkin, un .fonctionnalité Un fichier par parcours utilisateur.
  • fonctionnalités/définitions_étapes/ — les méthodes Ruby qui correspondent à chaque ligne Gherkin, y compris le fichier calabash_steps.rb inclus.
  • fonctionnalités/assistance/ — la configuration de l'environnement et les hooks qui installent, lancent et arrêtent l'application dans chaque scénario.

Le fichier calabash_steps.rb inclus est plus important qu'il n'y paraît. Il contient un grand nombre d'étapes prédéfinies en anglais, permettant ainsi à un premier scénario d'appuyer sur des boutons, de saisir du texte et d'effectuer des assertions sur des chaînes de caractères visibles avant même d'écrire une seule méthode personnalisée. Les étapes personnalisées ne sont nécessaires que lorsque le parcours utilisateur dépasse le cadre de ces phrases prédéfinies.

Il est important de connaître rapidement deux paramètres de projet. Par défaut, les captures d'écran sont enregistrées dans le répertoire de travail courant. La variable d'environnement SCREENSHOT_PATH permet de les rediriger vers un autre emplacement, ce qui facilite la gestion des fichiers de compilation sur une machine partagée. L'interaction avec les boîtes de dialogue système ou une autre application nécessite le serveur UIAutomator2, démarré avec la commande `start_test_server_in_background(with_uiautomator: true)`.

Création de nouveaux scripts

Ouvrez le fichier de fonctionnalités et les lignes suivantes

Fichier de fonctionnalités de connexion ouvert dans un éditeur affichant les étapes du scénario Gherkin

Feature: Login feature
  Scenario: As a valid user I can log into my app
    When I press "Login"
    And I enter my username
    And I enter my password
    Then I see "Welcome to coolest app ever"

Ouvrez le fichier de définition d'étape et définissez la méthode dans le fichier *.rb.

Carte des fichiers de définition des étapes Rubyping une ligne Gherkin à une Calabash requête d'élément

Given /^I am on the login windows$/ do
   wait_for(:timeout =>100) { element_exists("* id:'loginInput;")}
   check_element_exists("* id:'loginInput;")
end

Exécuter le projet de test

Pour exécuter le projet de test, utilisez la commande ci-dessous

calabash-android run "APK Path" "feature file Path" --tags "tag name"

Cucumber Le programme affiche chaque étape au fur et à mesure de son exécution, et une exécution réussie se termine par le scénario et le total des étapes affichés ici.

Calabash Résultat de l'exécution montrant chaque étape Gherkin exécutée sur le périphérique

Calabash Le résumé de la console affiche les scénarios réussis et le nombre d'étapes après exécution.

Commun Calabash Erreurs et comment les corriger

La plupart des échecs lors de la première exécution proviennent des règles d'empaquetage et d'autorisation dont dépend le serveur de test, et non du scénario lui-même. Le tableau ci-dessous associe les symptômes les plus fréquemment signalés à leurs causes documentées.

Symptôme Cause probable et solution
L'application plante dès le début d'un test. L'APK ne contient pas l'autorisation android.permission.INTERNET, nécessaire au serveur de test pour accepter les commandes. Déclarez cette autorisation dans AndroidManifest.xml et reconstruisez.
Les boutons et le texte ne répondent pas aux pressions. Aucune version cible du SDK n'est déclarée. Ajoutez une entrée uses-sdk indiquant le niveau du SDK utilisé pour la compilation de l'application.
Le serveur de test ne parvient pas à se connecter à l'application. Le fichier APK n'a pas été resigné avec la clé de débogage. Exécutez la commande de resignature, puis compilez à nouveau avant de l'exécuter.
Aucun périphérique n'est répertorié lors de l'exécution. Le débogage USB est désactivé ou le pilote est manquant. Vérifiez d'abord que le numéro de série apparaît bien dans la sortie de la commande `adb devices`.
Les étapes échouent avec une erreur d'étape non définie La formulation Gherkin ne correspond à aucune expression régulière dans step_definitions. Copiez l'extrait suggéré. Cucumber imprime et met en œuvre.

Deux entrées dans le manifeste corrigent les deux premières lignes. Ajoutez-les avant de resigner l'APK.

<uses-permission android:name="android.permission.INTERNET" />
<uses-sdk android:targetSdkVersion="SDK_VERSION" />

Les échecs de délai d'attente sont généralement dus à des facteurs environnementaux plutôt qu'à des problèmes fonctionnels. Un émulateur lent, un démarrage à froid de l'application ou une synchronisation en arrière-plan peuvent tous faire dépasser la fenêtre d'attente ; il est donc conseillé d'augmenter le délai d'attente avant de modifier une étape qui était en réalité correcte.

Is Calabash Toujours maintenu ? Alternatives pour les tests mobiles modernes

Calabash n'est plus activement développé. Microsoft a cessé de contribuer après avoir pris en charge la version finale d'iOS 11 et Android Après huit versions, le projet est désormais un code source ouvert archivé, sans responsable de maintenance. Les suites existantes fonctionnent encore sur les anciens appareils, mais les nouveaux développements devraient s'appuyer sur une plateforme prise en charge.

FrameworkTA Plateforme complète Meilleur adapté à
Appium Android et iOS Suites multiplateformes dans Java, Python, Ruby ou JavaScript, et le remplacement le plus proche pour un Calabash Équipe.
Espresso Android uniquement Tests rapides en cours d'exécution écrits en Kotlin ou Java par les développeurs de l'application eux-mêmes.
Test XCUIT iOS seulement Originaire Xcode suites, le successeur pris en charge des retraités Cadre d'automatisation de l'interface utilisateur.
Maestro et Détox Android et iOS De nouveaux projets open source visant à améliorer la résistance aux artefacts et les applications React Native.

L'habitude BDD se transpose sans problème. Les fichiers de fonctionnalités Gherkin restent inchangés, seuls les corps des définitions d'étapes changent, car Cucumber Il se situe au-dessus du pilote plutôt qu'à l'intérieur. Les équipes qui migrent conservent généralement les fichiers de fonctionnalités et réécrivent les étapes Ruby en conséquence. Appiumet réutiliser le même test mobile matrice de dispositifs et tests d'automatisation pipeline qu'ils exploitent déjà.

FAQ

Oui. Une gem calabash-ios distincte pilotait les applications iOS via le même Ruby et Cucumber couche. Elle partage le statut de dépréciation de la Android gemme, donc le travail iOS actuel est mieux servi par XCUITest ou Appium.

Les modèles d'apprentissage automatique réparent désormais automatiquement les localisateurs défectueux, signalent les scénarios instables en comparant les historiques d'exécution et regroupent les rapports d'incidents afin que les défauts les plus critiques apparaissent en premier. Le choix des assertions à effectuer reste toutefois du ressort du testeur.

Copilot gère bien les parties répétitives, comme le retour à la ligne d'un bloc wait_forping Il s'agit d'une requête d'élément. Celle-ci ne peut pas connaître les identifiants d'éléments de votre application ; par conséquent, considérez chaque étape générée comme un brouillon à vérifier par rapport au résultat d'une requête réelle.

Cucumber est le lanceur BDD générique qui lit Gherkin et appelle des méthodes Ruby. Calabash est la bibliothèque d'automatisation mobile que ces méthodes appellent. Cucumber décide de ce qui s'exécute ; Calabash effectue le clic, la saisie de texte et l'assertion.

Par défaut, les captures d'écran sont enregistrées dans le répertoire de travail courant, et nommées séquentiellement à chaque exécution. Définir la variable d'environnement SCREENSHOT_PATH avant l'exécution permet de les rediriger vers un dossier spécifique, ce qui garantit la séparation des artefacts d'intégration continue et du code source.

Non. Calabash L'instrumentation d'un APK compilé justifie l'étape de resignature. L'accès au code source permet d'ajouter des identifiants d'éléments stables, mais le framework lui-même n'a besoin que d'une version qu'il est autorisé à resigner et à instrumenter.

Oui. L'exécution se résumant à un simple appel en ligne de commande, n'importe quel serveur de compilation peut l'invoquer après la production de l'APK. Jenkins Cette tâche consiste généralement à recréer l'APK, à démarrer un émulateur, à exécuter les fonctionnalités étiquetées et à archiver les rapports.

Conservez les fichiers de fonctionnalités Gherkin inchangés et réécrivez uniquement les corps de définition des étapes. Appium Les requêtes d'éléments côté client deviennent des stratégies de localisation, et les hooks qui ont installé l'application deviennent des fonctionnalités souhaitées dans la configuration du pilote.

Résumez cet article avec :