Agent de test d'application (Android)

L'agent de test d'application est un agent de génération, de gestion et d'exécution de scénarios de test optimisé par Gemini dans Firebase. Vous définissez des objectifs de test en langage naturel, et l'agent utilise l'IA pour comprendre et parcourir votre application, simuler les interactions des utilisateurs et fournir des résultats de test détaillés.

Comment l'agent de test d'application utilise vos données

L'Agent de test d'application est fourni par Gemini dans Firebase et est régi par les mêmes conditions. Pour en savoir plus sur la manière dont Gemini dans Firebase utilise vos données, consultez Utilisation de vos données par Gemini dans Firebase.

Avant de commencer

Si vous ne l'avez pas déjà fait, enregistrez votre application auprès de Firebase.

Si vous n'utilisez aucun autre produit Firebase, il vous suffit de créer un projet et d'enregistrer votre application. Vous n'avez pas besoin d'ajouter de SDK à votre application. Toutefois, si vous décidez d'utiliser d'autres produits à l'avenir, veillez à suivre toutes les étapes de la section Ajouter Firebase à l'aide de la console Firebase.

Créer un scénario de test

Pour exécuter des tests guidés par l'IA, l'Agent de test d'application utilise vos scénarios de test en langage naturel pour exécuter des tests sur votre application.

Chaque scénario de test est divisé en étapes, qui seront exécutées de manière séquentielle. Les étapes vous permettent de diviser votre scénario de test en phases, chacune avec sa propre assertion. L'agent peut effectuer de nombreuses actions au cours d'une même étape.

Il existe deux façons de créer un scénario de test : à l'aide d'un fichier YAML ou de la console Firebase. Les fichiers YAML vous permettent de gérer vous-même les scénarios de test, généralement dans un dépôt de code source avec gestion des versions. La console Firebase peut également stocker vos scénarios de test à distance, ainsi que vos données App Distribution.

Utiliser les fichiers YAML

L'exemple suivant montre un fichier YAML qui définit deux scénarios de test :

tests:
- displayName: Login as guest
  id: login-as-guest
  steps:
  - goal: Log in as a guest
    finalScreenAssertion: The home screen is visible
- displayName: View biography card birth date
  prerequisiteTestCaseId: login-as-guest
  steps:
  - goal: Open the article on "Bob Dylan"
    hint: Use the search function to find it
    finalScreenAssertion: >-
      The article is opened and the title "Bob Dylan" is visible.
  - goal: Find Bob Dylan's birthday in the article
    hint: >-
      Look for the "Born" section in the infobox on the right side of the page.
    finalScreenAssertion: >-
      The text "May 24, 1941" is visible on the screen.

Vous pouvez organiser des groupes de tests dans un seul fichier et séparer ces suites de tests dans plusieurs fichiers. Vous pouvez ajouter un scénario de test prérequis en ajoutant un ID au test, puis en référençant cet ID à l'aide de prerequisiteTestCaseId.

Utiliser la console App Distribution

Vous pouvez également créer et gérer vos scénarios de test dans la console Firebase. Pour créer un scénario de test, ouvrez la page App Distribution de la console Firebase et procédez comme suit :

  1. Dans l'onglet Scénarios de test, cliquez sur Nouveau scénario de test. Si vous ne souhaitez pas créer votre propre scénario de test, vous pouvez modifier ou utiliser l'exemple de scénario de test fourni.
  2. Dans la boîte de dialogue Ajouter un scénario de test, attribuez un nom au scénario de test. Il permet d'identifier le test, mais il est ignoré par l'agent.
  3. (Facultatif) Sélectionnez un scénario de test prérequis contenant les étapes de configuration à exécuter avant le test principal. Si le test préalable échoue, l'ensemble du test sera marqué comme un échec. Les étapes et les résultats des tests préalables et principaux seront affichés ensemble dans les résultats des tests.
  4. Envisagez de diviser votre test en plusieurs étapes en cliquant sur le bouton Ajouter une étape.
  5. Attribuez à chaque étape un objectif qui décrit ce que l'agent de test d'application doit faire au cours de cette étape.
  6. (Facultatif) Ajoutez un indice pour fournir des informations supplémentaires afin d'aider l'agent de test d'application à comprendre et à parcourir votre application lors de cette étape.
  7. Ajoutez une assertion d'écran final pour aider l'agent de test d'application à déterminer quand l'étape a été effectuée avec succès. Cette assertion ne doit faire référence qu'à ce qui est visible à l'écran.
  8. Cliquez sur Enregistrer lorsque vous avez terminé de personnaliser votre test.

Exemple de scénario de test

