Magazine

Tutoriel : Tester une application Android avec Monkey

Publié le 13 mars 2010 par Pbernard

Android Logo Monkey est un outil qui permet de tester une application Android. Plus précisément, il simule des interactions "aveugles" avec l'application à vérifier. Contrairement à la grande majorité des environnements de tests, Monkey n'a pas besoin d'être piloté, ou alors très sommairement : on ne lui indique pas où cliquer, le résultat attendu, etc. Il génère des interactions quelconques sans ce soucier de la logique applicative et signale les erreurs évidentes, comme les exceptions non traitées.

Ce billet explique comment lancer Monkey et exploiter ses résultats. Il fait référence à une application d'exemple fournie avec le SDK Android.

Préparation de l'environnement

Avant de lancer Monkey, nous avons besoin du SDK Android. Suivez les étapes 1 à 3 d'Installing the SDK. Si vous développez sur Android ou si plus simplement vous avez essayé le Hello World, alors vous avez déjà tout ce qu'il faut.

Nous avons également besoin d'une application à tester. Plutôt que d'en écrire une pour l'occasion, nous allons partir de NotePad, une application d'exemple fournie avec le SDK.

  1. Lancez Eclipse.
  2. Faites File > New > Android Project.
    Création d'un projet
  3. Dans le wizard, au lieu de créer une nouvelle application, on importe une application d'exemple. Sélectionnez Create project from existing sample, dans le volet Build Target sélectionnez Android 1.6 puis dans la liste Samples choisissez NotePad. Cliquez sur Finish.
    Wizard
    Le projet est créé, il apparait dans le Package Explorer, par défaut dans la partie gauche d'Eclipse. Nous allons lancer NotePad, mais pour cela nous avons besoin d'une instance Android virtuelle.
  4. Faites Window > Android SDK and AVD Manager.
    Android SDK and AVD Manager
  5. Dans la fenêtre Android SDK and AVD Manager, cliquez sur New...
    Android SDK and AVD Manager - New
  6. Dans la fenêtre Create New AVD, inscrivez Default_AVD en tant que nom, choisissez Android 1.6 - API Level 4 dans la liste Target et entrez une taille de 1024 Mo pour la carte SD. Cliquez sur Create AVD.
    AVD Creation
    L'instance virtuelle est maintenant disponible.
    AVD created
    Il est tant de lancer Notepad.
  7. Cliquez-droit sur le projet NotesList et sélectionnez Run As > Android Application.
    Run NotePad
    L'instance virtuelle se lance et après quelques dizaines de secondes, NotePad est disponible.
    NotePad
  8. Cliquez sur Menu puis créez une note.
    NotePad - Add Note
  9. Saisissez du texte et validez.
    NotePad - Edit Note
    La note est créée.
    NotePad - Note Created

Lancer Monkey

NotePad fonctionne et nous pouvons à présent lancer Monkey.

  1. Assurez-vous que l'émulateur est lancé. Si ce n'est pas le cas, suivez les instructions ci-dessus de nouveau pour relancer NotePad.
  2. Ouvrez une console et rendez-vous dans le sous-répertoire tools du SDK Android.
    New console
  3. Lancez Monkey avec la commande adb shell monkey -p com.example.android.notepad -v 500

Monkey se connecte à l'instance virtuelle et effectue diverses actions, comme le ferait un utilisateur... un utilisateur qui ne sait pas vraiment ce qu'il veut car ses manipulations n'ont aucun but précis : modification hasardeuse de la note existante mais sans sauver, modification du volume, rotation de l'écran... Dans la console, on voit les différentes actions qui sont déclenchées par Monkey tandis que la fenêtre de l'émulateur s'anime au fur et à mesure.

Monkey has finished

Et en cas de bug ?

Monkey vient de jouer avec NotePad sans signaler quoi que ce soit d'anormal. Que se passe-t-il lorsqu'une erreur se produit ? Voyons-voir ça.

  1. Editez NoteEditor.java. Après la ligne 175, insérez throw new RuntimeException("Oh! Un bug!"); afin qu'une exception soit déclenchée lors d'une édition.
    Insert a bug
  2. Sauvez.
  3. Relancez NotePad. Dans la barre d'outils cliquez sur Run As..., sélectionnez Android Application et faites Ok.
    Rerun NotePad
  4. A partir de la console, relancez Monkey.

Cette fois-ci, les tentatives de Monkey ne devraient pas se faire sans encombre. Après plus ou moins d'actions, Monkey tombe sur le bug et échoue. Il affiche la stack trace qui permet de retrouver l'origine de l'erreur.

Monkey fails

Le mot de la fin

Monkey a le grand avantage de fonctionner immédiatement, sans nécessiter l'écriture de tests. Naturellement, la contrepartie est cinglante : sans aucune connaissance du fonctionnement attendu de l'application, Monkey ne sait détecter que les erreurs plus bas niveau, celles qui provoquent une récupération par le système. Attention donc à ne pas tomber dans le piège qui consiste à se reposer entièrement sur Monkey, au détriment de véritables tests.


Retour à La Une de Logo Paperblog

Dossiers Paperblog