L'art de tester une application mobile à grande échelle : le cas de l'app Android Netflix

  • Date de parution
  • Date de mise à jour
  • AuteurCarl-Stéphan Parent

Dans l'univers impitoyable du streaming vidéo, la qualité d'une application mobile est un facteur déterminant pour la satisfaction client. Comment une application utilisée par des millions de personnes sur une multitude d'appareils différents garantit-elle une expérience stable et sans accroc ? Quels sont les défis uniques posés par un écosystème aussi vaste et fragmenté que celui d'Android ? Et comment une entreprise comme Netflix s'y prend-elle pour tester son application à une échelle aussi impressionnante ? À travers cet exemple concret, qui pourrait bien figurer dans un recueil intitulé "Testing d'applications mobiles : études de cas", cet article vous plongera au cœur de la stratégie de tests Android de Netflix, en explorant d'abord la complexité et l'évolution de leur approche, puis les outils et stratégies d'automatisation qu'ils mettent en œuvre, et enfin l'infrastructure et les processus qui soutiennent leur quête d'une qualité durable. Sans plus attendre, découvrons ensemble le paysage de tests complexe et évolutif de l'application Netflix.

1 : Un paysage de tests complexe et évolutif.

1.1 Genèse et évolution de l'application mobile Android.

L'application Android Netflix a connu une évolution architecturale significative depuis sa création il y a quatorze ans. Initialement une application hybride combinant des composants natifs et des webviews, elle a été entièrement réécrite en natif pour surmonter des problèmes de performance et offrir une expérience utilisateur plus homogène. Aujourd'hui, avec un code base conséquent et une migration progressive vers Jetpack Compose, la complexité de l'application nécessite une stratégie de tests robuste et adaptable.

1.2 Transformation de l'organisation des tests.

L'approche de la gestion des tests a également évolué au sein de Netflix. L'équipe dédiée de SDET (Software Developer Engineer in Test), autrefois responsable de l'ensemble des tests d'intégration, a été réorganisée. Désormais, la responsabilité des tests d'automatisation est décentralisée et incombe aux équipes de développement de chaque fonctionnalité. Une petite équipe de SDET de support continue d'offrir son expertise aux différentes équipes, tandis que l'assurance qualité (QA) effectue des tests manuels finaux avant chaque publication.

1.3 Défis liés à l'écosystème Android.

L'un des défis majeurs pour Netflix est la grande variété d'appareils et de versions d'Android sur lesquels l'application doit fonctionner de manière optimale. Cela inclut la prise en charge des appareils à ressources limitées (Android Go), des appareils pliables avec leurs spécificités, et une large gamme de versions d'OS, avec une feuille de route pour concentrer la prise en charge sur les versions plus récentes. Les particularités des versions d'Android spécifiques aux fabricants ajoutent une complexité supplémentaire, rendant les tests sur appareils physiques indispensables.

2 : Outils et stratégies au cœur de l'automatisation.

2.1 Fondations des tests automatisés : tests unitaires et captures d'écrans.

Netflix s'appuie sur une base solide de tests unitaires pour valider la logique métier de l'application mobile, en utilisant des frameworks tels que Strikt, Turbine, Mockito, Hilt et Robolectric. L'accent est mis sur la rapidité et la fiabilité de ces tests. Les tests de capture d'écran, réalisés avec Paparazzi et des solutions internes, jouent un rôle crucial dans la validation visuelle de l'application à différents niveaux (composants, écrans, localisation et accessibilité), servant de complément essentiel à la QA manuelle.

2.2 Tests d'intégration sur appareils : validation fonctionnelle et performance.

Les tests d'intégration sur appareils, bien que plus lents et complexes, sont essentiels pour valider le comportement global de l'application dans des conditions réelles. Netflix utilise une variété de frameworks pour ces tests, notamment Espresso, un framework PageObject interne pour faciliter la maintenance de l'UI, UIAutomator pour les tests de la version finale, ainsi que des outils dédiés aux tests de performance, de capture et playback réseau, de simulation de backend et de validation des analytics.

