Qu'est-ce qu'un test négatif ? Cas de test avec exemple
⚡ Résumé intelligent
Les tests négatifs vérifient le comportement d'une application logicielle lorsqu'elle reçoit des données d'entrée ou des conditions de fonctionnement inattendues, afin que le produit se dégrade en douceur au lieu de planter, de corrompre des données ou de révéler une faille de sécurité.

Test négatif
Test négatif Les tests négatifs sont un type de test logiciel utilisé pour vérifier la résistance d'une application à des données d'entrée et des conditions inattendues. Ces données ou conditions inattendues peuvent aller d'une erreur de saisie dans un simple champ de formulaire à une attaque informatique délibérée. L'objectif des tests négatifs est d'empêcher le plantage de l'application en cas de saisie invalide et d'améliorer la qualité et la stabilité du produit.
Les tests positifs prouvent à eux seuls que le système fonctionne dans des conditions normales. Les tests négatifs confirment que ce même système gère également les conditions anormales, ce qui est essentiel pour un produit tolérant aux pannes.
Exemple de test négatif
L'ascenseur est l'exemple le plus souvent utilisé pour expliquer les tests négatifs, car son comportement normal et son comportement en cas de défaillance sont tous deux faciles à visualiser.
Le fonctionnement d'un ascenseur est bien connu : appuyer sur un numéro d'étage envoie l'ascenseur à cet étage, et la porte s'ouvre automatiquement une fois que l'ascenseur a atteint l'étage indiqué.
Quelques scénarios négatifs pour cette même levée sont énumérés ci-dessous, à côté de l'hypothèse selon laquelle les tests positifs permettent de la réaliser.
| Test négatif | Test positif |
|---|---|
| Que se passe-t-il si le nombre de personnes (poids) dépasse la limite spécifiée ? | Suppose que seul le nombre spécifié de personnes entrera dans l'ascenseur |
| Que se passe-t-il si quelqu'un fume ou provoque un incendie à l'intérieur de l'ascenseur ? | On suppose qu'il n'y aura ni fumée ni incendie à l'intérieur de l'ascenseur. |
| Que se passe-t-il en cas de panne de courant pendant le fonctionnement ? | On suppose qu'il n'y aura pas de panne de courant pendant le fonctionnement de l'ascenseur. |
Tous ces cas relèvent de tests négatifs. On ne peut garantir qu'aucun ne se produise jamais, il est donc impératif de contenir chacun d'eux.
Imaginons que la surcharge ne soit jamais vérifiée et que l'ascenseur présente un comportement anormal une fois surchargé. Cette simple lacune compromet la fiabilité du système et peut même mettre des vies en danger. C'est ce que signifie concrètement un test négatif, et c'est pourquoi il est si important.
Le logiciel fonctionne de la même manière. Un test négatif s'écarte délibérément de la procédure opérationnelle normale. Prenons l'exemple d'un formulaire d'inscription.
| Test négatif | Test positif |
|---|---|
| Saisissez une adresse e-mail invalide dans le champ e-mail | Seules les adresses e-mail valides sont saisies dans le champ e-mail. |
| Saisissez un numéro de téléphone invalide, par exemple des caractères, dans un champ de numéro de téléphone. | Seuls les chiffres sont saisis dans le champ numérique. |
| Téléversez une image dont la taille dépasse les limites spécifiées. | Seules les images respectant les dimensions spécifiées sont téléchargées. |
| Téléversez des fichiers invalides tels que XML or SQL fichiers dans un champ de téléchargement d'images | Seuls les formats d'image valides tels que .jpg ou .png sont acceptés. |
Chacun de ces cas négatifs doit permettre au système de rester fonctionnel. Si un caractère est saisi dans un champ numérique, l'application ne peut pas traiter ces données inattendues et risque de planter. Pire encore, un Injection SQL Une chaîne de caractères dans le même champ pourrait effacer le contenu de la base de données. Ce type de perte justifie l'existence des tests négatifs.
Pourquoi faire des tests négatifs ?
Les tests consomment du temps et de l'argent ; il est donc crucial de bien définir quoi tester, comment et dans quelle mesure. L'intérêt de consacrer une partie du budget aux tests négatifs diffère selon les parties prenantes d'un projet.
Point de vue de l'organisation
Fournir un produit de qualité au client est la responsabilité de l'organisation, et les tests négatifs font partie intégrante de cette obligation. Ils constituent également la preuve que l'organisation a mis en œuvre tous les moyens raisonnables pour prévenir une défaillance, même si aucun système n'est totalement infaillible.
L'impact est le facteur déterminant. Un site de commerce électronique peut réussir tous les tests positifs et pourtant présenter une faille permettant à un attaquant d'effectuer une injection SQL et d'effacer les données sous-jacentes. Il s'agit d'une grave violation de sécurité, et seuls les tests négatifs permettent de la détecter.
Les applications publiques, et notamment les sites web, n'offrent quasiment aucun contrôle sur leur utilisation par les visiteurs. Par conséquent, les tests négatifs constituent le seul moyen de garantir que les usages inhabituels sont couverts et maîtrisés. Il en va de même pour les utilisateurs malveillants : les attaquants recherchent activement des failles de sécurité, et les scénarios de piratage doivent impérativement être inclus dans les tests négatifs.
Point de vue du client
Les clients s'attendent à un produit sans aucune vulnérabilité, et les tests négatifs permettent de répondre à cette attente. Pour les produits sensibles tels que le commerce électronique ou le courtage en ligne, les tests de sécurité et les tests négatifs sont obligatoires et non facultatifs.
Le seul véritable souci du client est le coût. Une fois l'impact d'une défaillance analysé, le client est en mesure de décider de l'étendue des tests à mener.
Comment réaliser un test négatif
Les tests négatifs commencent par examiner toutes les entrées que l'application peut physiquement recevoir, et pas seulement celles qu'elle est censée recevoir. Chacune d'elles appartient à un Cas de test Même lorsqu'il est évident que c'est la mauvaise façon d'utiliser la fonctionnalité. Un champ d'adresse e-mail est testé avec tout ce qui n'est pas une adresse e-mail valide, et un contrôle de téléchargement d'images est testé avec tous les types de fichiers qui ne sont pas des images.
La liste des entrées invalides possibles étant pratiquement infinie, il est indispensable de prioriser les tests négatifs. Pour un champ image n'acceptant que les fichiers .png, les formats candidats incluent .jpeg, .xml, .xls et bien d'autres. Un fichier XML ou SQL ayant un impact potentiel bien plus important qu'un fichier .jpeg, ces cas sont exécutés en premier. Ce classement des cas par ordre d'impact avant leur exécution permet de maintenir un coût abordable pour les tests négatifs.
La plupart des cas de tests négatifs proviennent d'un petit ensemble de techniques de conception établies plutôt que d'improvisation :
- Valeurs limites : tester les valeurs immédiatement en dehors d'une plage valide, telles que 0 et 101 pour un champ qui accepte de 1 à 100.
- Classes d'équivalence invalides : Choisissez un représentant de chaque catégorie d'entrée rejetée, par exemple des lettres dans un champ numérique.
- Deviner par erreur : Utiliser l'expérience acquise avec les défauts passés pour cibler les entrées les plus susceptibles de perturber ce type de fonctionnalité.
- Données malformées et hostiles : Balises de script, fragments SQL et charges utiles surdimensionnées qui testent la validation et la gestion de la sécurité.
- Test de fuzz: Générer automatiquement de grands volumes d'entrées aléatoires ou mutées pour détecter les plantages non gérés.
- Flux interrompus : annuler, actualiser, expirer ou perdre la connexion en cours de transaction.
Quelle que soit la technique utilisée, le résultat attendu doit être consigné par écrit comme une défaillance contrôlée et lisible — un message de validation, un téléchargement rejeté, une restauration propre — et jamais simplement comme « le système ne plante pas ».
Avantages et inconvénients des tests négatifs
Comme toute autre technique de test, le test négatif présente des avantages et des inconvénients qui dépendent du lieu, du moment et de l'ampleur de son application.
Avantages des tests négatifs
- Elle protège directement la qualité du produit, car un produit de bonne qualité est un produit sans vulnérabilités exploitables.
- Cela élargit la couverture. Des données invalides parviennent à un système en production, intentionnellement ou accidentellement ; par conséquent, les cas négatifs doivent être traités parallèlement aux cas positifs pour que la couverture soit pertinente.
- Cela renforce la confiance des clients avant la mise en ligne d'une version.
- Elle met en évidence des défauts que les tests positifs ne peuvent pas détecter structurellement, tels que les exceptions non gérées et la validation insuffisante des entrées.
Inconvénients des tests négatifs
- Dans certains cas, c'est une perte de temps et d'énergie. Si une application est conçue pour un seul utilisateur, il est inutile de tester le cas de 100 utilisateurs simultanés ; le choix des conditions appropriées est donc crucial, et certains systèmes nécessitent très peu de tests négatifs.
- La conception des étuis requiert des personnes qualifiées et expérimentées.
- Du point de vue du client, cela engendre des coûts supplémentaires et peut retarder la livraison.
- Cela crée une concurrence pour les efforts. Une équipe qui dépense beaucoup pour les tests négatifs risque de sous-investir dans les tests positifs.
