L'Institut | Mission insertion de Bull   | Groupes de réflexion | Publications | Livres adaptés pour aveugles
  Accueil> Publications> Lettre N°4
Contact |Plan du site 

Lettre N° 1
Lettre N° 2
Lettre N° 3
Lettre N° 4
. Editorial
. Cerveaux et machines
. Point de vue
. Technologie pour...
. Risques et complexité
. Ethique et technique
Lettre N° 5
Lettre N° 6
Lettre N° 7
Lettre N° 8
Lettre N° 9
 
Archives de la Lettre de l'Institut
Sommaire n°4 février 2003
 Editorial  Technologie pour l'informatique
 Cerveaux et machines  Risques et complexité
 Point de vue  Ethique et technique
 
Technologie pour l'informatique
 

Le test des logiciels, un passage obligé dans la course à la qualité

Par François ANCEAU, professeur au Conservatoire national des arts et métiers*; professeur chargé de cours à l'Ecole polytechnique.

Les logiciels sont de plus en plus impliqués dans notre vie de tous les jours. Pour s'en persuader, il suffit de savoir que dans notre carte bancaire, notre téléphone portable, notre voiture, nos appareils électroménagers et audio-visuels, notre montre, des ordinateurs miniatures exécutent du logiciel. De même, les différents transports en commun que nous utilisons, du métropolitain à l'avion en passant par l'autobus, contiennent un nombre variable d'ordinateurs. Les différents services auxquels nous avons recours tels que les banques, l'administration, les achats et les réservations sont tous gérés par des ordinateurs.

Cette myriade de machines et de logiciels acquiert de fait une importance grandissante dans la société. Qui ne se souvient pas d'une panne d'ordinateur à la SNCF ou pour l'enregistrement d'un voyage aérien ? La défaillance d'un système informatique peut avoir des conséquences souvent fâcheuses, mais qui, par exemple, peuvent devenir graves lorsqu'il s'agit de la commande des freins d'une automobile.

Il est théoriquement impossible d'affirmer systématiquement qu'un logiciel fera bien ce qu'il doit faire, en partie parce qu'il est très difficile d'exprimer sans erreur ce que l'on attend de lui. Pour contourner cette impossibilité théorique, des techniques empiriques ont été développées pour tester le logiciel.

Le test des logiciels repose en fait sur deux piliers.
Le premier concerne l'organisation et le caractère méthodique du travail d'écriture et de vérification du logiciel, ainsi que sur l'attitude psychique que l'on doit avoir vis à vis de la qualité du logiciel pendant ces travaux. Plus le travail est méthodique et réalisé dans un but d'amélioration de la qualité sans exagération, plus le logiciel est fiable (c'est d'ailleurs l'esprit des normes de qualité).
Le second pilier comprend un certain nombre de techniques destinées à solliciter le plus efficacement possible les logiciels pour qu'ils révèlent leurs erreurs. On distingue les techniques de test dites "fonctionnelles" qui considèrent le logiciel à tester comme une "boite noire" et se contentent de vérifier qu'il produit des sorties conformes aux prévisions. A l'opposé, les techniques de test dites "structurelles" supposent la connaissance intime du codage des programmes. Leur objectif est de les parcourir le plus exhaustivement possible de manière à s'assurer qu'ils ne contiennent pas de séquences qui provoqueraient leur arrêt catastrophique. On parle de "taux de couverture" pour mesurer la proportion du code d'un programme qui a été parcourue par un ensemble de tests structurels.

Une nouvelle technique, très prometteuse, est en train d'émerger doucement car sa gestation à partir de l'informatique théorique est laborieuse. Il s'agit de la vérification statique qui consiste à vérifier, par une analyse du code source d'un programme, que celui-ci ne va pas faire d'erreurs de "bonne conduite" comme par exemple adresser un tableau en dehors de ses bornes ou tenter d'exécuter une division par zéro.
Quelques outils (très complexes) commencent à exister. Ceux-ci sont utilisés pour la vérification des applications critiques, mais l'implication de grandes compagnies logicielles comme Microsoft devrait inciter à un emploi plus large de ces techniques.

Le coût du test "complet" d'un logiciel est théoriquement aussi élevé que celui de sa réalisation. A cause de cela, l'ampleur des tests est "modulée" en fonction de la nature de ce logiciel. S'il s'agit d'un logiciel engagé dans une opération critique comme le pilotage d'une navette spatiale ou d'un métro automatique, le budget consacré aux tests est maximal, ce qui n'est peut être pas toujours le cas pour un logiciel de gestion d'une entreprise…

Le suivi de l'amélioration de la qualité d'un logiciel est réalisé par des techniques statistiques qui s'appuient sur des modèles issus de l'expérience pour évaluer la diminution du nombre des erreurs résiduelles en fonction du déroulement des opérations de test. Il est notoire de constater que pour des raisons de coût, la majorité des logiciels sont insuffisamment testés. Toutefois, le fait de tester prioritairement que les scénarios les plus catastrophiques ne se produiront pas, a un côté rassurant.


* chaire des techniques fondamentales de l'informatique