Test (informatique)
En informatique, un test (anglicisme) désigne une procédure de vérification partielle d'un logiciel : on lance tout ou partie du logiciel sur un exemple de données d'entrées et d'environnement, et on vérifie si le résultat obtenu est correct. S'il n'est pas correct, cela veut dire qu'on a trouvé une bogue (ou du moins une mauvaise spécification du système).
Ainsi, les tests permettent de vérifier qu'un logiciel réalise correctement une fonction ou donne des résultats valides. Il existe plusieurs niveaux de tests :
- tests unitaires : vérification des fonctions une par une ;
- tests d'intégration : vérification du bon enchaînement des fonctions et des programmes.
- test de non-régression : vérification qu'il n'y a pas eu de dégradation des fonctions par rapport à la version précédente.
- tests de performance : vérification que les performances annoncées dans la spécification sont bien atteintes.
En dehors du cas très particulier de systèmes extrêmement simples, il est impossible de tester exhaustivement un logiciel, car le nombre de configurations possibles croît comme 2n où n est le nombre de bits dans la mémoire du calculateur ; le nombre de configurations accessibles, inférieur, reste tout de même prohibitif. La réussite des tests ne permet donc pas de conclure au bon fonctionnement du logiciel. On essaye cependant, heuristiquement, de faire que si une bogue est présente, le test la trouve, notamment en exigeant une bonne couverture des tests :
- couverture en points de programme : chaque point de programme doit avoir été testé au moins une fois
- couverture en chemins de programme : chaque séquence de points de programme possible dans une exécution doit avoir été testée au moins une fois (impossible en général).
Si l'on veut des assurances plus fortes de bon fonctionnement, on peut utiliser des méthodes formelles.
Les JUnit permettent, en Java, de faciliter les tests apportés au programme.
