vendredi, novembre 28, 2014

eCobertura : installation du code coverage sur les dernières versions d'Eclipse (Luna)

Chez Eranea, nous patriquons massivement la capture de scénarios de tests qui sont ensuite régulièrement rejoués pour valider la non-régression de nos transcodages récurrents de Cobol.

Notre outil spécifique de capture / replay dual (capture 3270 + replay web) de ces tests est détaillé ici :




Un des points-clefs autour de ces scénarios est la qualification de leur pertinence.

Pour ce faire, nous utilisons dans Jenkins, Eclipse, etc. des outils de code coverage : ils nous permettent de voir quelles lignes du Java produit par transcodage du Cobol sont exécutées ou non lors du replay des tests.

Ainsi, la pertinence des tests et donc leur qualité n'est plus subjective mais quantifiée : "l'exécution de l'ensemble des tests couvre 85% du code applicatif".

C'est d'ailleurs abondamment utilisé par nos clients qui définissent ainsi leur stratégie de test: "nous allons capturer des tests jusqu'à un taux de couverture applicative de 90%". 90% est d'ailleurs souvent le seuil retenu car le 100% est quasi-toujours inatteignable : il correspond à des conditions très particulières d'exécution qu'il n'est pas forcément aisé de reproduire lors de tests.

Et d'ailleurs, ce n'est pas notre but lors de projets de migration : il s'agit "seulement" de valider le transcodage iso-fonctionnel vers Java du Cobol. Ce serait donc bien le diable si des syntaxes Cobol très pointues n'étaient utilisées que dans un fragment minuscule et très rarement exécuté de l'application. On travaille habituellement sur des millions de lignes de code donc par effet statistique, toutes les constructions syntaxiques à valider se trouvent de toute façon aussi dans la zone couverte par les tests.

En particulier, pour le code coverage, nous utilisons Cobertura.

 Je viens de basculer mon laptop (Ubuntu Trusty Tahr 14.04) à la dernière version d'Eclipse, nom de code Luna.

Au moment de réinstaller le plugin ECobertura pour avoir accès aux rapports de taux de couverture de code, Eclipse refuse de l'installer avec le message :

"Cannot complete the install because one or more required items could not be found. Software being installed: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152)

Missing requirement: eCobertura 0.9.8.201007202152 (ecobertura.feature.group 0.9.8.201007202152) requires 'org.junit4 0.0.0' but it could not be found"

La solution à ce problème est donnée sur Stackoverflow :

  1. stopper Eclipse
  2. trouver via Google et descendre le jar manquant de JUnit org.junit4_4.8.1.v20120523-1257.jar (il est partout...)
  3. le placer dans la directory /plugins d'Eclipse
  4. redémarrer Eclipse
  5. relancer l'installation d'eCobertura qui doit maintenant aller au bout.
Maintenant à vous les mesures de qualité sur vos tests unitaires !


Source: blog Media and Tech (par didier durand)