Les tests unitaires en informatique sont ils nécessaires?

Comment évoquer le sujet polémique des tests unitaires dans les projets informatiques?

En effet, nous avons d’une part les différents experts informatiques qui s’accordent sur le fait qu’une anomalie découverte lors de la phase de développement est sans conteste beaucoup moins onéreuse à corriger que celles qui seraient découvertes ultérieurement. D’autre part, les détracteurs arguent que le développement des tests unitaires conduit à une augmentation des charges, des délais de développement et peuvent être compensés par quelques tests fonctionnels. Ces mêmes personnes se servent parfois des charges dédiées aux tests comme une variable d’ajustement pour respecter scrupuleusement les dates de livraison des produits.

Dans ce contexte et sans éléments comptables plus précis, il est difficile de mettre en exergue le retour sur investissement de la mise en place systématique des tests unitaires.

Chez JavaPerf Consulting nous pensons que le ROI est très important dès lors que les tests sont automatisés et qu’ils sont implémentés avec discernement et pragmatisme. Rien ne sert en effet d’implémenter des tests unitaires sur des méthodes ou des classes qui n’ont pas une réelle valeur ajoutée pour le projet. La couverture du code par les tests est un indicateur technique qui n’a pas de sens dans ce contexte.

Certes l’implémentation et la maintenance des classes de test nécessite parfois des efforts importants voire du refactoring du code, mais à terme elles constituent un capital de tests de non régression qui sont exécutés périodiquement. C’est la garantie d’une certaine stabilité et qualité de l’application.

Bien entendu, ces tests unitaires doivent être complétés par  des tests d’intégration et des tests fonctionnels permettant de valider respectivement des chaînes de liaison applicatives et des cas d’utilisation du système du point de vue de l’utilisateur. Nous évoquerons d’ailleurs dans un prochain article les solutions qui permettent actuellement d’industrialiser les tests fonctionnels.

Curieusement j’observe au cours de mes prestations chez des grands acteurs de l’informatique, une absence quasi-totale des tests unitaires, et parfois tout simplement des tests en général. Dans certains cas, il y a bien des tentatives d’industrialisation des tests unitaires mais elles restent trop complexes, inappropriées et non maintenues. Nous reviendrons également prochainement sur ce sujet car il existe des solutions très efficaces pour répondre aux exigences des tests unitaires.

Le choix de ne pas industrialiser les tests et en particulier les tests unitaires, qui est un choix énoncé ou induit, mène selon mes observations à une dégradation de la qualité des livrables, et à une insatisfaction grandissante des clients. Le capital confiance qu’un client peut attribuer à son fournisseur dans le cadre d’une délégation de services, peut s’éffilocher très rapidement au détour quelques livraisons malheureuses.

Mais ce n’est pas toujours le cas… Parfois les conséquences sont pires!

Par exemple, en 2007 les conséquences d’un bug informatique dans le SI de la Française des jeux conduit à rembourser 25000 parieurs qui ont joué en ligne au Poker Plus (http://www.01net.com/editorial/342050/un-bug-informatique-joue-un-vilain-tour-aux-joueurs-de-la-francaise-des-jeux/). Pire encore, la CNAV a attribué indument des droits à la retraite à des centaines de milliers de salariés (http://www.leparisien.fr/economie/bug-informatique-dans-le-calcul-des-retraites-13-05-2009-510748.php). En mai 2012 le système d’information du pôle emploi est tout simplement tombé en panne rendant plus que complexe la tâche des 48.000 agents (http://www.20minutes.fr/economie/939621-pole-emploi-frappe-gigantesque-bug-informatique)… ainsi de suite.

Devant des enjeux aussi importants, et même si les votres ne sont pas de cette nature, pensez vous qu’il soit opportun de s’abstraire de la mise en place des tests informatiques? Pensez vous réellement que les tests unitaires automatisés représentent une charge ou un investissement dans le budget de votre projet? Si vous pensez toujours que cette activité reste un centre de coût, alors peut être devriez vous vous posez la question du coût de la non qualité?

http://www.jperf.com

Publicités

A propos jlerbsc

founder of JavaPerf Consulting Http://www.jperf.com
Cet article a été publié dans Qualité. Ajoutez ce permalien à vos favoris.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s