Qu'est-ce que le test dynamique ? Types, techniques et exemple

⚡ Résumé intelligent

Les tests dynamiques exécutent l'application et observent le comportement du code en cours d'exécution avec des entrées réelles, permettant ainsi aux testeurs de valider les fonctionnalités, les performances et la stabilité, ce qu'aucune analyse documentaire ne peut révéler.

  • (I.e. Objectif : Validez le comportement réel en cours d'exécution, et non les documents qui le décrivent.
  • 🔀 Deux branches : La boîte blanche examine le code, la boîte noire examine le comportement.
  • 🧱 Quatre niveaux : Les tests unitaires, d'intégration, système et d'acceptation exécutent tous du code.
  • ⚙️ Non fonctionnel : Les contrôles de performance, de récupération, de compatibilité, de sécurité et d'ergonomie sont effectués ici.
  • (I.e. Processus: Stratégie, conception des tests, configuration de l'environnement, exécution et signalement des anomalies.
  • ???? Compromis : Détection plus approfondie des défauts, au prix de temps, d'environnements et de coûts supplémentaires.

Types, techniques et exemples de tests dynamiques

Qu’est-ce que les tests dynamiques ?

Test dynamique Le test dynamique est une méthode de test logiciel utilisée pour tester le comportement dynamique du code. Son principal objectif est d'examiner le comportement du logiciel avec des variables dynamiques (variables non constantes) et de déceler les points faibles de l'environnement d'exécution. L'exécution du code est nécessaire pour tester le comportement dynamique.

Les tests sont verification ET VALIDATIONLes deux approches (V, V et V) sont nécessaires pour un test complet. La vérification est effectuée par des tests statiques, qui examinent les exigences, les documents de conception et le code sans les exécuter. La validation est effectuée par des tests dynamiques, qui exécutent l'application et comparent son comportement réel à son comportement attendu.

Le tableau ci-dessous permet de les distinguer en un coup d'œil.

Aspect Tests statiques (vérification) Tests dynamiques (validation)
Code réalisé Non Oui
Activités typiques Revvues, visites guidées, inspections, analyse statique Exécution des cas de test à tous les niveaux de test
Réponse à la question Construisons-nous le produit correctement ? Construisons-nous le bon produit ?
Défauts trouvés Exigences ambiguës, violations des normes de codage, code mort Sorties incorrectes, fuites de mémoire, erreurs de synchronisation, défaillances d'intégration
Début Dès qu'un artefact existe Une fois qu'une version exécutable existe
Coût relatif d'une réparation Plus bas, car les défauts sont détectés plus tôt. Plus élevé, car les défauts apparaissent plus tard.

Exemple de test dynamique

Un court exemple concret illustre le comportement des tests dynamiques en pratique.

Supposons qu'une page de connexion soit en cours de test. Elle comporte deux champs, Nom d'utilisateur et Mot de passe, et le Nom d'utilisateur est limité aux caractères alphanumériques.

Lorsque l'utilisateur saisit le nom d'utilisateur comme «Guru99”, le système l'accepte. Lorsque l'utilisateur saisit «GuruÀ la saisie de « 99@123 », l’application génère un message d’erreur. Ce résultat indique que le code réagit dynamiquement en fonction des données saisies par l’utilisateur.

Les tests dynamiques consistent donc à travailler avec le système réel, à fournir une entrée et à comparer le comportement réel de l'application avec le comportement attendu — autrement dit, à travailler avec le système dans le but de trouver des erreurs.

Les tests dynamiques consistent donc à valider une application logicielle comme le ferait un utilisateur final, dans différents environnements, afin de concevoir le logiciel adéquat.

À quoi servent les tests dynamiques ?

L'objectif principal des tests dynamiques est de garantir le bon fonctionnement du logiciel pendant et après son installation, afin de fournir une application stable et exempte de défauts majeurs. Aucun logiciel n'est totalement exempt d'erreurs, et les tests peuvent révéler la présence de défauts, mais jamais leur absence.

Les tests dynamiques garantissent également la cohérence de l'ensemble du logiciel, comme le montre cet exemple.

Dans une application bancaire, il existe plusieurs écrans, tels que Mes comptes, Virements et Bill Payer. Tous contiennent un champ montant.

Supposons que le champ « Mes comptes » affiche le montant de 25 000, que le champ « Virement de fonds » affiche également 25 000 $ et que… Bill L'écran de paiement affiche 25 000 $. Le montant est le même, mais la façon dont il est affiché est différente, ce qui rend le logiciel incohérent.

La cohérence ne se limite pas aux fonctionnalités. Elle englobe également des normes telles que la performance, l'ergonomie et la compatibilité, ce qui explique l'importance des tests dynamiques.

Types de tests dynamiques

Les tests dynamiques sont classés en deux catégories.

  • Blanc Box Tests
  • Noir Box Tests

Le diagramme ci-dessous met en correspondance les deux catégories avec les niveaux de test qui leur sont subordonnés.

Les tests dynamiques sont divisés en tests boîte blanche et boîte noire, avec des niveaux fonctionnels et non fonctionnels.

Chaque type et son usage prévu sont décrits ci-dessous.

Blanc Box Tests — Une méthode de test logiciel où la structure interne et la conception du système sont connues du testeur. Son objectif principal est de vérifier le fonctionnement du système à partir du code. Elle est généralement mise en œuvre par des développeurs ou des testeurs « boîte blanche » possédant des connaissances en programmation.

Noir Box Tests — Une méthode de test où la structure interne, le code et la conception sont inconnus du testeur. Son objectif principal est de vérifier la fonctionnalité du système testé. Ce type de test nécessite l'exécution de la suite de tests complète, est principalement réalisé par des testeurs et ne requiert aucune connaissance en programmation.

Les tests en boîte noire sont à nouveau classés en deux types.

  • Essais fonctionnels
  • Tests non fonctionnels

Essais fonctionnels

Test fonctionel Cette vérification vise à s'assurer que toutes les fonctionnalités développées correspondent aux spécifications fonctionnelles. Elle est réalisée en exécutant le test fonctionnel. cas de test Rédigé par l'équipe d'assurance qualité. Durant cette phase, le système est testé en fournissant des données d'entrée, en vérifiant les résultats de sortie et en comparant les résultats obtenus aux résultats attendus.

Il existe différents niveaux de tests fonctionnels, dont les plus importants sont les quatre ci-dessous.

  • Tests unitaires — Une unité est un petit fragment de code testable. Les tests unitaires sont effectués sur chaque unité logicielle et sont réalisés par les développeurs.
  • Test d'intégration — Effectuée après les tests unitaires, en combinant les unités testables individuelles. Elle est réalisée soit par les développeurs, soit par les testeurs.
  • Test du système — Ce test est réalisé pour s'assurer que le système se comporte conformément aux exigences. Il est généralement effectué par les testeurs lorsque le système complet est prêt, une fois la version transmise à l'équipe d'assurance qualité.
  • Test de réception — Ce test est réalisé pour vérifier si le système répond aux exigences métier et s'il est prêt à être utilisé ou déployé. Il est généralement effectué par les utilisateurs finaux.

Tests non fonctionnels

Tests non fonctionnels Les tests non fonctionnels sont une technique de test qui ne se concentre pas sur les aspects fonctionnels, mais plutôt sur les attributs non fonctionnels du système, tels que les fuites de mémoire, les performances ou la robustesse. Ils sont effectués à tous les niveaux de test.

Il existe de nombreuses techniques de test non fonctionnelles, dont les cinq plus importantes sont présentées ci-dessous.

  • Test de performance — vérifie si le temps de réponse du système est normal, conformément aux exigences, sous la charge réseau souhaitée.
  • Test de récupération — vérifie la capacité d'un système à se remettre de pannes et de défaillances matérielles.
  • Test de compatibilité — vérifie le comportement du système dans différents environnements.
  • Test de sécurité — vérifie la robustesse de l'application, en s'assurant que seuls les utilisateurs et les rôles autorisés peuvent accéder au système.
  • Tests d'utilisabilité — vérifie la facilité d'utilisation du système par les utilisateurs finaux et leur niveau de confort avec celui-ci.

Techniques de tests dynamiques

Une fois les types définis, la question suivante est de savoir comment un cycle de test dynamique est concrètement exécuté.

techniques de test dynamique dans le STLC Les tests dynamiques comprennent des tâches telles que l'analyse des exigences, la planification des tests, la conception et la mise en œuvre des cas de test, la configuration de l'environnement de test, l'exécution des cas de test, le signalement des anomalies et, enfin, la clôture des tests. Chaque tâche dépend de la réalisation de la précédente.

Dans le cadre du cycle de vie des tests logiciels (STLC), le processus de test dynamique proprement dit débute par la conception des cas de test. Le diagramme ci-dessous illustre la séquence des activités, décrites ci-après.

Flux de processus de test dynamique, de la conception des tests à leur exécution et au signalement des anomalies

Avant d'entamer le processus, la stratégie à suivre pour les tests dynamiques doit être définie.

Une stratégie de test doit principalement tenir compte des ressources disponibles et du calendrier. En fonction de ces deux facteurs, l'objectif, le périmètre, les phases ou cycles de test, le type d'environnement, les hypothèses ou difficultés potentielles et les risques doivent être documentés.

Une fois la stratégie définie et acceptée par la direction, le processus de conception des cas de test proprement dit peut commencer.

Conception et mise en œuvre des tests

Dans cette phase, l'équipe identifie les éléments suivants.

  • Fonctionnalités à tester
  • Conditions de test dérivées de ces fonctionnalités
  • Éléments de couverture découlant des conditions de test
  • cas de test dérivés des éléments de couverture

Boîte noire techniques de conception de tests comme le partitionnement par équivalence, l'analyse des valeurs limites, test de table de décision et test de transition d'état sont ce qui transforme une condition de test en un ensemble concret de cas exécutables.

Configuration de l'environnement de test

Le environnement de test L'environnement de test doit toujours être similaire à l'environnement de production. Durant cette phase, la configuration est installée et les machines de test sont gérées et configurées.

Test d'exécution

Durant cette phase, les cas de test sont effectivement exécutés, soit manuellement, soit par le biais de l'automatisationet les résultats réels sont comparés aux résultats attendus.

Rapport de bug capturé

Si, suite à l'exécution, les résultats attendus et les résultats obtenus diffèrent, le cas de test doit être marqué comme ayant échoué et un bogue doit être consigné. gestion des défauts processus.

Avantages des tests dynamiques

  • Les tests dynamiques révèlent des défauts considérés comme trop difficiles ou trop complexes à détecter, et que l'analyse statique ne peut absolument pas couvrir.
  • Le logiciel est exécuté de bout en bout, ce qui améliore la qualité du produit et du projet.
  • Les tests dynamiques constituent un moyen essentiel de détecter les menaces de sécurité dans un système en fonctionnement.
  • Les défauts survenant uniquement lors de l'exécution, tels que les fuites de mémoire, les problèmes de synchronisation et les échecs d'intégration, apparaissent ici et nulle part ailleurs.

Inconvénients des tests dynamiques

  • Les tests dynamiques sont chronophages, car l'exécution de l'application ou du code nécessite une grande quantité de ressources.
  • Cela augmente le coût du projet, car cela ne commence pas tôt dans le cycle de vie du logiciel et les problèmes corrigés ultérieurement coûtent plus cher à réparer.
  • Un environnement de production et des données de test réalistes sont des prérequis, et leur mise en place et leur maintenance nécessitent des efforts.

FAQ

Les développeurs sont responsables de la partie « boîte blanche », effectuant les tests unitaires et de composants. Les testeurs QA sont responsables de la partie « boîte noire », à partir des tests système. Les utilisateurs finaux clôturent le cycle avec les tests d'acceptation.

Les modèles analysent les exigences et les cas existants, puis proposent les valeurs limites, les entrées invalides et les séquences d'états qu'un humain ignore généralement. Un testeur confirme néanmoins chaque résultat attendu avant l'exécution.

Oui. La structure des assertions, les objets de page et la configuration des fixtures sont des tâches répétitives qu'un assistant gère efficacement. Déterminer ce qui constitue un comportement correct reste une affaire humaine, fondée sur les exigences.

Les cadres d'unités tels que JUnit, TestNG et pytest, ainsi que des exécuteurs d'interface utilisateur et d'API tels que Selenium, Cypress et Postman. Charger des outils tels que JMeter couvrir le côté non fonctionnel de l'automatisation.

Les tests en boîte blanche indiquent la couverture des instructions, des branches et des chemins d'exécution à partir d'exécutions instrumentées. Les tests en boîte noire indiquent la couverture des exigences et des conditions de test. À eux seuls, ces chiffres ne prouvent pas que la compilation est correctement testée.

Non. Les tests dynamiques décrivent l'exécution du code, quel que soit l'élément qui le pilote. Un script Manuel L'exécution d'une suite de tests de régression automatisée et une suite de tests de régression automatisée sont toutes deux des tests dynamiques.

Oui. Les tests de sécurité dynamique des applications analysent une application en cours d'exécution de l'extérieur, exactement comme une boîte noire. les tests de sécurité Il le fait, et signale les vulnérabilités qui n'apparaissent qu'à l'exécution.

C'est l'épine dorsale de l'un. Les suites d'unités et d'API contrôlent chaque commit, tandis que plus longtemps régression et des tests de performance sont exécutés chaque nuit sur une version déployée.

Résumez cet article avec :