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é.

  • 🔴 Objectif : Vérifiez que l'application rejette correctement les données invalides au lieu de générer une erreur ou un plantage.
  • Contraste: Un test positif confirme que le chemin est emprunté avec succès ; un test négatif explore tout ce qui s'en écarte.
  • 🛗 Analogie: Un ascenseur doit résister aux surcharges, aux incendies et aux pannes de courant, et pas seulement aux trajets normaux de passagers.
  • (I.e. Sécurité : Les chargements invalides et les tentatives d'injection SQL sont des scénarios de test négatifs classiques.
  • 🧪 Conception: Les cas sont générés par les valeurs limites, les classes d'équivalence, la prédiction d'erreurs et le fuzzing.
  • (I.e. Priorité: Classer les entrées invalides par ordre d'impact, car une couverture exhaustive des données négatives est trop coûteuse.
  • ⚠️ Compromis : Un nombre excessif de tests négatifs absorbe un budget dont la couverture positive pourrait avoir davantage besoin.

Tests négatifs dans les tests logiciels avec des exemples d'entrée invalides

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.

FAQ

Les tests positifs fournissent des données valides et confirment le résultat attendu. Les tests négatifs fournissent des données invalides, des formats incorrects et des séquences incomplètes, et confirment que l'application les rejette par un message d'erreur plutôt que de générer une erreur.

Identifiants vides, utilisateur valide avec un mot de passe incorrect, fragments SQL dans le nom d'utilisateur, chaînes de caractères trop longues, espaces en début ou en fin de chaîne, comptes désactivés et tentatives répétées infructueuses de confirmation du bon fonctionnement du verrouillage.

Non. Il y a un chevauchement en cas d'entrées invalides ou malveillantes, mais les tests de sécurité couvrent également l'authentification, l'autorisation, le chiffrement et la gestion des sessions. Les tests négatifs constituent une technique plus large d'analyse des entrées et des conditions.

Ce sont généralement les testeurs et les ingénieurs QA qui les rédigent, souvent avec l'aide d'un développeur qui examine les chemins d'erreur et d'un analyste métier qui confirme quelles conditions invalides les exigences interdisent réellement.

Suffisant pour couvrir chaque classe d'entrée rejetée, chaque limite et chaque chemin de défaillance à fort impact. Au-delà, les cas supplémentaires n'apportent que peu de valeur ajoutée ; le risque et l'impact déterminent donc le seuil.ping point.

Oui. Les cas de saisie invalide sont très reproductibles, ils conviennent donc parfaitement. tests d'automatisation et des suites de tests de régression. Les outils de fuzzing automatisent la génération d'entrées aléatoires, tandis que les assertions vérifient l'affichage des messages de validation.

Les modèles analysent les exigences ou un schéma de formulaire et proposent des valeurs invalides, des conditions limites et des chaînes de caractères problématiques qu'un testeur ne pourrait pas lister manuellement. Un réviseur vérifie néanmoins que chaque résultat attendu correspond bien aux spécifications.

Oui, il génère le code d'assertion, les fixtures de données invalides et les cas paramétrés à partir d'un fichier de test existant. Les assertions générées doivent être vérifiées, car une assertion d'apparence plausible peut encoder un comportement erroné.

Résumez cet article avec :