PandaLab, le testing mobile à la maison

Florian Paillard
Leroy Merlin Tech.Digital
4 min readDec 4, 2019

PandaLab est une solution open source permettant de gérer une flotte de téléphones afin de lancer des tests automatisés facilement.

Pourquoi une solution maison ?

Chez Leroy Merlin, le test automatisé d’applications mobiles a toujours été un enjeu important. L’équipe mobile gère plus d’une 30e d’applications, la plupart à destination des collaborateurs de toutes les enseignes Adeo / Leroy Merlin. Cette tendance s’accélère d’autant plus que nous déployons maintenant des micro frontends en magasin pour faciliter la mise à jour et l’évolution de fonctionnalités spécifiques. Il devient donc pour nos équipes de plus en plus difficile de tester ce parc applicatif de façon manuelle et il n’est pas rare que des bugs finissent en magasin.

Beaucoup de solutions existent déjà sur le marché pour lancer des tests sur des flottes de téléphones. Dans la plupart des cas, ces solutions permettent de tester de façon efficace une application, mais vous devez aussi faire quelques concessions lorsque vous en choisissez une.

Nous avons essayé de nombreuses solutions de testing sur le cloud et nous nous sommes très souvent confronté aux mêmes problématiques. Il nous était impossible de tester sur nos téléphones spécifiques magasin (Bluebird, TX70,…) car absents du banc de tests des plateformes. Nous ne pouvions pas accéder à nos environnements de recettes depuis internet et il était donc impossible de tester nos intégrations avec les web services. Il nous semblait aussi important de pouvoir lancer ces tests depuis notre intégration continue et de pouvoir démarrer des campagnes de façon automatique, rapide et sans limites. Les plateformes cloud ne sont pas très adaptées à ce genre de tests automatiques intensifs. La plupart demandent des paramétrages manuels pour le lancement, sont lentes et ont des coûts très importants. Enfin, nous ne souhaitions pas nous imposer une technologie de test dédiée à une plateforme spécifique.

C’est dans ce contexte, et parce que chez Leroy Merlin le bricolage est une passion, que nous avons décidé de lancer le projet PandaLab en Août 2019 dans notre équipe d’innovation Open Lab, avec la participation de Ineat lab. Trois mois plus tard nous sommes fiers de vous présenter notre première version.

Choix techniques

Construire un devices lab n’est pas une mince affaire. Il s’agit de gérer un système massivement asynchrone distribué sur de nombreuses machines et téléphones. Vous devez aussi vous plier aux contraintes techniques des OS et frameworks de tests.

Pour cette première version nous avons décidé de nous appuyer sur les outils de la suite Firebase afin de simplifier la gestion des événements du lab, la connexion ainsi que le stockage. L’outil nous permet un déploiement facile et rapide de l’outil sans aucun frais au démarrage.

Pour qu’un PandaLab fonctionne il faut compter sur une partie serveur assurée par Firebase function, des agents en electron déployés sur les machines en charge de gérer les téléphones, une application mobile Android pour enroller le téléphone et un plugin gradle pour uploader les livrables et lancer les tests sur le lab depuis des jobs d’une CI . Ce projet est donc un bel assemblage de technologies et nous a apporté son lot de défis.

Fonctionnalités

Agents décentralisés

Vous pouvez utiliser autant d’agents que vous le souhaitez sur un même lab. Cela vous permet de répartir votre flotte de téléphones dans différentes équipes, tout en les rendant disponibles à tous. Ainsi chez Leroy Merlin, trois armoires sont en train d’être mise en place, une pour le web (Cf “On a construit une plateforme de test mobile”), une dans l’équipe grand public et une dernière pour les équipes collaborateurs magasin.

Liste des téléphones du lab

File d’attente des tests

Avec PandaLab, plus besoin de bloquer vos téléphones pour lancer vos tests. Le lab se charge de gérer les jobs concurrents et la disponibilités des téléphones. Des téléphones peuvent être retirés ou ajoutés à la volée, le lab se charge de tout.

Liste des jobs de tests et leur statut

Rapport de tests

Le lab propose des rapports de tests simples et efficaces pour vous aider à identifier les erreurs et à vérifier les captures d’écrans réalisées pendant les tests. Des graphes permettent de suivre l’évolution de la qualité de votre application au cours du temps.

Historique des rapports de tests d’une application

Gestion des téléphones

Les agents gèrent vos téléphones et leurs statuts (disponible, enrôlé, réservé, …). Ils sont capables de contrôler des téléphones connectés en USB mais aussi accessibles sur le même réseau Wifi. Il est aussi possible de réserver un téléphone pour le retirer des jeux de tests afin de l’utiliser pour des développements ou pour faire des démos en streamant son écran.

Liste des téléphones d’un agent

Roadmap

PandaLab sort tout juste de notre atelier mais nous avons déjà de beaux projets pour lui.

  • Notre priorité va être de le rendre compatible avec les tests appium. Il nous sera ainsi possible d’inviter nos amis d’Apple à notre banc de tests. Pour le moment le lab ne supporte que des tests d’instrumentation Android (Espresso, UIAutomator, …).
  • Nous souhaitons aussi utiliser le lab en tant que store d’application de recette. L’objectif est de simplifier la configuration d’un téléphone pour les PO et l’équipe qualité.

Une roadmap à jour est disponible sur la documentation officielle du projet : https://adeo.github.io/panda-lab/roadmap

Le projet et sa documentation sont disponibles sur Github. Nous n’attendons plus que vous pour le faire grandir !

--

--