Test d'interface utilisateur Android et iOS avec Calabash

Publié: 2022-03-11

Les tests sont une partie essentielle de tout processus de développement d'applications mobiles. Que vous automatisez ou non ces tests, aucun développeur sensé ne considère que son travail est terminé s'il n'a pas testé son application.

Une application bien testée passe généralement par plusieurs étapes de test : tests unitaires, tests d'intégration, tests d'acceptation, etc. Au fur et à mesure que votre application se développe, l'importance des tests augmente et l'automatisation des tests devient une nécessité.

Test d'acceptation de Calabash pour Android et iOS

Alors que d'autres plates-formes, telles que le Web, ont considérablement progressé en termes de mécanismes et de cadres de test, le domaine mobile n'est pas à la traîne. Dans cet article, vous apprendrez comment vous pouvez utiliser Calabash pour automatiser l'interface utilisateur de vos applications Android et iOS à l'aide d'instructions en anglais simple et rendre les tests d'acceptation aussi indolores que possible.

En quoi consistent les tests d'interface utilisateur ?

Si vous avez testé vos applications manuellement, vous perdez probablement une grande partie de votre temps à effectuer les mêmes tâches encore et encore. Vous apportez quelques modifications au code, créez l'application, exécutez-la dans un appareil ou un émulateur, et manipulez l'application pour déterminer si elle fonctionne comme prévu.

En automatisant les tests de l'interface utilisateur, vous pouvez effectuer automatiquement ces mêmes étapes manuelles. Si votre application est d'une taille décente, cela peut vous faire gagner beaucoup de temps et éviter que votre application ne soit criblée de bogues embarrassants, en particulier ceux de régression.

"Cela semble génial", dites-vous, mais comment faites-vous pour votre application Android ou iOS ?

Cadres de test d'interface utilisateur pour Android et iOS

Si vous lisez la documentation officielle pour Android et iOS, ils vous suggèrent d'écrire et d'exécuter des tests d'interface utilisateur dans leurs IDE officiels. Pour Android, c'est Android Studio, et pour iOS, c'est Xcode.

La documentation officielle va jusqu'à recommander des frameworks spécifiques pour les tests. La documentation officielle d'Android couvre certains sujets concernant Espresso, le cadre de test de l'interface utilisateur Android. De même, Apple suggère d'utiliser le framework XCTest.

Et si vous envisagez de travailler sérieusement sur des tests d'interface utilisateur, vous suivrez peut-être ces suggestions, ce qui est logique car Espresso est géré par Google et fait partie du référentiel de support Android. Il est très probable qu'Espresso prendra en charge toutes les nouvelles fonctionnalités que Google introduira pour Android à l'avenir. Vous pourriez en dire autant du framework XCTest pour iOS.

Cependant, il convient de garder à l'esprit que malgré les nombreux avantages des tests automatisés, de nombreux développeurs ne les écrivent tout simplement pas du tout.

Tout développeur conscient des automatisations de test, au fond de lui, sait que c'est une excellente idée. Mais, lorsqu'il s'agit de s'asseoir et d'écrire ces tests, de nombreux développeurs commencent à se demander si cela en vaut la peine, car "toucher le bouton" manuellement s'avère être une opération beaucoup plus rapide que d'écrire un code qui "touchera ce bouton". automatiquement. Parfois, les clients et les gestionnaires, qui attendent avec impatience d'essayer l'application, n'aident pas non plus.

De nombreux développeurs, à ce stade, décident qu'il est préférable de continuer à travailler sur de nouvelles fonctionnalités de l'application plutôt que d'écrire des tests d'interface utilisateur automatisés pour les fonctionnalités existantes.

Lorsque l'application grandit, il devient de plus en plus long de "toucher ces boutons" manuellement chaque fois que vous mettez à jour l'application.

Mais que se passerait-il s'il existait un cadre qui facilitait les tests d'interface utilisateur et ne vous donnait aucune excuse pour ne pas écrire de tests d'interface utilisateur pour vos applications ?

Rencontrez Calebasse.

Calabash : test d'acceptation automatisé pour les applications mobiles

Il y a environ un an, j'ai commencé à chercher un framework de test qui soit facile à utiliser pour les personnes qui ne sont pas des développeurs de logiciels. Et c'est là que j'ai trouvé Calabash.

Ce framework de test open source, développé et maintenu par l'équipe Xamarin, fonctionne à la fois pour Android et iOS. Il vous permet d'écrire et d'exécuter des tests d'acceptation automatisés pour les applications mobiles.

Les tests d'acceptation sont généralement ce qui vient après les tests système qui déterminent si votre application répond aux exigences de l'entreprise. Étant donné qu'il fonctionne au niveau de l'interface utilisateur, cela fonctionne bien avec notre choix de cadre d'automatisation des tests d'interface utilisateur.

Calabash peut interagir avec votre application comme le fait Espresso ou XCTest. Cependant, ce qui fait de Calabash un excellent choix ici, c'est son support pour Cucumber.

Cucumber est un outil qui peut exécuter des tests automatisés écrits en anglais simple (si vous le souhaitez, vous pouvez l'ajuster pour utiliser n'importe quel autre langage simple). Ainsi, pour écrire des tests automatisés sur Cucumber, le testeur n'a pas besoin de connaître Java, Objective-C ou tout autre langage de programmation.

