lundi 9 août 2010

RÔLE DES TESTS

Le rôle des tests est multiple. En effet, aujourd’hui le logiciel est partout et remplit des missions très variées : gestion des paies, gestion du personnel et des clients par les systèmes d’informations des entreprises, contrôle des centrales nucléaires, aide au pilotage des avions civils et militaires, amélioration de fonctionnement des appareils ménagers, services offerts sur les téléphones portables, etc. « Il y a plus d’informatique dans la Volvo S80 que dans le chasseur F15 » déclarait en janvier 2000 Denis Griot responsable de l’électronique automobile chez Motorola.
On ne sait pas, par construction, fabriquer des logiciels sans défaut : l’homme commet des erreurs et aucun programme ne peut générer de façon sûre un autre programme ou vérifier qu’un programme fait exactement ce pour quoi il est fait. En effet, les limites théoriques montrent qu’il est impossible dans le cas général, de construire un algorithme permettant de dire si:
  • étant donnés deux programmes P et P’qu’ils font la même chose.
  • étant donné un programme P et un entier n, permette de dire que P ne va pas boucler indéfiniment sur l’entrée n.
  • qu’étant donné un programme P et une fonction f de N dans N, il soit capable de dire si P calcule effectivement f.
 (il s’agit d’un problème de décidabilite). . Si tel était le cas, et si l’on notait Stop ce programme et Stop(P), le résultat de l’analyse de la terminaison d’un programme P par Stop, on pourrait construire un programme B contenant l’instruction « si Stop(B) alors rentrer dans une boucle sans fin, sinon arrêter ». Ce programme B mettrait en défaut systématiquement ce programme oracle Stop.
Devant ce constat d’impossibilité, différentes approches sont possibles :
1. se limiter à construire des programmes très simples que l’on sait analyser de façon certaine, mais qui ne pourront résoudre que des problèmes limités ;
2. construire des programmes complexes dont on ne pourra prédire de façon exacte le comportement, mais qui permettront dans la plupart des cas de résoudre des problèmes ambitieux.

Aucun commentaire:

Enregistrer un commentaire

to criticize, to improve