Qu’est-ce qu’un test destructif en logiciel ?

⚡ Résumé intelligent

Les tests destructifs poussent délibérément une application logicielle jusqu'à ce qu'elle tombe en panne, révélant ainsi les points précis où sa robustesse est compromise par une utilisation inappropriée, des entrées invalides et un comportement imprévisible, points que les contrôles fonctionnels ordinaires n'atteignent jamais.

  • 💥 Idée centrale : L'application est conçue pour dysfonctionner intentionnellement afin que ses points de défaillance deviennent visibles et mesurables.
  • ???? Aucune condition requise : La connaissance préalable des spécifications est facultative, bien qu'elle permette d'affiner la stratégie de test.
  • Paire opposée : Les essais non destructifs suivent la voie royale ; les essais destructifs l'attaquent sous tous les angles.
  • 🧰 Approches: Analyse des points de défaillance, revue par les pairs des testeurs, revue métier et essais exploratoires avec feuilles de route.
  • 🧪 Méthodes réutilisées : Les tests de régression, d'interface, de partitionnement par équivalence, de boucle et d'acceptation servent tous des objectifs destructifs.
  • (I.e. Limites honnêtes : La couverture est difficile à garantir, l'effort est important et les résultats peuvent être difficiles à reproduire.

Qu’est-ce qu’un test destructif en logiciel ? Quelles sont les méthodes et les techniques utilisées ?

Qu’est-ce que les tests destructifs ?

Essais destructifs Le test destructif est une méthode de test logiciel utilisée pour identifier les points de défaillance d'un programme. Cette technique consiste à provoquer intentionnellement une défaillance de l'application afin de vérifier sa robustesse et d'identifier ses points faibles. Contrairement aux méthodes de test qui vérifient le bon fonctionnement de l'application, le test destructif examine les comportements imprévisibles des utilisateurs au sein de celle-ci.

La connaissance des exigences initiales n'est pas nécessaire pour les essais destructifs. Cependant, certaines connaissances sont utiles pour le développement.ping une bonne stratégie de test.

L'illustration ci-dessous capture cette idée : le testeur travaille contre le produit plutôt qu'avec lui.

Concept de test destructif : une application délibérément poussée jusqu’à la limite de sa défaillance.

Pourquoi effectuer des essais destructifs ?

  • Cela permet de comprendre le comportement prévisible d'un logiciel lorsqu'il est utilisé de manière inappropriée.
  • Il permet de vérifier la robustesse d'un produit logiciel.
  • Elle met en évidence des défauts rares que les utilisateurs ordinaires ne déclenchent jamais, mais qui apparaissent plus tard en production.

Essais destructifs vs essais non destructifs

Ces deux approches sont complémentaires, et non rivales. Contrôle non destructif Les tests destructifs, également appelés tests positifs ou tests en mode nominal, vérifient que le logiciel fonctionne correctement et que la version n'est pas corrompue. Les tests destructifs, quant à eux, fonctionnent à l'inverse : ils injectent des données invalides et des séquences incorrectes jusqu'à ce qu'un dysfonctionnement survienne.

Aspect Essais destructifs Contrôle non destructif
Intention Forcer l'échec de l'application Vérifiez que l'application fonctionne comme spécifié.
Entrée utilisée Invalide, malformé, hors plage, hors séquence Données valides dans la plage attendue
Réponse à la question Où et comment se casse-t-il ? Est-ce que cela fonctionne comme prévu ?
Connaissances requises Optionnel Les Essentiels
Coût typique Niveau supérieur — exploratoire et ouvert Inférieur — scripté et répétable
Résultat Points de défaillance, limites de plage, comportement de récupération Réussir ou échouer par rapport aux spécifications

Que vérifie-t-on lors d'un essai destructif ?

Les tests destructifs examinent les deux côtés de la frontière comportementale :

  • Comportement logiciel approprié
  • Comportement anormal du logiciel
  • Usage inapproprié
  • Données d'entrée incorrectes
  • Données de sortie appropriées

Deux conditions doivent être respectées tout au long de l'exercice :

  • Le logiciel ne doit jamais traiter ni accepter de données d'entrée invalides.
  • Indépendamment de la validité ou de l'exactitude des données d'entrée, le logiciel doit toujours produire des données de sortie correctes.

Comment faire des tests destructifs ?

Les tests destructifs impliquent de nombreuses activités, telles que la conception d'un ensemble de scripts de test, l'exécution de ces scripts, le signalement des bogues, la résolution des bogues et la fourniture de mesures de réussite ou d'échec aux parties prenantes à la fin de l'itération.

Il existe de nombreuses façons de l'exécuter. Voici quelques exemples.

  • Méthode d'analyse des points de défaillance : une présentation du système qui évalue les risques de dysfonctionnement à différents niveaux. L'aide d'un analyste d'affaires peut être envisagée pour cette stratégie.
  • Évaluation par les pairs des testeurs : obtenir votre cas de test analysé ou examiné par un autre testeur moins familier avec le système ou la fonction.
  • Examen fonctionnel des cas de test : Les utilisateurs finaux ou les experts pensent souvent à des scénarios valides que les testeurs ne prennent pas en compte, car l'attention de ces derniers se porte sur les exigences énoncées.
  • Effectuer des tests exploratoires à l'aide de feuilles de route : tests exploratoires Les feuilles de contrôle permettent d'enregistrer ce qui a été testé, de répéter les tests et de maîtriser la couverture des tests.
  • Utilisez une autre source : Demandez à quelqu'un d'autre de tester la vulnérabilité du logiciel et d'analyser les scénarios rencontrés.

Exemple d'essai destructif

Prenons l'exemple des écrans de connexion et de profil d'une application bancaire. Une attaque destructive fonctionnerait dans des cas comme celui-ci :

  • Collez une chaîne de 5 000 caractères dans un champ limité à 50 caractères et vérifiez que le champ la rejette au lieu de la tronquer silencieusement.
  • Saisissez des lettres, des symboles et des valeurs négatives dans un champ de montant numérique.
  • Rompre le déroulement habituel — ouvrir directement la page de confirmation de paiement sans effectuer l'étape précédente.
  • Appuyez plusieurs fois rapidement sur le bouton Soumettre pour vérifier si des enregistrements en double sont créés.
  • Déconnectez le réseau en cours de transaction et vérifiez si l'application se rétablit correctement ou si elle laisse un enregistrement partiel.

Chaque cas présente une attente définie : un message de validation clair, l’absence de corruption de données et l’absence d’exception non gérée. Tout autre comportement constitue un point de défaillance devant être signalé comme un défaut.

Méthodes de tests destructifs

Les méthodes suivantes sont utilisées en génie logiciel pour atteindre les objectifs des tests destructifs :

Techniques de tests destructifs

Les techniques ci-dessous peuvent être utilisées avec des modifications :

Les techniques connexes qu'il est intéressant d'ajouter lorsque la robustesse est l'objectif sont : test négatif, tests de stress, test de récupération et test de fuzz.

Avantages et inconvénients des essais destructifs

Il est important d'énoncer clairement ce compromis avant d'intégrer cette technique dans une version finale.

Avantages

  • RevIl élimine les points de défaillance que les tests basés sur les spécifications n'atteignent jamais.
  • Définit des limites de portée réelles, permettant ainsi d'utiliser le produit en toute confiance à l'intérieur de celles-ci.
  • Révèle des défauts rares qui apparaissent en production longtemps après la mise sur le marché.
  • Vérifie la durabilité, la capacité de récupération et la gestion des erreurs en cas de mauvaise utilisation.

Désavantages

  • De par sa nature ouverte, la couverture ne peut être ni garantie ni mesurée facilement.
  • Cela prend du temps et dépend de l'expérience et de la créativité du testeur.
  • Il peut être difficile de reproduire les résultats sans un enregistrement précis des étapes suivies.
  • Des exécutions mal contrôlées peuvent corrompre les données de test partagées ; un environnement isolé est donc nécessaire.

FAQ

Elles se recoupent mais diffèrent par leur portée. Test négatif Les tests destructifs vérifient la conformité des entrées invalides définies avec la gestion des erreurs attendue. Plus larges et non limités, ils recherchent toute condition susceptible de provoquer une défaillance de l'application.

Ce sont généralement des ingénieurs QA expérimentés, épaulés par des collègues non familiarisés avec le module et par des utilisateurs métiers. Un regard extérieur est essentiel, car les personnes ayant développé la fonctionnalité ont tendance à la tester conformément à sa conception.

Une fois la suite fonctionnelle stabilisée, les défaillances témoignent de sa robustesse plutôt que de fonctionnalités inachevées. De nombreuses équipes planifient ces tests lors des tests système et les répètent avant les mises en production majeures. cycle de vie des tests.

Les modèles génèrent des charges utiles malformées, des valeurs limites et des séquences d'actions inhabituelles à un volume qu'aucun testeur ne peut égaler, puis classent les anomalies identifiées. L'apprentissage automatique appliqué aux données de défauts antérieurs permet également de prédire quels modules méritent le traitement le plus sévère.

Copilote GitHub Le programme génère rapidement des générateurs d'entrée, des cas limites et des routines de démontage. Un testeur détermine ensuite quels modes de défaillance sont pertinents et si le comportement observé constitue un résultat acceptable.

Les données d'entrée ou la séquence exactes utilisées, la défaillance observée, les journaux et les captures d'écran, l'environnement et la gravité de l'impact. Les indicateurs de réussite ou d'échec de l'itération sont communiqués aux parties prenantes avec les enregistrements de défauts.

Il ne doit jamais être utilisé en production. Exécutez-le dans un environnement isolé avec des données restaurables, car des entrées volontairement invalides et des plantages provoqués peuvent laisser des enregistrements partiels coûteux à nettoyer.

Pendant la session, tenez une feuille de route consignant chaque action et saisie dans l'ordre. Rejouez cette feuille à partir d'un état initial vierge, puis réduisez-la à la séquence minimale qui déclenche encore l'erreur.

Résumez cet article avec :