lundi 25 avril 2005

Test, vérification et validation

TEST, VÉRIFICATION ET VALIDATION

La qualité d'un logiciel ne fait malheureusement pas souvent partie des processus du développement logiciel au sein des entreprises. Les entreprises qui ont peu de moyens ou pour lesquelles le temps de mise sur le marché est crucial négligent souvent cette étape du développement logiciel.

La qualité d'un logiciel est directement liée aux caractéristiques qui peuvent être mesurées à l'aide de tests et d'inspections.
Plusieurs problèmes qui peuvent avoir des conséquences majeures sur le projet, peuvent être mis en évidence:
  • Identification des exigences des usagers
  • Implémentations des exigences des usagers
  • Facilité d'utilisation et mise à jour de la documentation
  • Maintenance du système
Ces activités, si elles sont négligées, peuvent causer l'échec d'un projet ou tout au moins l'affecter grandement. Le client peut se retrouver avec un système qui ne lui convient pas et ne l'utilisera pas

Ce processus est souvent appelé l'activité V&V (vérification et validation) dans le métier. Le niveau de v & v ne peut être du même niveau pour n'importe qu'elle système. Ne serait-ce que pour des questions de coûts par exemple. Les mesures misent en place pour le développement d'un système bancaire peuvent s'avérer totalement inutile pour la gestion d'un logiciel de pool de hockey.

Plusieurs questions peuvent faciliter les mesures devant être prises pour un projet: quel est le niveau de qualité devant être atteint, les demandes spécifiques du client, les ressources disponibles, le niveau d'expertise, l'échéancier, le niveau de risque pouvant être pris... Les réponses à ces quelques questions permettent d'avoir un petit aperçu des mesures nécessaires pour assurer un minimum de qualité pour le système à développer. Ces pratiques ne sont trop souvent pas réalisées pour les logiciels commerciaux, il suffit de voir le nombre de mises à jour critiques... Une grande partie des problèmes au niveau de la qualité peuvent être enrayés grâce aux tests. Un article sur les tests peut être trouvé dans la section Génie logiciel de ce site.

Les tests

Cette phase est l'une des plus coûteuses en terme de temps et d'argent, elle peut facilement prendre plus de 30% du cycle de développement. Parmi les tests, on retrouve :
  • les tests unitaires qui sont faits par le programmeur afin que chaque module puisse fonctionner sans erreur de programmation
  • les tests fonctionnels qui sont faits par le programmeur ou un spécialiste afin de s'assurer que les exigences fonctionnelles sont implantées convenablement
  • le test du produit afin de s'assurer que le logiciel s'exécute correctement
  • le test du système afin de vérifier si le logiciel fonctionne sur la machine cible (avec les logiciels et matériel du client)
  • le test de validation qui est fait par le client pour vérifier le niveau de qualité
Malheureusement, la compétitivité du marché semble l'emporter sur la qualité. Livrer un système sans faille ne semble plus possible.

Il est difficile de juger du moment où il est opportun d'arrêter les tests. Il est possible de se baser sur des coûts économiques: le coût d'une éventuelle panne du système coûterait plus cher que le coût des tests. Les risques doivent être pris en considération lorsque les tests sont arrêtés.

Automatisation


La phase de tests est souvent réalisée de façon manuelle. Or cette étape peut être de plus en plus automatisée. Certes, il y a une phase d'adaptation au niveau du logiciel, mais le temps et l'argent investis ne seront pas perdus.

Des logiciels qui génèrent des entrées pour un système existent. Les logiciels de ce type permettent de voir comment le logiciel réagira avec 8, 10.. Caractères lorsque le logiciel n'en gère que 5 par exemple. Il est ainsi possible de voir les cas limites du système. Un rapport est créé et les tests passés ou échoués peuvent être rapidement vus. Une fois que les cas désirant être testés sont créés, ils pourront être de nouveau exécutés à chaque version du logiciel afin de voir si de vieux problèmes ne sont pas revenus. En plus de pouvoir être utilisés dans d'autres versions du système, ils peuvent être utilisés à diverses phases des tests. Au final, les tests sont gérés de façon centralisée. Les tests et résultats des tests sont accessibles à tous.

Des outils d'analyse de code existent aussi, ils permettent de savoir si certains standards ont été suivis, de cerner d'éventuels problèmes. Un autre outil facile à mettre en oeuvre est le gestionnaire de suivi de problème. Un exemple de ce type de logiciels est bugzilla. Ce type d'application permet de voir les problèmes fixés, de nouvelles caractéristiques désirées...
Afin d'assurer une réussite des approches vues dans cet article, l'entreprise doit s'assurer de la participation de tous. Plus nos processus de développement logiciels sont défaillants, plus le niveau d'efforts sera exigence. Un suivi plus précis de la gestion du projet devra être réalisé.

Du temps devra être pris pour bien documenter les étapes de développement du système. Les participants aux projets devraient tous connaître les ressources mises à leurs dispositions pour augmenter la qualité du système. Savoir qu'on a des ressources n'est pas tout, il faut aussi les utiliser. Une bonne communication s'avère cruciale pour espérer une réussite d'un projet informatique.