Dépannage et questions fréquentes concernant Test Lab
Cette page fournit une aide pour le dépannage et des réponses aux questions fréquentes sur l'exécution de tests avec Firebase Test Lab. Les problèmes connus sont également documentés. Si vous ne trouvez pas ce que vous cherchez ou si vous avez besoin d'aide supplémentaire, rejoignez la chaîne #test-lab sur Firebase Slack ou contactez l'assistance Firebase.
Dépannage
Pourquoi l'exécution de mon test prend-elle si longtemps ?
Lorsque vous sélectionnez un appareil ayant un niveau de capacité élevé dans le catalogue Test Lab, les tests peuvent démarrer plus rapidement. Lorsque la capacité d'un appareil est faible, l'exécution des tests peut prendre plus de temps. Si le nombre de tests appelés est beaucoup plus important que la capacité des appareils sélectionnés, leur exécution peut prendre plus de temps.
Les tests exécutés à n'importe quel niveau de capacité de l'appareil peuvent prendre plus de temps en raison des facteurs suivants :
Le trafic, qui affecte la disponibilité de l'appareil et la vitesse des tests.
Des pannes d'appareil ou d'infrastructure, qui peuvent se produire à tout moment. Pour vérifier si une infrastructure est signalée pour Test Lab, consultez le tableau de bord d'état Firebase.
Pour en savoir plus sur la capacité de l'appareil dans Test Lab, consultez des informations sur la capacité de l'appareil pour Android et iOS.
Pourquoi les résultats des tests sont-ils non concluants ?
Les résultats de test non concluants se produisent généralement en raison d'exécutions de test annulées ou d'erreurs d'infrastructure.
Les erreurs d'infrastructure sont causées par des problèmes internes Test Lab, tels que des erreurs réseau ou des comportements inattendus de l'appareil. Test Lab retire en interne les exécutions de test qui génèrent des erreurs d'infrastructure plusieurs fois avant de signaler un résultat non concluant. Toutefois, vous pouvez désactiver ces nouvelles tentatives à l'aide de failFast.
Pour déterminer la cause de l'erreur, procédez comme suit :
Réessayez le test dans Test Lab pour vérifier qu'il est reproductible.
Essayez d'exécuter le test sur un autre appareil ou type d'appareil, le cas échéant.
Si le problème persiste, contactez l'équipe Test Lab sur le canal #test-lab de Firebase Slack.
Pourquoi la segmentation a-t-elle rendu mes tests plus longs ?
La segmentation peut prolonger l'exécution de vos tests lorsque le nombre de segments que vous avez spécifié dépasse le nombre d'appareils disponibles dans Test Lab. Pour éviter cette situation, essayez d'utiliser un autre appareil. Pour en savoir plus sur le choix d'un autre appareil, consultez la section
Capacité de l'appareil.
Pourquoi le démarrage de mon test prend-il autant de temps ?
Lorsque vous envoyez une requête de test, votre application est d'abord validée, signée à nouveau, etc. en vue de l'exécution de tests sur un appareil. Normalement, ce processus se termine en moins de quelques secondes, mais il peut être affecté par des facteurs tels que la taille de votre application.
Une fois votre application préparée, les exécutions de test sont planifiées et restent dans une file d'attente jusqu'à ce qu'un appareil soit prêt à les exécuter. Tant que toutes les exécutions de test ne sont pas terminées, l'état de la matrice est "En attente" (que les exécutions de test soient dans la file d'attente ou en cours d'exécution).
Pourquoi mon test prend-il autant de temps à se terminer ?
Une fois l'exécution du test terminée, les artefacts de test sont téléchargés depuis l'appareil, traités et importés dans Cloud Storage. La durée de cette étape peut être affectée par la quantité et la taille des artefacts.
L'application ne renvoie pas de données et ne parvient pas à localiser les captures d'écran
Les artefacts d'exécution de test (tels que les captures d'écran et les fichiers journaux) sont stockés dans Google Cloud Storage et affichés directement dans la console Firebase. Si l'exécution de votre test a été effectuée au cours des 90 derniers jours, vérifiez que vous avez attribué des rôles au niveau du projet (propriétaire, éditeur ou lecteur de projet).
Assurez-vous également que Cloud Audit Logging n'est pas activé pour votre projet ou votre organisation.
Si l'exécution a été effectuée il y a plus de 90 jours, il est fort probable que les artefacts de test aient été automatiquement supprimés. Pour vérifier la configuration du bucket de résultats, cliquez sur l'onglet Résultats du test dans le tableau de bord Test Lab. Le bucket de résultats par défaut est configuré pour conserver les objets pendant 90 jours.
Pour conserver vos artefacts de test plus longtemps, exécutez la commande gcloud firebase test android run avec l'indicateur --results-bucket et transmettez le nom du bucket de résultats. Pour en savoir plus, consultez la documentation de référence sur gcloud firebase test android run.
Pourquoi est-ce que je reçois des résultats partiels ou manquants de cas de test d'instrumentation ?
Lorsque vous exécutez des tests d'instrumentation, vous pouvez voir des erreurs de test indiquant des résultats partiels contenant des messages tels que Test run failed to complete. Expected
x tests, received y (où y est inférieur à x). Cette erreur signifie que Test Lab n'a pas pu analyser le fichier logcat pour les repères de début ou de fin du scénario de test qui sont généralement générés par AndroidJUnitRunner.
Voici les causes courantes de ce problème:
Description du problème
Solution possible
Le scénario de test n'a pas été exécuté en raison d'un dépassement de délai. Si la durée totale des tests est supérieure à un délai d'expiration que vous avez spécifié ou à un délai d'expiration maximal, Test Lab annule le reste des scénarios de test.
Augmentez le délai avant expiration de la matrice pour vous assurer que tous les tests peuvent être effectués.
Si vous ne l'avez pas déjà fait, segmentez les tests afin que chaque segment exécute un sous-ensemble des tests et se termine plus rapidement.
Si vous avez déjà activé la segmentation, augmentez le nombre de segments.
Le cas de test n'a pas pu être exécuté, car il s'est arrêté prématurément ou est bloqué.
Le cas de test peut se terminer prématurément en raison d'une exception non interceptée ou d'une erreur d'assertion. Les scénarios de test peuvent se retrouver bloqués dans une boucle infinie ou ne pas pouvoir continuer, par exemple si l'application n'affiche pas la vue correcte et que le scénario de test ne peut pas effectuer l'action sur l'UI.
Vérifiez la vidéo et le logcat pour déterminer à quel moment le test s'est arrêté.
Un lanceur de test personnalisé (y compris l'extension d'AndroidJUnitRunner) a planté de manière inattendue ou a écrit des repères de début ou de fin de scénario de test inattendus dans logcat.
Vérifiez le code de votre outil d'exécution de test.
Un nombre excessif de journaux a été écrit dans logcat, ce qui a surchargé le tampon ou a fait planter le processus logcat.
Réduire les écritures à logcat.
L'application testée a planté.
Déboguer votre application
Questions fréquentes
Quels sont les quotas sans frais pour Test Lab ? Que dois-je faire si je suis à court ?
Firebase Test Lab propose des quotas sans frais pour les tests sur les appareils et l'utilisation des API Cloud. Notez que le quota de test utilise le forfait tarifaire Firebase standard, contrairement aux quotas de l'API Cloud.
Quota de test
Les quotas de test sont déterminés par le nombre d'appareils utilisés pour exécuter les tests.
Le forfait Firebase Spark inclut un quota de tests fixe sans frais pour les utilisateurs. Pour le forfait Blaze, vos quotas peuvent augmenter si votre utilisation de Google Cloud augmente au fil du temps. Si vous atteignez votre quota de tests, attendez le jour suivant ou passez à la formule Blaze si vous utilisez actuellement la formule Spark.
Si vous utilisez déjà le forfait Blaze, vous pouvez demander une augmentation de quota.
Pour en savoir plus, consultez la section Quota de test.
Vous pouvez surveiller votre utilisation du quota de test dans la console Google Cloud.
Quota de l'API Cloud Testing
L'API Cloud Testing est associée à deux limites de quota : les requêtes par jour et par projet, et les requêtes toutes les 100 secondes par projet. Vous pouvez surveiller votre utilisation dans la console Google Cloud.
Quota de l'API Cloud Tool Results
L'API Cloud Tool Results est associée à deux limites de quota : les requêtes par jour et par projet, et les requêtes toutes les 100 secondes par projet. Vous pouvez surveiller votre utilisation dans la console Google Cloud.
Envoyez une demande de quotas plus élevés en modifiant vos quotas directement dans la console Google Cloud (notez que la plupart des limites sont définies sur la valeur maximale par défaut).
Demandez des quotas d'API plus élevés en remplissant un formulaire de demande dans la console Google Cloud ou en contactant l'assistance Firebase.
Comment savoir si le trafic qui atteint mon backend provient de Test Lab ?
Depuis votre backend, vous pouvez déterminer si le trafic provient d'appareils de test hébergés par Firebase en comparant l'adresse IP source à nos plages d'adresses IP.
Test Lab est-il compatible avec VPC-SC ?
Test Lab ne fonctionne pas avec VPC-SC, qui bloque la copie d'applications et d'autres artefacts de test entre la mémoire de stockage interne de Test Lab et les buckets de résultats des utilisateurs.
Comment détecter les tests instables dans Test Lab ?
Pour détecter un comportement instable dans vos tests, nous vous recommandons d'utiliser l'option
--num-flaky-test-attempts
. Les réexécutions de Deflake sont facturées ou comptabilisées dans votre quota quotidien de la même manière que les exécutions de test normales.
Tenez bien compte des éléments suivants :
L'ensemble de l'exécution du test est de nouveau exécuté lorsqu'un échec est détecté. Il n'est pas possible de ne relancer que les cas de test ayant échoué.
Les nouvelles tentatives d'exécution de Deflake sont programmées pour s'exécuter en même temps, mais leur exécution en parallèle n'est pas garantie, par exemple lorsque le trafic dépasse le nombre d'appareils disponibles.
Test Lab est-il compatible avec les accessoires connectés ?
Oui ! Test Lab est compatible avec la Google Pixel Watch. Vous pouvez désormais exécuter des tests sur votre application Wear autonome sur les Google Pixel Watch. Pour en savoir plus sur les appareils Test Lab, consultez Tester sur les appareils disponibles.
Test Lab est-il compatible avec les derniers appareils Google ?
Oui ! Test Lab est compatible avec la Google Pixel Tablet et le Google Pixel Fold. Vous pouvez exécuter vos tests sur vos appareils physiques autonomes.
Pour en savoir plus sur les appareils Test Lab, consultez Tester sur les appareils disponibles.
Comment détecter un test en cours d'exécution dans Test Lab ?
Si vous testez votre application dans Firebase ou exécutez des tests pour un rapport pré-lancement dans la Play Console, vous pouvez détecter si un test est exécuté sur un appareil hébergé par Firebase en vérifiant la propriété système firebase.test.lab dans votre fichier MainActivity. Vous pouvez ensuite exécuter des instructions supplémentaires en fonction de la valeur booléenne de testLabSetting. Pour en savoir plus, consultez la section Comportements de test modifiés.
Test Lab est-il compatible avec Appium, Flutter/FlutterDriver, ReactNative/Jest ou Cucumber ?
Bien que certains de ces éléments figurent sur notre feuille de route, nous ne sommes actuellement pas en mesure de prendre en charge ces plates-formes de test et de développement d'applications. Toutefois, si vous avez compilé votre application avec un framework compatible avec Espresso (par exemple, Flutter), vous pouvez écrire un test d'instrumentation à l'aide d'Espresso, puis exécuter le test dans Test Lab.
Test Lab est-il compatible avec les tests d'applications obscurcies (par exemple, avec ProGuard ou R8) ?
Test Lab n'est pas explicitement compatible avec l'obscurcissement ni le démasquage. Bien que l'application s'exécute probablement, toutes les données d'application masquées, telles que les traces de pile, apparaîtront comme masquées dans les journaux.
Puis-je utiliser mon appareil pliable dans différents états et positions de pliage lors des tests sur Test Lab ?
Oui ! Vous pouvez tester votre appareil pliable dans différents états et positions.
Les appareils pliables ont différents états, comme FLAT (entièrement ouvert) ou HALF_OPENED (entre complètement ouvert et complètement fermé).
Les positions, en revanche, correspondent à l'orientation et à l'état pliable spécifiques de l'appareil. Par exemple, la position à plat, qui correspond à un état HALF_OPENED en orientation horizontale, ou la position debout, qui correspond à un état HALF_OPENED en orientation verticale.
Par ailleurs, les états disponibles sont spécifiques à l'appareil et peuvent être utilisés pour interagir à l'aide de adb
shell command cmd device_state.
Pour afficher l'état actuel, exécutez adb shell cmd device_state state.
Pour définir ou remplacer l'état actuel, exécutez adb shell cmd device_state state <IDENTIFIER>.
Pour réinitialiser l'état, exécutez adb shell cmd device_state state reset.
Pour vérifier les états disponibles, exécutez la commande adb shell cmd device_state print-states sur l'appareil pliable.
Puis-je tester Test Lab si je n'ai pas d'application ?
Contrairement aux autres produits Firebase, vous n'avez pas besoin d'ajouter de SDK Firebase pour utiliser Test Lab. Si vous ne disposez pas encore d'application, vous pouvez télécharger un APK en ligne ou créer une application et un APK de test à partir de l'un des exemples du dépôt GitHub AndroidX.
Notez que vous n'avez besoin que du fichier APK de votre application pour exécuter un test Robo, tandis qu'un test d'instrumentation nécessite à la fois une application et un APK de test compilés à partir du code source. Pour en savoir plus, consultez la page Tests d'instrumentation.
Quels appareils sont les plus adaptés aux tests de différences de captures d'écran ?
Les tests de comparaison de captures d'écran sont basés sur la comparaison des images d'écran obtenues lors de l'exécution d'un test avec des images de référence représentant le comportement attendu. Ces tests peuvent être plus fragiles sur certains types d'appareils que sur d'autres. Nous vous recommandons de cibler des appareils d'émulateur Arm (*.arm) pour ce type de tests. Les appareils d'émulateur Arm utilisent des images très similaires ou identiques aux émulateurs "génériques" d'Android Studio.
Nous vous recommandons également d'examiner les bibliothèques de tests qui peuvent vous aider à rendre les tests de captures d'écran plus robustes en cas de modifications attendues.
Test Lab met-il à jour les appareils virtuels ?
Oui ! Les appareils virtuels sont mis à jour lorsque les modifications suivantes sont apportées :
Mises à jour des images existantes
Abandon des niveaux d'API précédents
Nouveaux niveaux d'API Android ajoutés
Comment activer les rapports sur la couverture ?
Pour activer les rapports sur la couverture, ajoutez coverage=true au champ environmentVariables.
Si vous utilisez Android Test Orchestrator, vous devez fournir un répertoire pour stocker les résultats de couverture :
Où puis-je trouver des informations sur l'appareil, comme la résolution, les ABI compatibles, etc. ?
Des informations détaillées sur l'appareil sont disponibles via l'API et peuvent être consultées à partir du client gcloud à l'aide de la commande describe :
gcloud firebase test android models describe MODEL
Problèmes connus
Captcha de connexion
Le test robot ne peut pas contourner les écrans de connexion qui nécessitent une action utilisateur supplémentaire en plus de la saisie des identifiants pour se connecter, par exemple, en remplissant un CAPTCHA.
Compatibilité avec les frameworks d'UI
Le test Robo fonctionne mieux avec les applications qui utilisent des éléments d'interface utilisateur du framework d'interface utilisateur Android (y compris les objets View, ViewGroup et WebView). Si vous utilisez le test Robo pour tester des applications qui utilisent d'autres frameworks d'UI, y compris des applications qui utilisent le moteur de jeu Unity, le test peut se terminer sans explorer au-delà du premier écran.
Sauf indication contraire, le contenu de cette page est régi par une licence Creative Commons Attribution 4.0, et les échantillons de code sont régis par une licence Apache 2.0. Pour en savoir plus, consultez les Règles du site Google Developers. Java est une marque déposée d'Oracle et/ou de ses sociétés affiliées.
Dernière mise à jour le 2024/11/07 (UTC).
[null,null,["Dernière mise à jour le 2024/11/07 (UTC)."],[],[]]