Test de contrainte Monkey pour UI/application

Monkey est un programme qui s'exécute sur votre émulateur ou votre appareil. Il génère des flux pseudo-aléatoires d'événements utilisateur tels que des clics, des appuis ou des gestes, ainsi que plusieurs événements au niveau du système. Vous pouvez utiliser Monkey pour effectuer des tests de contrainte sur les applications que vous développez, de manière aléatoire et reproductible.

Présentation

Monkey est un outil de ligne de commande que vous pouvez exécuter sur n'importe quelle instance d'émulateur ou sur un appareil. Il envoie un flux pseudo-aléatoire d'événements utilisateur dans le système, qui agit comme un test de contrainte sur le logiciel d'application que vous développez.

Monkey comprend plusieurs options, qui se répartissent en quatre grandes catégories :

  • Options de configuration de base, telles que la définition du nombre d'événements à tenter.
  • Contraintes opérationnelles, telles que la limite du test à un seul package.
  • Types d'événements et fréquences.
  • Options de débogage.

Lorsque Monkey s'exécute, il génère des événements et les envoie au système. Il surveille également le système testé et recherche trois conditions, qu'il traite spécialement :

  • Si vous avez limité l'exécution de Monkey à un ou plusieurs packages spécifiques, il surveille les tentatives de navigation vers d'autres packages et les bloque.
  • Si votre application plante ou reçoit une exception non gérée, Monkey s'arrête et signale l'erreur.
  • Si votre application génère une erreur L'application ne répond pas, Monkey s'arrête et signale l'erreur.

Selon le niveau de verbosité que vous avez sélectionné, des rapports sur la progression de Monkey et les événements générés s'afficheront également.

Utilisation de base de Monkey

Vous pouvez lancer Monkey à l'aide d'une ligne de commande sur votre ordinateur de développement ou à partir d'un script. Étant donné que Monkey s'exécute dans l'environnement de l'émulateur/de l'appareil, vous devez le lancer à partir d'une interface système dans cet environnement. Pour ce faire, ajoutez adb shell devant chaque commande ou saisissez l'interface système et entrez directement les commandes Monkey.

Voici la syntaxe de base :

$ adb shell monkey [options] <event-count>

Si aucune option n'est spécifiée, Monkey se lancera en mode silencieux (sans verbosité) et enverra des événements à tous les packages installés sur votre cible. Voici une ligne de commande plus typique, qui lance votre application et lui envoie 500 événements pseudo-aléatoires :

$ adb shell monkey -p your.package.name -v 500

Référence sur les options de commande

Le tableau ci-dessous liste toutes les options que vous pouvez inclure dans la ligne de commande de Monkey.

