Tester son Application mobile en toute efficacité!

Auteur du billet de blog : Rudy Spano - Neotech Solutions

Rudy Spano

Consultant .Net
  Publié le jeudi 4 mai 2017

Expert technique .Net passionné par tout ce qui est innovant en environnement Microsoft. De la mobilité, du client lourd (Xaml Applications) mais aussi une petite pointe de Web...

Le nombre important de terminaux mobiles rend le développement et la validation d’une application mobile très complexe. En effet, il parait utopique pour un développeur ou même pour une grande boite de certifier que son application sera 100% fonctionnelle sur tous les téléphones et tablettes de différentes résolutions, versions d’OS, performances, configurations, etc …

 

Tests UI ? 

Tests unitaires, tests d’intégration, … Différentes stratégies de test tentent de valider le bon fonctionnement d’une application lors des phases de développement et de maintenance (tests de non régression notamment).

Un utilisateur qui télécharge une application mobile, qui se retrouve avec une application qui ne s’affiche pas ou mal, abandonnera rapidement et laissera dans le pire des cas une mauvaise appréciation sur le Store… Ce qui découragera les futures personnes intéressées par votre application.

L’idée des « Tests UI » est de faire des tests de surface sur les différents écrans de votre application sur le plus possible de configurations compatibles afin d’éviter ce phénomène…

Dans cette démonstration, j’ai choisi d’utiliser Xamarin Tests UI pour tester mon application. 

A noter que ce framework d’écriture de tests ne se limite pas à Xamarin et permet de tester toutes les applications mobiles Android et iOs (natives, Cross-plateformes, Cross-plateformes Web, …).

 

Xamarin Test UI

La création d’un projet « UI Test App » via Visual Studio 2015/2017 est accessible via la section Cross-Platform :

 

En plus d’un fichier Tests.cs à renommer/dupliquer en fonction du découpage métier de l’application à valider, on trouve une classe AppInitializer.cs 

Cette classe est le point d’entrée permettant de spécifier l’apk et ou l’ipa (possible que sous Mac Os) à tester : 

  

Xamarin Test Recorder

Si vous le souhaitez, vous pouvez écrire vos tests grâce aux librairies Xamarin.UI.Tests et NUnit...

Cependant, là où ça devient intéressant, c'est que Xamarin Test Recorder nous permet d’automatiser l’écriture de ces tests en manipulant l’application en question. L’outil est disponible sous Windows via une extension de Visual Studio (2015/2017).

 

  • Création d'un test

 

  • La manipulation de l’application entraîne l’écriture du test en temps réel…

  

Scénario

Mon but est de valider le bon fonctionnement du scénario principal d’une de mes applications permettant de rechercher une bière, en afficher les informations (afin d’y ajouter une note et de profiter de l’avis des autres utilisateurs, …) . Ci-dessous le contenu de mon test :

Remarquez les points importants suivants :

  • Il est possible de simuler les différentes interactions : Tap, EnterText, Swipe, …
  • Les contrôles sont « sélectionnables » pour les manipulations/vérifications via différents mécanismes :
    • En se basant sur le type d’élément et un index
    • En se basant sur une propriété du contrôle
    • En se basant sur un identifiant dédié. Cette approche est certainement la plus fiable. Pour une application Xamarin Forms, par exemple, il suffit de renseigner une propriété AutomationId sur les UI XAML.
    •   …
  • Il est important d’invoquer la méthode app.Screenshot avec un label approprié à chaque étape du test pour la suite des opérations…
  • Il est possible d’effectuer des Assertions sur les valeurs. La synchronisation des vérifications se fait via l’appel à app.WaitForElement.
  • Le framework Xamarin UI Tests permet de simuler notamment la localisation du téléphone pour des tests pertinents. 

On peut alors lancer les tests et regarder l’interface s’animer toute seule comme par magie 😊

 

Visual Studio Mobile Center - Tests

Maintenant que vous avez vos tests, c’est le moment de profiter de la puissance du Cloud!

Visual Studio Mobile Center est la nouvelle plateforme web pensée pour la mobilité. Cette nouvelle interface en version preview a pour vocation de proposer un ensemble de fonctionnalités très utiles pour les développeurs d’applications mobiles.

