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.

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


