Fil d'Ariane

Les cycles de développement informatique

Par Jérôme Megel le 16 janvier 2014
Custom-software

Le but d'un projet informatique est de satisfaire le client qui en est à l'origine : cette satisfaction doit donc être incluse dans le développement du projet, ce dernier devant être l'objet de tests validant ou non l'activité et la présentation du programme informatique. C'est donc peu dire que les tests sont liés à la programmation des logiciels : la recherche permanente de la qualité oblige les développeurs à utiliser les tests au fur et à mesure que leur projet grandit, et non une fois ceux-ci finis !

Les tests non automatisées et les cycles de développement

Un projet informatique est aujourd'hui découpé en de multiples cycles de développement qui incluent des phases d'évaluation. Selon la méthode de travail utilisé, il est par exemple possible de demander aux développeurs d'écrire certains tests avant qu'ils n'écrivent la première ligne de code : c'est le cas avec l'Extreme Programming. Il est également possible de faire relire le code par autrui afin que ces « revues de code » débouchent sur des améliorations difficiles à imaginer de la part de l'informaticien n'ayant pas de recul sur ce qu'il a écrit. Enfin, les clients peuvent avoir accès à des versions intermédiaires du projet afin de livrer leurs impressions sur l'interface ou la qualité du traitement des données : ce sont les bêta-testeurs. L'utilité de ces « users stories » ou récits d'utilisateurs est que ces derniers participent aux tests d'un projet au même titre que les tests automatisés propres aux développeurs.

Les tests automatisés

Outre les cas évoqués ci-dessus, d'autres tests sont aussi écrits pour être appliqués de façon répétée et automatisée. L'emploi systématisé de serveurs jouant le rôle de gestionnaire de versions et d'intégration continue permet en effet d'écrire des tests qui seront appliqués à chaque fois que le code sera modifié, quelque soit l'étendue de cette modification. Il s'agit donc d'opposer à un comportement attendu le comportement de la version la plus récente du projet.
De manière générale, les tests portent sur une portion du programme, portion qu'ils analysent soit de l'extérieur soit de l'intérieur. Dans le premier cas, le test ne tente pas de suivre les méandres du programme et évalue seulement la qualité des résultats obtenus pour telles ou telles données de départ : on parle alors de « black box », le détail de la programmation n'étant pas considéré. A l'inverse, mais de manière plus rare, existent des tests dits « white box » qui évaluent des critères internes au programme. Par exemple, telle variable reste-t-elle constante pendant l'exécution de certaines fonctions ? les différentes possibilités d'un branchement (if... then...) sont-elles toutes parcourues pendant l'exécution ?
Certains tests portent uniquement sur une fonction : ce sont les tests unitaires. D'autres évaluent le programme sur un scénario et sont appelés tests fonctionnels. Mais il existe encore d'autres tests, comme les tests de performance ou de vulnérabilité, ces derniers se concentrant sur les problèmes de sécurité.
Enfin, d'autres tests peuvent encore être écrits, comme ceux relatifs à la qualité de la documentation. Certains outils détectent les classes et les fonctions non documentées ou alertent si tel norme de nommage n'est pas respectée.

Conclusion

Plus les tests sont nombreux, mieux ils sont écrits et plus grande est la « couverture de tests ». La qualité d'un logiciel ou d'une librairie se mesure aussi en fonction des preuves que les développeurs peuvent donner de l'importance de cette couverture. Citons l'exemple d'une librarie open-source, développée par un ingénieur travaillant chez Google et destinée à lire (à « parser ») le code HTML ; le fait que cet ingénieur ait précisé que son travail avait été vérifié sur les milliards de pages HTML qu'il avait à sa disposition a aussitôt montré la valeur de son travail. Ce n'est donc pas une surprise si les entreprises soucieuses de la qualité de leurs projets développent toujours plus de tests en interne.

Ajouter un commentaire

Vous avez un projet ?contactez-moi
Me contacter par email