2.3 Organisation et maintenance des tests : PageObjects et gestion de la Flakiness.

L'utilisation du PageObject pattern et du concept de "Test Steps" permet d'organiser et de maintenir plus efficacement les tests d'intégration. Les PageObjects abstraient les interactions avec l'interface utilisateur, tandis que les "Test Steps" fournissent un historique visuel détaillé de l'exécution des tests grâce à des captures d'écran automatiques. La gestion de la flakiness des applications mobiles (les tests instables), inhérente aux tests sur appareils, est une priorité, avec des outils pour identifier les causes des échecs, notifier les équipes et automatiser les tentatives de relance ou la réparation des appareils.

3 : Infrastructure et pipelines pour une qualité durable.

3.1 Infrastructure de laboratoire d'appareils interne.

Netflix dispose d'une infrastructure de laboratoire d'appareils interne sophistiquée, permettant un contrôle précis de l'environnement de test. Cela inclut la possibilité de cibler des appareils spécifiques, de capturer des données essentielles (vidéo, captures d'écran, logs) et de simuler des conditions réseau variées. Des fonctionnalités uniques, comme une tour cellulaire interne et la désactivation des mises à jour système, témoignent de l'engagement de Netflix à tester l'application dans des conditions aussi proches que possible de l'utilisation réelle.

3.2 Pipelines CI/CD et stratégies de couverture des tests.

Les pipelines CI/CD de Netflix sont conçus pour intégrer les tests à chaque étape du développement. Différents types de tests sont exécutés lors des pull requests (tests unitaires, capture d'écran, tests sur un sous-ensemble d'appareils) et après la fusion du code (suites de tests plus complètes, tests de performance). La couverture des tests sur appareils est gérée stratégiquement, avec des "narrow grids" pour les PR (exécution sur un nombre limité d'OS) et des "full grids" pour les suites post-merge (exécution sur toutes les versions d'OS supportées), optimisant ainsi le temps d'exécution tout en assurant une couverture adéquate.

3.3 Évolution future des tests chez Netflix.

Netflix continue d'innover dans sa stratégie de tests. L'entreprise explore l'utilisation d'émulateurs pour accélérer les cycles de feedback lors des PR et de Roborazzi pour des tests de capture d'écran plus interactifs. Le développement d'une approche de "demo app" modulaire vise à faciliter les tests au niveau des fonctionnalités. L'amélioration continue des outils et des processus de test reste une priorité pour Netflix, dans le but de maintenir une qualité d'application élevée et de garantir une expérience utilisateur optimale pour son audience mondiale.

En définitive, le parcours de Netflix dans le test de son application Android à grande échelle révèle une ingénierie sophistiquée et en constante adaptation. Premièrement, nous avons exploré la complexité de cet écosystème, depuis l'évolution architecturale de l'application jusqu'aux défis posés par la diversité des appareils et des versions d'Android, soulignant la nécessité d'une approche de test flexible et réactive. Ensuite, nous avons plongé au cœur de leur arsenal d'outils et de stratégies d'automatisation, mettant en lumière l'importance des tests unitaires, des tests de capture d'écran et des tests d'intégration sur appareils, ainsi que les techniques d'organisation et de gestion de la flakiness. Enfin, nous avons examiné l'infrastructure de laboratoire d'appareils interne et les pipelines CI/CD qui soutiennent cet effort continu pour garantir une qualité durable. Alors que Netflix continue d'innover et d'étendre son service, comment l'évolution des technologies d'IA et de machine learning pourrait-elle transformer les stratégies de test d'applications à cette échelle dans le futur ?

Source :

Jose Alcérreca "Netflix App Testing At Scale" in Medium Android Developers (16/04/25) [28/04/25] [https://medium.com/androiddevelopers/netflix-app-testing-at-scale-eb4ef6b40124].