Catégorie Option Description
Général --help Imprime un guide d'utilisation simple.
-v Chaque -v de la ligne de commande incrémente le niveau de verbosité. Le niveau 0 (par défaut) fournit peu d'informations au-delà des notifications de démarrage, de l'achèvement des tests et des résultats finaux. Le niveau 1 fournit davantage de détails sur le test en cours d'exécution, comme les événements individuels envoyés à vos activités. Le niveau 2 fournit des informations de configuration plus détaillées, telles que les activités sélectionnées ou non sélectionnées pour le test.
Événements -s <seed> Valeur initiale du générateur de nombres pseudo-aléatoires. Si vous réexécutez Monkey avec la même valeur initiale, il générera la même séquence d'événements.
--throttle <milliseconds> Insère un délai fixe entre les événements. Vous pouvez utiliser cette option pour ralentir Monkey. Si l'option n'est pas spécifiée, il n'y a pas de délai, et les événements sont générés aussi rapidement que possible.
--pct-touch <percent> Ajustez le pourcentage d'événements tactiles. (Les événements tactiles sont des événements vers le bas ou vers le haut situés à un seul endroit sur l'écran.)
--pct-motion <percent> Ajustez le pourcentage d'événements de mouvement. (Les événements de mouvement sont constitués d'un événement vers le bas quelque part sur l'écran, d'une série de mouvements pseudo-aléatoires et d'un événement vers le haut.)
--pct-trackball <percent> Ajustez le pourcentage d'événements de trackball. (Les événements de trackball sont constitués d'un ou de plusieurs mouvements aléatoires, parfois suivis d'un clic.)
--pct-nav <percent> Ajustez le pourcentage d'événements de navigation "de base". (Les événements de navigation sont constitués de haut/bas/gauche/droite, en tant qu'entrée provenant d'un périphérique d'entrée directionnel.)
--pct-majornav <percent> Ajustez le pourcentage d'événements de navigation "majeur". (Il s'agit d'événements de navigation qui entraînent généralement des actions dans votre UI, telles que le bouton central d'un pavé multidirectionnel, la touche de retour ou la touche de menu.)
--pct-syskeys <percent> Ajustez le pourcentage d'événements de touches "système". (Il s'agit de touches généralement réservées au système, telles que Accueil, Retour, Début d'appel, Fin d'appel ou Commandes de volume.)
--pct-appswitch <percent> Ajustez le pourcentage de lancements d'activités. À intervalles aléatoires, Monkey émet un appel startActivity() pour essayer de couvrir au maximum toutes les activités de votre package.
--pct-anyevent <percent> Ajustez le pourcentage d'autres types d'événements. Il s'agit d'une catégorie générique pour tous les autres types d'événements, tels que les pressions de touche, d'autres boutons moins utilisés sur l'appareil, etc.
Contraintes -p <allowed-package-name> Si vous spécifiez un ou plusieurs packages de cette manière, Monkey autorise uniquement le système à accéder aux activités de ces packages. Si votre application a besoin d'accéder à des activités dans d'autres packages (par exemple, pour sélectionner un contact), vous devez également spécifier ces packages. Si vous ne spécifiez aucun package, Monkey autorise le système à lancer des activités dans tous les packages. Pour spécifier plusieurs packages, utilisez l'option -p plusieurs fois (une option -p par package).
-c <main-category> Si vous spécifiez une ou plusieurs catégories de cette manière, Monkey autorise uniquement le système à accéder aux activités listées dans l'une des catégories spécifiées. Si vous ne spécifiez aucune catégorie, Monkey sélectionne les activités listées avec la catégorie Intent.CATEGORY_LAUNCHER ou Intent.CATEGORY_MONKEY. Pour spécifier plusieurs catégories, utilisez l'option -c plusieurs fois (une option -c par catégorie).
Débogage --dbg-no-events Si cette option est spécifiée, Monkey effectue le lancement initial dans une activité de test, mais ne génère aucun autre événement. Pour de meilleurs résultats, combinez-la avec -v, une ou plusieurs contraintes de package et une limitation non nulle pour que Monkey continue de fonctionner pendant 30 secondes ou plus. Vous bénéficiez ainsi d'un environnement dans lequel vous pouvez surveiller les transitions de packages appelées par votre application.
--hprof Si cette option est définie, des rapports de profilage sont générés immédiatement avant et après la séquence d'événements Monkey. Cette opération génère des fichiers volumineux (environ 5 Mo) dans data/misc. Nous vous recommandons donc de l'utiliser avec précaution. Pour en savoir plus sur l'analyse des rapports de profilage, consultez Profiler les performances de votre application.
--ignore-crashes Normalement, Monkey s'arrête lorsque l'application plante ou rencontre un type d'exception non géré. Si vous spécifiez cette option, Monkey continue d'envoyer des événements au système jusqu'à ce que le décompte soit terminé.
--ignore-timeouts Normalement, Monkey s'arrête lorsque l'application rencontre un type d'erreur de délai d'inactivité, comme une boîte de dialogue "L'application ne répond pas". Si vous spécifiez cette option, Monkey continue d'envoyer des événements au système jusqu'à ce que le décompte soit terminé.
--ignore-security-exceptions Normalement, Monkey s'arrête lorsque l'application rencontre un type d'erreur d'autorisation, par exemple si elle tente de lancer une activité nécessitant certaines autorisations. Si vous spécifiez cette option, Monkey continue d'envoyer des événements au système jusqu'à ce que le décompte soit terminé.
--kill-process-after-error Normalement, lorsque Monkey s'arrête en raison d'une erreur, l'application qui a échoué continue d'être exécutée. Lorsque cette option est définie, elle signale au système d'arrêter le processus dans lequel l'erreur s'est produite. Notez qu'en cas d'exécution normale (réussite), les processus lancés ne sont pas arrêtés et l'appareil reste simplement dans le dernier état après l'événement final.
--monitor-native-crashes Surveille et signale les plantages qui se produisent dans le code natif du système Android. Si l'option --kill-process-after-error est définie, le système s'arrête.
--wait-dbg Empêche Monkey de s'exécuter jusqu'à ce qu'un débogueur lui soit associé.