Voici un exemple de création d'un scénario de test à l'aide de l'agent de test d'application :

Titre test

Chargements de la page d'accueil

Objectif

Charger la page d'accueil

Indice

Passez les écrans d'intégration. Fermez les pop-ups. Ne pas se connecter.

Assertion sur l'écran final

La page d'accueil de l'application principale est visible à l'écran, toutes les images ont été chargées et aucune erreur ne s'affiche.

Exécuter un test

La façon dont vous exécutez vos tests dépend de la façon dont vous créez et gérez vos scénarios de test. Si vous définissez des scénarios de test à l'aide de fichiers YAML, vous les exécuterez à l'aide de la CLI Firebase. Si vous créez vos scénarios de test dans la console App Distribution, vous les exécuterez depuis la console ou à l'aide de l'un des outils de la CLI App Distribution.

Utiliser les fichiers YAML

Les scénarios de test définis dans des fichiers YAML peuvent être exécutés à l'aide de la CLI Firebase.

  1. Installez la dernière version de la CLI Firebase ou appliquez la mise à jour correspondante. Nous vous recommandons de télécharger le binaire autonome de la CLI spécifique à votre OS.
  2. Connectez-vous et vérifiez que vous pouvez accéder à vos projets. Notez que si vous utilisez la CLI Firebase dans un environnement d'intégration continue, vous pouvez également vous authentifier avec un compte de service ou en utilisant login:ci.
  3. Exécutez la commande apptesting:execute. Exemple :

    firebase apptesting:execute \
      --app=1:1234567890:android:0a1b2c3d4e5f67890 \
      --test-dir=./mytests \
      ./app/build/outputs/apk/debug/app-debug.apk
    
apptesting:execute [options] [/path/to/app/binary]
--app

Obligatoire : ID de l'application Firebase de votre application. Vous trouverez l'ID d'application dans la console Firebase, sur la page Paramètres généraux.

--app 1:1234567890:android:0a1b2c3d4e5f67890

--test-dir

Chemin d'accès à un répertoire contenant des fichiers YAML de scénarios de test. La commande effectue une recherche récursive dans ce répertoire. Les fichiers peuvent donc être organisés en sous-répertoires. Si cette option n'est pas définie, "./tests" est utilisé par défaut.

--test-devices ou
--test-devices-file

Les appareils sur lesquels exécuter les tests.

Vous pouvez spécifier les appareils de test sous la forme d'une liste de spécifications d'appareils séparées par un point-virgule :

--test-devices "model=tokay,version=36,locale=en,orientation=portrait;model=b0q,version=33,locale=en,orientation=portrait"

Vous pouvez également spécifier le chemin d'accès à un fichier texte brut contenant une liste de spécifications d'appareils séparées par un point-virgule :

--test-devices-file "/path/to/test-devices.txt"

Vous pouvez rechercher les modèles d'appareils disponibles à l'aide de la gcloud CLI.

--test-username

Nom d'utilisateur pour la connexion automatique à utiliser pendant les tests.

--test-password ou
--test-password-file

Mot de passe de connexion automatique à utiliser pendant les tests.

Vous pouvez également spécifier le chemin d'accès à un fichier texte brut contenant un mot de passe :

--test-password-file: "/path/to/test-password.txt"
--test-non-blocking

Si cette option est définie, la commande lance les tests, puis renvoie immédiatement un résultat au lieu d'attendre qu'ils se terminent. Pour consulter les résultats du test, accédez à la console Firebase. Si cette option n'est pas définie, la commande bloque jusqu'à ce que les tests soient terminés et se ferme avec un code d'échec si l'un des tests échoue.

--results-bucket

Un bucket Google Cloud Storage (GCS) personnalisé dans lequel les résultats des tests sont stockés. Si vous ne renseignez pas ce champ, le bucket par défaut est utilisé. Le bucket doit appartenir à un projet pour lequel la facturation est activée. La spécification d'un bucket entraîne des frais de facturation pour l'espace de stockage utilisé.

--test-file-pattern

Un modèle d'expression régulière. Seuls les tests contenus dans les fichiers correspondant à ce format seront exécutés.

--test-name-pattern

Un modèle d'expression régulière. Seuls les tests dont le nom à afficher correspond à ce format seront exécutés.

/path/to/app/binary

Facultatif : chemin d'accès au binaire de votre application. S'il est omis, l'agent utilisera la dernière version importée dans App Distribution pour l'application spécifiée.

Utiliser la console App Distribution

Pour exécuter des scénarios de test stockés dans App Distribution, vous pouvez utiliser la console Firebase, la CLI Firebase ou les plug-ins Gradle ou fastlane de App Distribution.