Qu'est-ce qui fait vibrer la calebasse ?

Le framework Calabash se compose de bibliothèques qui peuvent interagir avec les applications Android et iOS. Il peut être exécuté sur de vrais appareils. Il peut donc faire des choses que le testeur fait manuellement.

Il existe deux projets différents sur GitHub qui rendent Calabash possible :

  • calebasse-android - pour Android

  • calebasse-ios - pour iOS

Calabash peut fonctionner avec n'importe quel framework de test basé sur Ruby. Dans cet article, nous aborderons le concombre - le moyen le plus populaire et le plus pratique d'écrire des tests pour Calabash.

Avant de continuer, si vous voulez essayer Calabash pendant que vous suivez le reste de l'article, assurez-vous que Ruby est installé sur votre machine. Vous pouvez trouver des instructions détaillées d'installation ici.

Ensuite, installez Calabash pour votre plate-forme préférée en suivant les liens GitHub ci-dessus.

Écrire votre premier test sur Calabash

Écrire des tests sur Calabash est assez facile. Voyons à quoi ressemble un test simple pour une application iOS :

 Feature: User Login Scenario: Unsuccessful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "tstuser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Username you entered is incorrect" Scenario: Successful user login Given the app has launched Then I wait for the "Login" button to appear When I enter "testeruser" into the "Username" field And I enter "qwerty" into the "Password" field And I touch "Login" Then I should see "Hey testeruser!"

Ici, une application est testée avec un nom d'utilisateur et un mot de passe incorrects, puis est testée avec un nom d'utilisateur et un mot de passe corrects. Le test s'attend à ce que l'application échoue à se connecter pour le premier scénario, mais réussisse dans le second.

Vous pouvez créer autant de scénarios que nécessaire, et tout ce que vous avez à faire est de décomposer les étapes/instructions en phrases simples en anglais. Comme si vous écriviez une histoire !

Quiconque connaît le développement piloté par le comportement (BDD) se sera déjà familiarisé avec cela.

Comment fonctionne la calebasse ?

Pour voir ce qui se passe derrière les étapes utilisées par le testeur, vous pouvez ouvrir le projet sur GitHub et vérifier le fichier suivant :

 calabash-cucumber/features/step_definitions/calabash_steps.rb

Voyons une définition de l'étape suivante :

 When I enter "testeruser" into the "Username" field
 Then /^I enter "([^\"]*)" into the "([^\"]*)" field$/ do |text_to_type, field_name| touch("textField marked: '#{field_name}'") wait_for_keyboard keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Ce petit extrait de code Ruby recherche un champ spécifique, le touche, attend que le clavier apparaisse, tape le texte de la variable text_to_type et attend un peu avant de passer à l'étape suivante.

Le premier mot de l'étape peut être « Étant donné », « Quand », « Alors », « Et » ou « Mais ». Peu importe le mot-clé que vous utiliserez. Vous pouvez utiliser n'importe lequel d'entre eux pour rendre l'histoire plus claire.

Comment ajouter des étapes personnalisées

Si vous avez besoin d'une étape qui n'est pas encore implémentée dans Calabash, vous pouvez l'écrire vous-même. La syntaxe est exactement la même que dans les étapes déjà prédéfinies.

Par exemple, si un testeur doit accéder au champ de saisie par un espace réservé, au lieu du nom du champ :

 Then /^I enter "([^\"]*)" into the field with placeholder "([^\"]*)"$/ do |text_to_type, placeholder| touch("textField placeholder:'#{placeholder}'") wait_for_keyboard() keyboard_enter_text text_to_type sleep(STEP_PAUSE) end

Cette définition d'étape est sensiblement la même que la précédente, mais vous accédez au champ par un espace réservé au lieu du nom du champ. Compte tenu de l'apparence de votre application, cela peut rendre les choses encore plus faciles pour le testeur.

Et c'est aussi facile pour le développeur. Le développeur implémente l'étape une fois, puis le testeur l'utilise chaque fois qu'il en a besoin. De plus, vous n'avez pas besoin de connaître beaucoup de Ruby pour implémenter vos propres étapes personnalisées.

Vous pouvez trouver les fonctions Ruby que vous pouvez utiliser ici :

http://www.rubydoc.info/gems/calabash-cucumber/Calabash/Cucumber

Nuage de test Xamarin

Il y a un autre défi lors du test des applications mobiles. Vous devez les tester sur autant d'appareils que possible, car il y a tellement d'appareils et de versions de système d'exploitation.

C'est là que Xamarin Test Cloud aide beaucoup. Il y a environ 2 000 appareils réels dans le cloud et la bonne nouvelle est qu'il prend en charge les tests Calabash.

Les mêmes tests Calabash qui vous ont permis de gagner du temps en vous évitant de faire des tâches répétitives peuvent désormais être utilisés pour tester votre application sur de nombreux appareils réels.

Commencer à écrire des tests d'interface utilisateur

Que Calabash soit la solution de test dont votre application a besoin, avec les avantages qu'elle apporte, elle ne laisse aucune place aux excuses lorsqu'il s'agit d'écrire des tests d'interface utilisateur automatisés pour vos applications mobiles. Calabash peut échouer si votre application s'appuie fortement sur certaines fonctionnalités de l'appareil (par exemple, l'appareil photo), mais cela rend toujours l'écriture de tests pour la majorité des applications beaucoup plus facile.