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 :