Qu’est-ce que le test logiciel ?
Tester un logiciel, c’est le faire tourner avec des cas choisis pour y trouver des erreurs avant que les utilisateurs ne les rencontrent. Un bon test dit vite si le programme fait ce qu’on attend. On évite ainsi de découvrir un bogue le jour de la mise en ligne.
Prenons une boutique en ligne. Un panier contient un article à 0,10 € et un autre à 0,20 €. Le programme affiche 0,30000000000000004 €. Personne n’a voulu cela, et personne ne l’a vu avant la vente.
À la fin de cette leçon
Remarque
Je peux dire quel genre de test trouve quel genre de faute.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Faute | l’erreur écrite dans le code, aussi appelée défaut | une mauvaise formule |
| Défaillance | ce que l’on voit quand la faute s’exécute | un total faux |
| Test unitaire | un test qui vérifie une seule fonction | |
| Test d’intégration | un test qui vérifie que deux parties travaillent bien ensemble | |
| Test système | un test qui parcourt le programme entier, comme un utilisateur | |
| Régression | une fonction qui marchait et qui ne marche plus après un changement |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Une faute n’est pas une défaillance
Une faute est l’erreur écrite dans le code, par exemple une mauvaise formule. Une défaillance est ce que l’on voit quand cette ligne s’exécute : un mauvais total, un plantage.
La faute existe dès l’écriture. La défaillance n’apparaît que si un cas la déclenche. Un programme peut donc contenir une faute pendant des mois sans que personne la voie.
Voir la défaillance du total
python3 -c "print(0.1 + 0.2)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Corriger la faute : compter en centimes
python3 -c "print(10 + 20)"Affichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
La faute se cache derrière la défaillance
La première commande affiche 0.30000000000000004. Python garde un nombre décimal sous une forme approchée, donc l’addition n’est pas exacte.
La défaillance est le total bizarre. La faute est d’avoir compté de l’argent en nombres décimaux. La seconde commande compte en centimes : 10 + 20 donne 30, sans reste.
Quel test trouve quelle faute ?
On teste à plusieurs niveaux, du plus petit au plus grand. Chaque niveau cherche une sorte de faute que les autres voient mal.
Le tableau suit une librairie en ligne. Lisez-le ligne par ligne.
Exemple travaillé : un bogue, un niveau
| Niveau | Ce qu’il teste | Faute qu’il trouve | Exemple dans la librairie |
|---|---|---|---|
| Unitaire | une seule fonction | un calcul faux | la remise de 10 % donne un mauvais prix |
| Intégration | deux parties ensemble | un format qui ne correspond pas | le panier envoie des euros, le paiement attend des centimes |
| Système | le programme entier | un parcours qui échoue | impossible de payer après avoir changé l’adresse |
| Acceptation | le besoin du client | une fonction oubliée ou mal comprise | la facture n’affiche pas la TVA demandée |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un bogue trouvé tard coûte cher
Corriger une faute coûte plus cher à chaque étape où elle passe sans être vue. Pendant l’écriture, on la répare en quelques minutes. Chez les clients, il faut aussi prévenir, réparer les données et regagner la confiance.
Les durées du tableau sont un exemple pour donner un ordre de grandeur, pas une mesure.
Exemple travaillé : une même faute, quatre moments
| Où on la trouve | Temps pour la réparer | Qui est touché |
|---|---|---|
| À l’écriture | 5 minutes | une personne |
| Au test d’intégration | 1 heure | l’équipe |
| À la recette chez le client | 1 journée | l’équipe et le client |
| Après la mise en ligne | 3 jours | l’équipe et tous les utilisateurs |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un journal garde la trace d’une défaillance
Un programme en service écrit souvent ce qui lui arrive dans un journal, un fichier de lignes datées. Une ligne ERROR est une défaillance que quelqu’un peut lire.
Le labo contient un journal. La commande qui suit affiche la première ligne ERROR. Son message est en anglais, car il vient du labo, et sa date change à chaque labo.
Lire une défaillance dans le journal
grep -m 1 ERROR /var/log/test.logAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Erreur fréquente
Attention
Beaucoup pensent qu’un test réussi prouve que le programme est correct. Il prouve seulement que ce cas-là marche. Les tests montrent la présence de fautes, jamais leur absence.
Classer un rapport de bogue par niveau
Un rapport de bogue dit où la défaillance se montre. Une seule fonction fausse relève d’un test unitaire. Deux modules qui se parlent mal relèvent d’un test d’intégration.
Tout le programme qui échoue relève d’un test système. Un besoin mal compris relève d’un test d’acceptation. Le devoir vous fait écrire ce classement en Python.