La qualité du code est souvent compromise par des tests incomplets.
Cela peut entraîner des bugs non détectés et une application peu fiable.
Jacoco offre une solution en générant des rapports détaillés de couverture de code, permettant d’optimiser les efforts de test.
Développez des applications Android solides, fiables et efficaces avec une approche TDD
Jacoco est un outil permettant de générer des rapports de couverture de code, c’est-à-dire de mesurer combien de lignes de code sont couvertes par des tests automatisés. Cette mesure est essentielle pour s’assurer que le code testé est représentatif du comportement réel de l’application.
Cette figure illustre le processus de mesure de la couverture de code à travers l’exécution de tests automatisés. Elle commence par l’ exécution des tests , qui permet de vérifier le comportement du code, suivie de la collecte des données de couverture , où des informations sont recueillies sur quelles parties du code ont été testées. Ensuite, ces données sont utilisées pour générer des rapports de couverture , fournissant des insights précieux qui permettent d’ améliorer la qualité du code en identifiant les zones qui nécessitent plus de tests
Exécution des tests Jacoco Android
Une fois la tâche définie, vous pouvez l’exécuter via le terminal d’Android Studio. Utilisez la commande suivante pour nettoyer les anciens fichiers générés et exécuter les tests :
La commande ./gradlew clean debugCoverage exécute deux tâches dans un projet Gradle. D’abord, clean supprime les fichiers générés lors des constructions précédentes, assurant ainsi un environnement propre, puis debugCoverage exécute les tests tout en collectant les données de couverture de code, permettant d’analyser la couverture des tests pour le code en mode débogage.
./ gradlew clean debugCoverage
Voici le résultat dans terminal :
Cette figure montre la sortie d’une exécution de la commande ./gradlew clean debugCoverage dans le terminal d’un projet Android. Le message indique que la construction a réussi en 5 secondes, avec un total de 23 tâches exécutées, ce qui inclut la compilation des tests unitaires en mode débogage et la collecte des données de couverture. De plus, il est mentionné que le test de la classe CoureurDomainModelTest a été démarré et a réussi, ce qui suggère que la commande a permis d’exécuter avec succès les tests tout en générant des informations sur la couverture de code
Cette commande effectue les actions suivantes :
- Clean :supprime les fichiers générés précédemment.
- debugCoverage :exécute les tests unitaires et génère un rapport de couverture.
Action | Description | Impact |
---|---|---|
Clean | Supprime tous les fichiers générés précédemment lors de la compilation ou des tests. | Libère de l’espace et garantit que les prochaines exécutions commencent avec un état propre. |
debugCoverage | Exécute tous les tests unitaires dans le mode de débogage et génère un rapport de couverture du code. | Permet de vérifier quelles parties du code sont testées, aidant à identifier les zones à améliorer. |
Analyser les résultats de couverture
Les rapports Jacoco sont générés sous forme de fichiers HTML situés dans le répertoire build/reports/jacoco/debugCoverage/. Pour visualiser le rapport, ouvrez le fichier index.html dans un navigateur.
La commande open build/reports/jacoco/debugCoverage/index.html ouvre le fichier HTML généré par Jacoco qui contient le rapport de couverture de code après l’exécution des tests. Ce rapport fournit une vue d’ensemble visuelle des parties du code qui ont été testées, permettant aux développeurs d’identifier rapidement les zones qui nécessitent plus de tests ou des améliorations.
open build / reports / jacoco / debugCoverage / index.html
Cette figure montre la structure de fichiers générée par Jacoco dans un projet Android, spécifiquement dans le dossier jacoco/debugCoverage/html . On y trouve le fichier index.html , qui sert de point d’entrée pour visualiser le rapport de couverture, ainsi que jacoco-sessions.html et d’autres ressources nécessaires pour analyser la couverture du code après l’exécution des tests, permettant aux développeurs d’examiner facilement quelles parties du code sont couvertes par les tests.
Le rapport contient des informations détaillées sur la couverture du code à différents niveaux
- Packages :aperçu global de la couverture par package.
- Classes :détails sur chaque classe.
- Méthodes :vue granulaire des méthodes et branches testées.
La figure au-dessus montre la structure du répertoire où les rapports générés par Jacoco sont stockés, spécifiquement dans le chemin tracker_domain/build/reports/jacoco . On y trouve le fichier index.html , qui sert de point d’entrée pour visualiser le rapport de couverture du code, ainsi que jacoco-sessions.html et d’autres ressources liées aux détails du modèle, facilitant l’analyse des résultats de couverture après l’exécution des tests.
Rapport HTML de couverture Jacoco
Lorsque vous consultez le rapport dans le navigateur, vous verrez un tableau récapitulant les métriques de couverture de test pour chaque package, classe et méthode.
Cette image affiche un rapport de couverture de code généré par Jacoco pour le module tracker_domain d’un projet Android. Le rapport indique que le fichier biz.ei6.trackerdomain.details.model a une couverture de code de 100 % , ce qui signifie que toutes les instructions de ce fichier ont été exécutées lors des tests. Les colonnes montrent également qu’aucune branche, ligne ou méthode n’a été manquée, confirmant que le code testé est entièrement couvert, ce qui est essentiel pour assurer la qualité et la robustesse du code.
Le rapport permet d’identifier rapidement quelles portions du code nécessitent plus de tests.
La figure au-dessus présente un rapport de couverture de code pour la classe CoureurDomainModel , montrant que la méthode principale a une couverture de 100 % en termes d’instructions, indiquant que toutes les lignes de code ont été exécutées lors des tests. Les méthodes getId() et getNom() affichent également une couverture complète, mais il est noté qu’il y a un nombre d’instructions manquées dans le constructeur de la classe. Le rapport souligne ainsi que, bien que l’ensemble de la classe soit couvert, certaines instructions spécifiques du constructeur nécessitent peut-être une attention particulière pour améliorer la qualité des tests.
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment Jacoco aide-t-il à améliorer la qualité du code ?
Quelles sont les étapes pour exécuter les tests avec Jacoco ?
Comment visualiser les rapports de couverture générés par Jacoco ?
Pourquoi est-il important de nettoyer les fichiers avant d'exécuter les tests ?
Quels types de métriques sont inclus dans un rapport Jacoco ?
Conclusion
En exploitant Jacoco pour la couverture de code, vous améliorez considérablement la qualité de vos applications. Quelles autres stratégies envisagez-vous pour optimiser vos tests logiciels ?