Firebase Test Lab est un service cloud de Google pour les tests automatisés d'applications mobiles sur des appareils réels situés dans les centres de données Google. Test Lab permet d'exécuter des tests d'instrumentation, des tests de capture d'écran et des tests robot sur des centaines de configurations d'appareils avec différentes versions d'Android et iOS sans avoir besoin de maintenir votre propre ferme d'appareils. Selon Firebase Documentation, 2026, le test robot Firebase parcourt automatiquement tous les écrans de l'application, détectant les crashs, les ANR et les problèmes d'UI sans écrire une seule ligne de code de test. Le service prend en charge l'intégration avec les systèmes CI/CD et fournit des rapports détaillés avec vidéos et journaux.
Points clés
Firebase Test Lab est l'infrastructure cloud de Google pour les tests automatisés d'applications mobiles sur des appareils physiques situés dans les centres de données mondiaux de Google. Contrairement aux émulateurs sur une machine locale, Test Lab exécute des tests sur de vrais appareils Android et des appareils iOS avec différentes versions de systèmes d'exploitation, résolutions d'écran, tailles de RAM et niveaux d'API. Le service traite automatiquement les résultats des tests, fournissant des vidéos d'exécution, des captures d'écran des étapes et des journaux détaillés.
Maintenir votre propre ferme d'appareils nécessite un investissement en capital important pour l'achat et la maintenance d'appareils physiques. Firebase Test Lab fournit un accès à des milliers d'appareils sur la base du paiement à l'utilisation avec une limite gratuite sur le plan Spark. Test Lab met automatiquement à jour le parc d'appareils vers les modèles actuels, y compris les derniers flagships Google Pixel, Samsung Galaxy, Xiaomi et iPhone. Les tests s'exécutent en parallèle sur plusieurs appareils, réduisant ainsi le temps total de vérification de l'application.
Pour Android, Test Lab prend en charge les tests sur des appareils avec des niveaux d'API de 21 à la dernière version stable d'Android. La prise en charge iOS inclut de vrais appareils iPhone et iPad avec des versions iOS de 15 à la dernière version stable. Les tests robot et XCTest sont disponibles pour iOS. Chaque test peut être exécuté sur des appareils physiques ou des émulateurs — pour des résultats les plus précis, Google recommande d'utiliser des appareils physiques car ils révèlent les problèmes de capteurs, de caméra et d'interfaces réseau.
Firebase Test Lab prend en charge plusieurs types de tests, chacun résolvant sa propre tâche dans le cycle de développement : tests robot pour une vérification rapide de la stabilité, tests d'instrumentation pour une vérification fonctionnelle et tests de capture d'écran pour détecter les régressions visuelles. Le choix du type de test dépend du stade de développement et des objectifs d'une exécution particulière.
Les tests robot sont une fonctionnalité unique de Firebase Test Lab qui ne nécessite pas d'écrire de code de test. Firebase Crawler explore automatiquement l'application : trouve tous les éléments interactifs de l'UI, clique dessus, remplit les formulaires avec des données de test, navigue entre les écrans et enregistre toute défaillance (crash, ANR, exceptions). Les tests robot détectent jusqu'à 80 % des bogues critiques sans une seule ligne de code de test, ce qui en fait un outil idéal pour évaluer la stabilité de base d'une application dans les premières étapes du développement.
Les tests d'instrumentation sont des tests écrits par le développeur à l'aide des frameworks Espresso (Android) ou XCTest (iOS). Test Lab exécute l'APK avec les tests sur l'appareil cible et collecte les résultats d'exécution. Les tests peuvent être simples (vérification de l'affichage des éléments) ou complexes (scénarios de bout en bout : connexion, ajout au panier, finalisation de commande). Firebase Test Lab prend en charge Android Test Orchestrator pour isoler les tests les uns des autres, empêchant un test échoué d'affecter les autres.
Les tests de capture d'écran sont utilisés pour détecter les régressions visuelles dans l'application. Game loop est un type de test spécial qui transmet une liste de scénarios à l'application via intent, et l'application doit exécuter ces scénarios et prendre des captures d'écran des écrans clés. Test Lab collecte les captures d'écran de tous les appareils de la matrice et permet de les comparer avec des images de référence pour détecter les différences. Ce type de test est particulièrement populaire dans les applications de jeu pour vérifier le rendu sur différents GPU.
| Type de test | Code | Ce qu'il vérifie | Quand l'utiliser |
|---|---|---|---|
| Test robot | Non requis | Crash, ANR, exceptions | Vérification rapide de stabilité |
| Instrumentation | Espresso / XCTest | Fonctionnalité des scénarios | Tests de régression |
| Capture d'écran | Game loop | Régressions visuelles | Vérification UI sur différents appareils |
La matrice de test dans Firebase Test Lab est un ensemble de configurations d'appareils sur lesquelles le test sélectionné est exécuté. Chaque configuration inclut le modèle d'appareil, la version de l'OS, l'orientation de l'écran (portrait/paysage) et les paramètres régionaux (locale, langue). Le test s'exécute en parallèle sur toutes les configurations sélectionnées, réduisant considérablement le temps d'exécution total par rapport à l'exécution séquentielle sur chaque appareil.
Google recommande d'inclure dans la matrice des appareils aux caractéristiques différentes : un modèle phare (Google Pixel, Samsung Galaxy S), un appareil économique (Moto G, Xiaomi Redmi), un appareil avec la version d'API minimale prise en charge par l'application. Une matrice optimale inclut 5 à 10 configurations couvrant toutes les versions d'OS que l'application prend en charge. Pour iOS, des modèles d'iPhone et d'iPad de différentes générations sont sélectionnés (par exemple, iPhone SE, iPhone 14, iPad Air) avec différentes versions d'iOS.
Test Lab distribue automatiquement les tests sur les appareils sélectionnés, exécutant chaque test sur chaque configuration. Le temps d'exécution de toute la matrice est égal au temps d'exécution du test le plus lent sur l'appareil le plus lent — tous les autres s'exécutent en parallèle. Si un test échoue sur tous les appareils, Test Lab arrête son exécution sur les configurations restantes pour économiser les ressources. Les résultats sont regroupés par test et par appareil, permettant d'identifier rapidement si une erreur est spécifique à une configuration particulière.
Les tests robot sont une fonctionnalité phare de Firebase Test Lab qui vous permet d'explorer automatiquement une application sans écrire un seul test. Firebase Crawler (robot) analyse la hiérarchie UI de l'application, trouve tous les éléments interactifs (boutons, champs de texte, listes, menus) et interagit avec eux, simulant le comportement d'un utilisateur réel. Les tests robot sont particulièrement efficaces dans les premières étapes du développement, lorsque les tests n'ont pas encore été écrits, ou pour vérifier du code existant.
Pour exécuter un test robot, il suffit de télécharger un APK ou IPA dans Firebase Console et de sélectionner l'option Robo test. Le robot peut se connecter automatiquement à l'application via des identifiants préconfigurés (login/mot de passe) pour accéder aux écrans cachés derrière l'authentification. Vous pouvez également définir la profondeur d'exploration (max depth) pour limiter le nombre d'étapes du robot, ou spécifier des éléments particuliers sur lesquels le robot doit cliquer en priorité.
<!-- res/xml/robo_directives.xml -->
<!-- Le robot remplira les champs de login et mot de passe -->
<?xml version="1.0" encoding="utf-8"?>
<robo-directives
xmlns:android="http://schemas.android.com/apk/res/android">
<directive
android:resourceName="@id/et_email"
android:inputValue="test@example.com" />
<directive
android:resourceName="@id/et_password"
android:inputValue="password123" />
<directive
android:resourceName="@id/btn_login"
android:clickAction="CLICK" />
</robo-directives>
Les tests robot ne remplacent pas les tests manuels et les tests d'instrumentation écrits pour des scénarios complexes. Le robot ne peut pas vérifier la logique métier : il clique sur tous les éléments à la suite, mais ne sait pas si le résultat est correct. De plus, le robot ne peut pas interagir avec des vues personnalisées qui n'héritent pas de ViewGroup standard et ne gère pas WebView. Pour ces cas, des tests d'instrumentation ou Game loop doivent être utilisés.
L'intégration de Firebase Test Lab avec les systèmes CI/CD permet d'exécuter automatiquement les tests à chaque push dans le dépôt. Test Lab prend en charge les tâches Gradle pour Android et Fastlane pour les deux plateformes. La configuration d'un pipeline CI/CD comprend la compilation de l'application, le téléchargement de l'APK/IPA dans Google Cloud Storage, l'exécution des tests via Firebase CLI et la réception des rapports dans le système CI pour afficher l'état de la compilation.
Google fournit le plugin gcloud-test-lab pour Gradle, qui automatise le téléchargement et l'exécution des tests. La tâche assembleAndroidTest compile l'APK avec les tests, et les tâches gcloud le téléchargent dans Test Lab et exécutent la matrice. Les résultats des tests sont retournés à Gradle sous forme de pass/fail, permettant l'intégration de Test Lab dans tout pipeline CI prenant en charge Gradle. Un compte de service Firebase avec des autorisations Test Lab est utilisé pour l'autorisation.
// build.gradle (module: app)
task runTestLab() {
exec {
commandLine "gcloud", "firebase", "test", "android", "run",
"--type", "robo",
"--app", "build/outputs/apk/debug/app-debug.apk",
"--device", "model=Pixel7,version=33",
"--device", "model=GalaxyS23,version=34",
"--device", "model=RedmiNote12,version=31",
"--timeout", "15m",
"--results-dir", "firebase/test-lab/robo"
}
}
Fastlane fournit le plugin firebase_test_lab pour l'intégration avec les tests iOS et Android. Une lane Fastlane effectue la compilation, exécute les tests et traite les résultats. Pour XCTest sur iOS, Test Lab nécessite un fichier xctestrun, qui est créé automatiquement lors de la compilation de la cible de test. Fastlane peut également télécharger les résultats des tests dans Slack ou d'autres messageries pour informer l'équipe de l'état des tests après chaque exécution.
Après la fin des tests, Firebase Test Lab fournit un rapport complet disponible dans Firebase Console et via gcloud CLI. Le rapport comprend un bref résumé (nombre de tests réussis, échoués et ignorés), des informations détaillées pour chaque test sur chaque appareil, des vidéos d'exécution, des captures d'écran des étapes clés et des journaux d'appareil (logcat pour Android, journal système pour iOS). Pour les tests échoués, une trace de pile avec l'emplacement exact de l'erreur est disponible.
Pour un test robot, le rapport diffère d'un test d'instrumentation : au lieu de pass/fail par cas de test, le rapport montre des statistiques d'exploration. Métriques clés — le nombre d'écrans trouvés et visités, le nombre d'interactions du robot (clics, balayages, saisie de texte), les crashs et ANR détectés, et le chemin parcouru dans l'application. La vidéo d'exécution du robot permet d'évaluer visuellement quels écrans ont été testés et lesquels sont restés non couverts.
Les résultats des tests sont stockés dans Google Cloud Storage dans le bucket associé au projet. Les données sont disponibles pour l'exportation et l'intégration avec des systèmes d'analyse externes. Pour le stockage à long terme et la comparaison des résultats entre les exécutions, il est recommandé de configurer l'exportation BigQuery ou d'utiliser l'API Firebase Test Lab pour une récupération programmatique des résultats. Google offre la possibilité de télécharger une archive ZIP avec l'ensemble complet des résultats pour chaque exécution de test.
Questions fréquentes
Le plan Spark inclut 10 tests Robo par jour et 5 heures de tests d'instrumentation par mois gratuitement. Le plan Blaze est facturé à l'heure : ~1 USD par heure-appareil pour les tests Robo et ~5 USD pour les tests d'instrumentation. Le coût exact dépend de la région et du type d'appareil.
Les appareils physiques fournissent des résultats plus précis, y compris les problèmes de capteurs, de caméra, de GPS, de Bluetooth et de performances réelles. Les émulateurs démarrent plus vite et sont moins chers, mais ne révèlent pas les problèmes liés aux caractéristiques matérielles. Google recommande les appareils physiques pour les tests de pré-lancement.
Créez un fichier XML robo_directives.xml avec des champs de saisie (login, mot de passe) et des boutons à cliquer. Téléchargez le fichier avec l'APK lors du lancement du test via Firebase Console ou CLI. Le robot effectuera les actions spécifiées avant de commencer l'exploration.
Oui, Firebase Test Lab prend en charge iOS depuis 2024. Les tests Robo (exploration automatique) et XCTest (tests d'instrumentation) sont disponibles sur de vrais appareils iPhone et iPad. Un fichier IPA avec une cible de test est requis pour le téléchargement.
Utilisez Firebase CLI dans GitHub Actions : configurez l'authentification via Service Account JSON, installez le SDK gcloud, exécutez la commande firebase test android run avec l'APK et les configurations. Les résultats des tests sont disponibles via Firebase Console ou gcloud CLI.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.
Lisez aussi