Importer et exporter des scénarios de test avec des fichiers YAML

L'importation de scénarios de test à partir de fichiers YAML est utile lorsque vous souhaitez gérer des scénarios de test en dehors de la console Firebase. Il peut également être utile d'exporter des scénarios de test pour les déplacer entre des projets. Vous pouvez utiliser un LLM pour affiner des scénarios de test existants ou en créer d'autres. Vous pouvez importer et exporter des scénarios de test depuis la page "Scénarios de test" de la console Firebase ou de manière programmatique à l'aide de la CLI Firebase. Pour obtenir un exemple de scénario de test YAML, consultez Créer un scénario de test YAML.

Afficher les résultats de votre test

Vous pouvez consulter les résultats de vos tests sur la page Releases (Versions), dans l'onglet App Testing agent (Agent de test d'application) d'une version. Le bouton Afficher les détails ouvre la boîte de dialogue "Résultats du test" et affiche les problèmes, les captures d'écran de l'application et les actions effectuées par Gemini pendant le test.

Si un test inclut des actions répétées, vous pouvez afficher l'exécution du test guidé par l'IA d'origine ou vider le cache.

Pour en savoir plus sur les résultats de votre test, consultez le tableau suivant :

Icône Nom Description
spark Action d'IA Indique que l'agent de test d'application a utilisé Gemini pour décider d'effectuer une action ou de mettre fin à l'étape.
replay Action réeffectuée Indique que l'agent de test d'application a rejoué une action d'une exécution réussie précédente du test.
spark Assertion d'IA Indique que l'agent de test d'application a utilisé Gemini pour valider une assertion d'écran final, après avoir rejoué les actions d'une exécution précédente réussie du même test.

Déboguer les résultats de vos tests

Si les résultats de votre test sont différents de ceux attendus, vous pouvez déboguer votre test à l'aide du bouton Afficher la vue de l'agent sous Afficher les détails sur la page des résultats du test. La vue de l'agent affiche les éléments à l'écran que l'agent de test d'application a pu détecter en utilisant les informations d'accessibilité de l'application. Si vous souhaitez examiner de plus près ce que l'agent a vu, vous pouvez télécharger ces informations à partir du menu à développer.

Vous pouvez également utiliser le bouton Afficher les artefacts sur la page "Résultats du test" pour consulter l'ensemble des vidéos, des journaux et des autres artefacts Cloud de vos résultats de test.

Limites et problèmes connus

La version preview de l'agent de test d'application présente certaines limites connues :

  • Les tests guidés par l'IA ont un délai avant expiration de cinq minutes. Une fois qu'un test démarre, il doit réussir dans ce délai, sinon il se termine prématurément et est comptabilisé comme un échec.
  • Comme l'agent de test d'application utilise l'IA générative pour tester votre application, il effectue parfois des actions différentes tout en suivant les mêmes instructions.
  • L'Agent de test d'application n'est compatible qu'avec les actions suivantes : appuyer, saisir du texte, balayer vers le haut/le bas/la gauche/la droite, appuyer de manière prolongée, glisser-déposer, revenir en arrière et attendre.
  • L'Agent de test d'application a du mal à exécuter des tests ne contenant qu'une seule étape qui nécessite de nombreuses actions. Il est plus performant lorsque les tâches complexes sont décomposées en plusieurs étapes plus courtes.
  • L'Agent de test d'application ne fait parfois pas défiler l'écran pour afficher les autres éléments hors écran. Cela se produit plus souvent lorsqu'il n'y a aucune indication visuelle de la possibilité de faire défiler la page. Pour contourner ce problème, vous pouvez utiliser le champ "hints" pour suggérer le défilement.
  • L'agent de test d'application a parfois du mal à compter, par exemple à effectuer une action un nombre de fois spécifique.
  • L'agent de test d'application ne peut pas naviguer dans votre application si FLAG_SECURE est activé. Au lieu de captures d'écran de votre application, il ne verra qu'un écran vide.

Quotas de test

Pendant la preview, les tests guidés par l'IA seront proposés sans frais dans la limite d'un quota. La limite de quota par défaut est de 200 tests par mois et par projet Firebase.

Notez que si vous choisissez d'exécuter plusieurs scénarios de test ou d'exécuter le même scénario de test sur plusieurs appareils, cela compte comme plusieurs tests. Par exemple, si vous exécutez deux scénarios de test sur deux appareils, cela correspond à un total de quatre tests.

Pour augmenter votre quota au-delà de la limite par défaut, contactez l'assistance Firebase en indiquant votre cas d'utilisation.