God Bless Unit Testing !

Toujours dans ma quête de mettre en place un environnement de développement sous Linux, j'ai découvert la puissance des tests unitaires.

En effet, ayant une base de code source existante je m'étais dit : "là je galère pour compiler mes libs, ça va être encore pire quand je vais compiler mes exe .... et je ne sais pas combien de temps je vais mettre pour savoir si mon moteur tourne correctement i.e. sans bug, écrasement mémoire, etc.". La déprime commençait à m'atteindre en me rendant compte dans quelle galère (pour ne pas dire m**de) je m'étais mis avec cet OS alternatif gratuit. J'étais donc sur le point de rebooter mon PC sous Windows mais juste avant de valider la commande "reboot 1" je me suis rappelé que j'avais mis en place une batterie de tests unitaires !!!!

Je suis donc aller sur SourceForge.net pour récupérer la version Linux de UnitTest++ (je ferai sûrement un post sur cette super lib) et là c'est le drame car dans la  version distribuée il n'y a que les libs Windows :'( ... je me voyais déjà galérer pour compiler cette lib depuis les sources. Innocemment j'ai essayé apt-get et là BINGO je l'ai trouvé !!! (vive apt-get et ubuntu !!!).

J'ai donc essayé de compiler mes tests unitaires et là, chose très importante à savoir et que j'avais oublié sur gcc : il faut absolument que le nom des libs que vous linkez commence par "lib" ... va savoir Charles.

Une fois mon exécutable généré, j'ai tapé en toute crédulité la commande "./LLE_UnitTests" ... et là surprise :
FAILURE: 1 out of 108 tests failed (1 failures).
Test time: 0.00 seconds.

Juste une erreur sur 108 tests unitaires !!!!! That's awesome !!! Cette erreur est en plus intéressante car elle vient d'une mauvaise abstraction que j'ai fait de la fonction standard vsnprintf_s qui n'existe pas sous Linux (je ferai un post à ce sujet).

Cette expérience ma conforté dans l'idée que les tests unitaires sont vraiment une bonne chose et cela pour plusieurs raisons :
- Pour faire des tests de régression,
- Pour se rendre compte si l'interface que l'on a designé est utilisable,
- Pour garder une trace d'utilisation des différentes parties du moteur,
- Pour mesurer votre avancement dans le portage de votre code sur une autre plateforme.

Agile development roxxx.



Article ajouté le 2008-08-14 , consulté 6 fois

Commentaires


Gab le 17/08/2008 à 23:15:01
Content de voir que Ubuntu te plait et que tout s'est bien passe lors de la migration.

Pas trop de soucis de temps de compilation sous linux ?

Apparement l'experience test unitaires est la meme (ou quasiment) pour tout le monde... J'ai eu les meme joies.
je dois aussi avouer que par moment on se demande si le travail en vaut la chandelle (beaucoup de code ecrit uniquement pour les tests) et par moment on se rend compte que oui c'est vraiment utile :)

J'en revient toujours pas que tu sois passe sous linux ... :P

++Gab
Manu le 18/08/2008 à 21:36:36
Pour le moment j'ai une base de code assez petite et donc des compilations presque instantanées. C'est tout même un peu plus long que sous Windows car j'utilisais la compilation sur plusieurs processeurs (je pense qu'il y a un équivalent sous linux).

De plus, Scons gère très bien les dépendances : soit par rapport à la date, un calcul de md5 ou un système de cache. Pour le moment j'utilise le comportement par défaut i.e. par rapport à la date.

Quand tu dis "beaucoup de code ecrit uniquement pour les tests", je ne suis pas vraiment d'accord. En effet, je me suis rapidement rendu compte (peut être que ce n'est que mon cas) que j'écrivais déjà ce code auparavant mais pas sous la même forme. En fait, souvent, j'implémentais mes features dans un exécutable de type sample et je testais directement dans le Main. Lorsque ma fonction avait un comportement correcte, j'effaçais ce code et je passais à la suivante.

Donc, pour mon expérience personnelle, les tests unitaires représentent juste un peu plus travail (certaines fois j'écris des tests que je n'aurai pas écrit auparavant ou des tests un peu plus élaborés) mais m'apportent énormément :
- garder une trace de mes exemples d'utilisation (qui sont devenus les tests unitaires),
- tous les points que j'ai soulevé dans mon post.

Poster un commentaire





http://





Merci de recopier le nombre présent à gauche dans la case de texte ci-dessous ( Pourquoi ? )





Liens

Voir les articles de la catégorie " Programmation "

Retour aux articles



Recommander ce blog | Contacter l'auteur | Reporter un abus | S'abonner au blog Flux RSS du blog | Espace de gestion

Créer un blog gratuit avec Blog4ever