Test (informatique)

Infos
En informatique, un test (anglicisme) désigne une procédure de vérification partielle d'un système informatique : le but est de s'assurer que le système informatique réagit de la façon prévue par ses concepteurs.
Test (informatique)

En informatique, un test (anglicisme) désigne une procédure de vérification partielle d'un système informatique : le but est de s'assurer que le système informatique réagit de la façon prévue par ses concepteurs.

Définition

Cette définition est issue de la norme IEEE 829 : Le test est un processus manuel ou automatique, qui vise à établir qu’un système vérifie les propriétés exigées par sa spécification, ou à détecter des différences entre les résultats engendrés par le système et ceux qui sont attendus par la spécification. Ainsi le test vise à mettre en évidence les erreurs d’un logiciel. Cependant il n'a pas pour objectif de :
- diagnostiquer la cause des erreurs,
- corriger les erreurs,
- prouver la correction d’un programme.

Qualité du test

Les phases de test dans le cycle de développement d'un produit logiciel permettent d'assurer un niveau défini de qualité en accord avec le client. Une procédure de test peut donc être plus ou moins fine, et par conséquent l'effort de test plus ou moins important et coûteux selon le niveau de qualité requis.

Procédure de test

On applique sur tout ou une partie du système informatique un échantillon de données d'entrées et d'environnement, et on vérifie si le résultat obtenu est conforme à celui attendu. S'il ne l'est pas, cela veut dire que le système informatique testé présente une anomalie de fonctionnement.

Classification des tests

Il existe différentes façons de classer les tests informatiques. On peut classer ces façons selon trois axes : le niveau de détail (qui dépend essentiellement de l'endroit où l'on se situe dans le cycle de vie), le niveau d'accessibilité (boîte noire ou blanche) et la caractéristique (fonctionnelle ou performance etc.).

Classification selon le niveau de détail

- tests unitaires : vérification des fonctions une par une,
- tests d'intégration : vérification du bon enchaînement des fonctions et des programmes,
- tests 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.

Classification selon le niveau d'accessibilité

- boîte noire : à partir d'entrées définies on vérifie que le résultat final correspond au résultat attendu, donné par un objet de référence (spécification, automate...),
- boîte blanche : on a accès à l'état complet du système que l'on vérifie à chaque ligne.

Classification selon la caractéristique

On ne peut pas être exhaustif, on se contentera de quelques exemples :
- tests de performance : vérification que les performances annoncées dans la spécification sont bien atteintes,
- test fonctionnel : vérification que les fonctions sont bien atteintes,
- test de robustesse : vérification de la robustesse du logiciel.
- test de vulnérabilité : vérification de sécurité du logiciel. 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 2nn est le nombre de bits dans la mémoire du calculateur ; le nombre de configurations accessibles, bien qu'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 en sorte que si un bogue est présent, le test le mette en évidence, 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).
- couverture fonctionnelle : chaque fonctionnalité métier de l'application doit être vérifiée par au moins un cas de test. Si l'on veut des assurances plus fortes de bon fonctionnement, on peut utiliser des méthodes formelles. Les bibliothèques de tests telles JUnit en langage Java, permettent de faciliter l'écriture de tests unitaires par l'apport des méthodes "assert" permettant de vérifier le comportement du programme. Selon la complexité du logiciel, des séquences de vérification globale peuvent s'avérer nécessaires. Celles-ci mettent en jeu la maîtrise d'ouvrage et toutes les composantes du projet, au-delà du logiciel lui-même (processus, organisation, formation, accompagnement du changement) : réception, qualification, certification, homologation, simulation, VABF (vérification d'aptitude au bon fonctionnement)... les termes varient selon les contextes.

Voir aussi

===
Sujets connexes
Accompagnateur du changement   Boîte blanche   Boîte noire (informatique)   Cycle en V   Gestion de projet   Heuristique   Homologation   Informatique   Institute of electrical and electronics engineers   JUnit   Java (langage)   Maîtrise d'ouvrage   Méthode formelle (informatique)   Non-régression   Processus (gestion de la qualité)   Projet   Test   Test d'intégration   Test de performance   Test unitaire  
#
Accident de Beaune   Amélie Mauresmo   Anisocytose   C3H6O   CA Paris   Carole Richert   Catherinettes   Chaleur massique   Championnat de Tunisie de football D2   Classement mondial des entreprises leader par secteur   Col du Bonhomme (Vosges)   De viris illustribus (Lhomond)   Dolcett   EGP  
^