Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
Black Friday: -25€ dès 75€ sur les livres en ligne, vidéos... avec le code BWEEK25. J'en profite !
  1. Livres et vidéos
  2. Android
  3. Tracer, déboguer et tester
Extrait - Android Guide de développement d'applications Java pour Smartphones et Tablettes (4e édition)
Extraits du livre
Android Guide de développement d'applications Java pour Smartphones et Tablettes (4e édition) Revenir à la page d'achat du livre

Tracer, déboguer et tester

Introduction

Même dans le cas des logiciels les plus simples, il est rare de pouvoir écrire du code ne comportant pas l’once d’une erreur technique ou fonctionnelle.

Il est donc important, pour le développeur, de disposer d’un ensemble d’outils pour analyser le fonctionnement de son application.

Ce chapitre passe en revue les principales fonctionnalités offertes par Android Studio dans ce domaine, en commençant par le plus évident d’entre eux, le fichier de log d’Android.

Ensuite, nous étudierons Android Profiler et Android Device Monitor, puissants outils permettant d’analyser en détail le fonctionnement de l’application en temps réel.

Enfin, nous verrons comment tirer parti des tests automatiques proposés par Android Studio pour limiter au maximum les régressions, véritable challenge du développeur.

Journal d’événements

Un journal d’événements contient des logs (traces d’exécution d’un logiciel). Sous Android, il existe plusieurs journaux d’événements : un principal et plusieurs autres secondaires spécifiques à un domaine, par exemple les messages concernant la téléphonie. Ces journaux sont stockés sous la forme de tampons circulaires.

Chacun de ces événements est constitué des éléments suivants :

  • Date et heure de l’apparition de l’événement.

  • Catégorie de l’événement.

  • Identifiant unique du processus, nommé PID (Process IDentifier), qui a généré l’événement.

  • Une étiquette, nommée tag, qui permet de nommer la source de l’événement : noms du processus, du composant, de l’activité, de la classe…

  • Un message détaillant l’événement.

Il existe plusieurs catégories permettant de classer les événements. Le tableau ci-dessous en présente les cinq principales, classées de la plus à la moins détaillée :

Catégorie

Niveau

Description

Verbeux

V

Catégorie la plus détaillée. Du fait de la quantité d’informations à afficher, cette catégorie peut ralentir sensiblement l’application. C’est pourquoi il est demandé de ne pas l’utiliser en dehors de la phase de développement.

Débogage

D

Normalement, les éléments de cette catégorie s’affichent si l’application est compilée en mode debug. En mode release, ces éléments sont ignorés et donc non affichés.

Information

I

Catégorie...

Débogage

Le débogage est la phase consistant à rechercher et corriger des bogues. Pour aider le développeur dans cette tâche, Android Studio, et le SDK Android mettent à disposition un ensemble d’outils que nous allons découvrir dans les sections suivantes.

1. Débogage pas à pas

Le débogage pas à pas utilise un outil nommé débogueur qui exécute le programme dans un mode spécifique, ou l’exécution de chaque instruction est pilotée par le développeur. Cela permet de positionner des points d’arrêt dans le code source, d’analyser pas à pas le déroulement du programme et connaître, entre autres, la pile d’appels des méthodes et les valeurs des variables.

Pour positionner un point d’arrêt dans le code, il suffit de cliquer dans la marge de la fenêtre principale, au niveau souhaité pour le point d’arrêt : l’arrêt est matérialisé par un point rouge. Cliquer sur ce point permet de supprimer le point d’arrêt.

Pour lancer l’application en mode pas à pas, il faut soit utiliser le bouton représentant un bug (à droite du bouton classique d’exécution), ou directement utiliser le raccourci-clavier [Shift][F9].

Lorsque l’exécution du programme est interrompue par un point d’arrêt, plusieurs options sont possibles pour continuer l’exécution du programme :

  • Pour continuer l’exécution normalement, il faut soit cliquer sur la flèche verte de la fenêtre debugger, soit utiliser la touche [F9].

  • Pour continuer l’exécution pas à pas (step into), utiliser la touche [F7].

  • Pour exécuter l’ensemble des instructions d’une méthode sans s’arrêter (step over), utiliser la touche [F8].

2. Android Profiler

Android Profiler, apparu avec la version 3 d’Android Studio, est un outil qui permet au développeur d’analyser finement le fonctionnement de son application selon différents points de vue :

  • Une vue du taux d’occupation du processeur,

  • Une vue de la mémoire allouée,

  • Une vue du trafic réseau

Pour lancer Android Profiler, il faut, dans Android Studio, soit cliquer sur l’icône Profile...

Tests unitaires et fonctionnels

Depuis 2015, les tests unitaires sous Android sont basés sur la bibliothèque JUnit 4. Ils en reprennent donc la même philosophie en l’adaptant à la plateforme Android.

Selon qu’ils portent sur du code Java générique ou du code spécifique à la plateforme Android, les tests seront exécutés soit sur la machine virtuelle Java du poste développeur - on parle alors de tests unitaires locaux, soit sur un terminal Android - qu’il soit réel ou émulé. Il est important pour le développeur, dans un souci d’efficacité, de maximiser le pourcentage de tests locaux, ceux-ci étant beaucoup plus rapides que les tests exécutés sur un terminal.

1. Création d’un projet de tests

Par défaut, lorsqu’un projet est créé par l’assistant d’Android Studio, la structure complète nécessaire pour les tests est également intégrée par l’IDE : le dossier test/java est prévu pour les tests unitaires, le dossier androidTest/java étant dévolu aux tests spécifiques à la plateforme.

Dans le cas où ces dossiers n’existent pas - si le projet a été importé, par exemple, ou créé avec une ancienne version d’Android Studio, il faut les créer manuellement. La structure des dossiers devant être créés est présentée ci-dessous :

  • app/src/main : dossier du projet principal.

    app/src/test/java : dossier où sont placés les tests unitaires.

    app/src/androidTest/java : dossier où sont placés les tests Android.

Ces dossiers peuvent être soit créés dans l’explorateur de fichiers du poste développeur, soit via Android Studio, en utilisant la vue Projet de l’IDE : il faut alors positionner le curseur de la souris sur le dossier src, et faire un clic droit pour sélectionner l’option New puis Directory.

Il faut également ajouter une référence au module JUnit dans le fichier gradle de build de l’application. Pour cela, il faut éditer le fichier build.gradle et ajouter la ligne testCompile...

Test du singe

Comme nous l’avons vu précédemment, les tests unitaires permettent de réaliser des cas de tests précis renseignés par le développeur. Mais, quand bien même le développeur aura pris soin de décrire un maximum de cas de tests, en environnement réel, l’utilisateur pourra toujours interagir avec l’application d’une façon non prévue par le développeur. C’est là qu’intervient le test du singe pour aider le développeur à réduire le champ des interactions utilisateur non testées.

Le test du singe est un test aléatoire de l’application via l’interface graphique. Ce test simule une utilisation de l’interface utilisateur via la saisie de touches, de gestes tactiles, de clics et d’autres événements que tout utilisateur peut normalement réaliser mais de façon complètement aléatoire. Cela permet de tester de nombreuses utilisations auxquelles le développeur n’aurait pas pensé comme par exemple la validation d’un formulaire alors que des champs sont restés vides.

Android met à disposition l’outil Monkey (Singe) pour réaliser ce type de test. Cet outil se lance depuis le shell de la plateforme Android, émulateur ou périphérique. 

Syntaxe

adb shell monkey...