Ceci en regroupant les fonctionnalités de différents produits existants:

-HockeyApp pour la distribution, la télémétrie, la gestion des crashes, événements, …

-Azure Mobile App (Subscription azure requise) pour l’authentification, la création de datasources, …

-Xamarin Test Cloud pour la possibilité de lancer des Tests UI sur une flotte impressionnante de réels device à distance (pas d'émulation mais de vrais téléphones!).

C’est ce dernier groupe de fonctionnalités qui nous intéresse pour notre scénario. Pour plus d’information sur Mobile Center, rien de plus efficace que de créer un compte gratuit ici et de commencer à jouer!

 

  • Création d’une release

 

  • Création d’une campagne de tests et sélection des device cibles parmi 235 choix pour Android ! Et 160 sur iOs (différentes déclinaisons d’ipod, iphone, ipad sur différentes versions). Vous l’aurez compris, il serait très compliqué de se procurer une telle flotte de device..! 

 

  • Lancement des tests

Tout à coup… On se retrouve moins assisté par la plateforme qui nous demande d’installer Node.js et la CLI de Mobile Center. Promis, ça n’est pas compliqué même pour ceux qui n’ont jamais utilisé NPM comme moi…

A noter qu'à l’avenir, une intégration dans Visual Studio telle que le propose Xamarin Test Cloud dans VS et Xamarin Studio sera surement proposée!

 

C’est parti !

 

Une fois, le test terminé, on a le droit à un ensemble d’infos utiles et de magnifiques captures d’écran sur chaque device ! Ainsi qu'une vue par device avec la consommation... (CPU => 124% ..?)

 

En jouant notre test, on découvre que les device se trouvent à…

 

Aarhus au Danemark ! Bon Ok, c’était peut-être un peu plus simple de trouver l’information sur Google… 😊

 

Et la suite… ?

Au vu du scénario, on peut se poser certaines questions :

"Combien ça coûte ? Ça doit être très cher..."

On peut trouver le "pricing" sur le site officiel. Cela commence à 99$. Bien que ce tarif soit désigné pour les "Newbies", il vous permet d'utiliser une heure de device par jour (tous device confondus), ce qui à mon avis est déjà une capacité de tests intéressante pour vos applications... Bien sûr, si vous souhaitez exploiter la plateforme plusieurs heures par jour et lancer des tests en parallèle, la facture sera en conséquence... Encore une fois, rien ne vaut les périodes d'essai pour se rendre compte des possibilités...

"J’ai des erreurs sur un device lors de l'exécution d'un test, qu’est-ce que je peux faire.. ?"

La réflexion est la même que lorsque vous observez une erreur sur un device quelconque... Ça arrive plus souvent qu'on ne le pense..! Par exemple, j'ai pu constater que sur un téléphone en particulier parmi une vingtaine de testés, l'un de mes écrans ne s'affichait tout simplement pas (écran noir).  Bref, on peut relancer le test pour déterminer si le bug intervient toujours/souvent/rarement. On peut compléter notre test en ajoutant des étapes/screenshots/assertions pour trouver une piste puis une solution de contournement... Vous l'aurez compris, cela peut s'avérer plus compliqué que lorsque vous avez à votre disposition le device...

Cependant, il y'a aussi des avantages! La plateforme, vous permettra facilement de vérifier si le bug se produit sur un device similaire: matériel, version d'Android, surcouche système, puissance, ...

Cerise sur le gâteau, lors de la Keynote de la conférence Xamarin Evolve 2016, un outil en preview privée nommé Test Cloud Live a été présenté. Celui-ci permet tout simplement de streamer le téléphone qui vous fait des misères  et même d'y attacher votre débogueur à distance! A voir comment ce projet va évoluer...

"Existe t-il des solutions concurrentes?"

Comme souvent, la réponse est oui. Amazon propose notamment la solution AWS Device Farm avec une liste de device un petit peu plus petite à première vue: https://aws.amazon.com/fr/device-farm/device-list/. Google propose aussi ce type de service pour les device Android, Firebase Test Labhttps://firebase.google.com/docs/test-lab/ . A comparer en termes d'intégration, simplicité, possibilités, prix...

Commentaires