Maîtrisez l’installation de Cobertura, outil de couverture de tests. Identifiez la proportion de code non testée. Mettez en oeuvre Cobertura avec Ant. Analysez les lignes et les branches, ainsi que la complexité McCabe. Découvrez les 2 cas d’utilisation de Cobertura : rapport de couverture de test et validation de build avec niveau de couverture spécifié par le chef de projet.
Liens utiles
+ de 100 tutoriaux java/jee Objis
Plugin Eclipse de couverture de test basé sur le projet EMMA : EclEMMA (update site : http://update.eclemma.org)
Introduction à Eclipse TPTP
Plugin Maven cobertura
Formation Architecture Java
Soyez prêt pour des projets ambitieux : formation architecture Java Objis
Programme
Contexte, valeur ajoutée et limites
Partie 1 : Téléchargement
Partie 2 : Installation
Durée
30 min
Contexte
Savoir-faire de Cobertura et besoins classiques :
Couverture de ligne : vous désirez connaître les lignes de codes qui n’ont pas été testées (parcourues par au moins un de vos tests unitaires).
Couverture de branche : vous désirez identifiez risques d’exceptions / plantage sur des conditions données (if).
Complexité McCabe : calculer le nombre de point de décision (if, case, boucles…). Plus il y a de points de décision, plus le code est considéré comme difficile à comprendre et à maintenir. Niveaux de complexité faible (1–4), Moyen (5-7), difficile (8-10), excessif (11+)
Non géré dans Cobertura (et géré dans outils commerciaux comme Clover)
Couverture de méthode : vous désirez connaitre le nombre de méthodes apellées durant l’exécution des tests unitaires.
Autres outils ‘statiques’ de qualimétrie
— CheckStyle : convention de codage
— PMD : Détection préemptive d’erreurs – ensemble de règles. Choisir quelle règle utiliser par groupe (Règles JSF, règles JUnit, règles Sécurité…)
— CPD : Cut and Paste Detection (détecter les copier/coller de code)
— FindBugs : Détection préemptive d’erreurs – Notion de ‘Bug Patterns’ – erreurs techniques (ex : variable non initialisée)
INFO : ces outils produisent des rapports au format XML qui peuvent être exploité par des serveur d’intégration continue (ex : Hudson avec plugin violations) afin de suivre graphiquement l’évolution de la qualité du logiciel.
Couverture non totale
Remarque : certaines portions de codes (ex : levées d’exceptions non lancées) ne seront pas couvertes. Donc ne pas s’attendre à 100% mais utiliser les résultats de la couverture comme une aide à la décision.
Partie 1 : Téléchargement
Aller sur le site du produit : http://cobertura.sourceforge.net/
Cliquer sur le lien Download (menu gauche). L’écran suivant apparaît.
Téléchargez le zip de la dernière version de cobertura (ici cobertura-1.9.3-bin.zip)
Le téléchargement commence…
Dézippez dans répertoire c:formationintegcontoutils
Partie 2 : rapport de couverture de test
Parmi les 2 utilisations types de Cobertura, la première est la génération d’un rapport de couverture de test qui permettra au chef de projet non pas d’améliorer la qualité des tests, mais d’identifier les zones du code qui ne sont pas testées, ou qui les zones qui sont trop complexes (et donc difficiles à comprendre / maintenir).
Une application exemple est fournie avec Cobertura dans le répertoire examples/basic
à partir du répertoire examples/basic, lancer la commande ‘ant’ qui va lancer une cible ant par défaut réalisant le cycle suivant :
— 1) Définir la tache ant cobertura
— 2) Compiler les code sources () et les classes de test () . (utiliser debug= »true »)
— 3) Instrumenter le code compilé
— 4) lancer les tests junit (préciser fork=true , ainsi que chemin code instrumenté)
— 5) Générer le rapport cobertura (à partir de datafile= »$basedir/cobertura.ser »)
Parmi les éléments produits , notez en particulier les répertoires reports, instrumented et le fichier cobertura.ser :
— reports : ici iront les rapports au format html et xml (permettant l’exploitation par outils tiers ex: Hudson)
— instrumented (suite à instrumentation des classes)
— cobertura.ser : contient métadonnées qui seront nécessaires au rapport Cobertura
Dans le répertoire reports, ouvrir avec un navigateur le fichier index.html pour voir le rapport au format html.
Expliquez les indicateurs : Line coverage, branch coverage, complexity.
En déduire le niveau de complexité du code.
Analysez le résultat de l’instrumentation de la classe ‘Simple’ (cliquez sur la classe)
Pourquoi certaines ligne sont en rouge ? En vert ?
Partie 3 : Analyse du build ANT
Expliquez les lignes suivantes du script ant du projet
A quel endroit du script ant l’instrumentation du code est’elle lancée ? la génération de rapport est’elle sollicitée ?
Partie 3 : imposer une qualité de couverture
Parmi les 2 utilisations types de Cobertura, la deuxième (pas toujours apprécié des développeurs…) utilisée par le chef de projet, est la mise en œuvre d’une politique de validation des build des développeurs uniquement la couverture de test atteint un niveau donné.
C’est là qu’intervient la tache cobertura-check.
Partie 4 : intégration avec Maven
Expliquez la configuration suivante :
Que produit mvn cobertura:check ?
Que produit mvn install ?
Expliquez
Conclusion
Dans ce tutoriel, vous avez Installé l’outil de couverture de test Cobertura.
Formation Architecture Java
Soyez prêt pour des projets ambitieux : formation architecture Java Objis