Configurez des scénarios dynamiques avec le système de macros

Pour pousser plus loin les possibilités offertes par nos sondes de Web scénarios, vous avez la possibilité d'utiliser le système de macros.

Il vous permettra notamment :

- D'utiliser la réponse de l'étape précédente pour déterminer à la volée l'URL, les post data ou d'autres champs d'une étape

- De sauvegarder des informations dans des variables que vous pourrez réutiliser tout au long du scénario.

- De vous authentifier plus facilement sur votre API en injectant les valeurs de certains cookies dans les headers de l'étape

Pour pouvoir utiliser les macros, il faut activer le système de macro dans la configuration avancée d'une étape.

 

Les macros peuvent être utilisées dans les champs suivants:

  • La valeur des headers HTTP custom
  • L'URL de l'étape
  • Les post data de l'étape
  • Des variables (voir plus bas)

Avertissements :

  • attention en ce qui concerne l'utilisation dans l'URL, l'URL finale doit pointer vers un FQDN autorisé par le site, sinon le scénario passera en erreur.
  • cette fonctionnalité étant avancée, elle est désactivée par défaut et doit faire l'objet d'une demande d'activation auprès du support Quanta.
     

Différentes macros sont à votre disposition :

\header{name}

Cette macro est remplacée par la valeur du header "name" dans la dernière réponse du serveur. Par exemple si vous renseignez "yourserveris=\header{Server}" dans les post data de votre step, les post data pourront devenir par exemple "yourserveris=nginx" lors de l'execution de l'étape.

\cookie{name}

Cette macro est remplacée par la valeur du cookie "name" récupéré au cours de l'exécution du scénario. Par exemple si vous renseignez dans la configuration de l'étape un header "X-API-Auth" avec pour valeur "Bearer \cookie{apitoken}", notre sonde enverra le header "X-API-Auth: Bearer valeurducookieapitoken" lors de l'éxécution de l'étape.

\allcookies{}

Cette macro renvoie tout les cookies récupérés jusque là durant le passage du scénario, formattés comme attendu par le header "Cookie".

L'intérêt est de permettre d'ajouter un cookie dynamiquement en récrivant le header Cookie sans écraser les cookies existants (par exemple en spécifiant un header cookie avec la valeur "\allcookies{}; newcookie=value"

\elementurl{selector}

Cette macro permet de récupérer l'URL pointée par un élément de la page renvoyée sur l'étape précédente. Le paramètre selector est un selecteur CSS, par exemple si vous cherchez un élément de type "form" ayant l'id "login-form" et étant présent dans un conteneur ayant la class "container" vous pouvez utiliser la macro \elementurl{.container > form#login-form}

L'url récupérée correspond à l'attribut "action" sur les éléments de type "form" et à l'attribut "href" sur les éléments de type "a". Ce sont les 2 seuls éléments supportés par cette macro.

\randomelementurl{selector|min|max}

Comme \elementurl mais choisis aléatoirement un élément dans tout ceux qui correspondent au selecteur CSS (parmi les éléments compris entre min et max si ils sont spécifiés).

\elementattr{selector|attribute}

Cette macro permet de récupérer un attribut d'un élément dans la page renvoyée à l'étape précédente.

Le premier paramètre selector est un selecteur CSS, comme pour elementurl.

Le 2eme paramètre attribute est le nom de l'attribut à récupérer, par exemple pour récupérer l'attribut "src" d'un élément ayant l'ID weird-link-i-cannot-guess, on peut utiliser la macro \elementattr{#weird-link-i-cannot-guess|src}

\randomelementattr{selector|attribute|min|max}

Comme \elementattr mais choisis aléatoirement un élément dans tout ceux qui correspondent au selecteur CSS (parmi les éléments compris entre min et max si ils sont spécifiés).

\elementtext{selector}

Cette macro permet de récupérer le texte contenu dans un élément de la page renvoyée à l'étape précédente.

Le premier paramètre selector est un selecteur CSS, comme pour elementurl.

Le texte est systématiquement strippé, c'est à dire que les espaces sont enlevés au début et à la fin du texte. La macro échoue si le texte est vide.

\randomelementtext{selector|min|max}

Comme \elementtext mais choisis aléatoirement un élément dans tout ceux qui correspondent au selecteur CSS (parmi les éléments compris entre min et max si ils sont spécifiés).

\json{selector}

Cette macro permet de récupérer la valeur spécifiée par le paramètre "selector" dans le contenu JSON renvoyée lors de l'étape précédente. Le selecteur consiste en une suite de clefs séparées par le caractère ">" qui permettent de parcourir l'objet JSON renvoyée.

Par exemple, si la dernière réponse du serveur est:

{"some": {"thing": 42, "json": {"with_array": ["containing", "stuff"]}}}

et que vous renseignez la macro \json{some > json > with_array > 0}, elle sera remplacée par "containing".

Et si vous spécifiez la macro \json{some > thing}, elle sera remplacée par "42".

\random{min|max}

Cette macro permet de générer un nombre aléatoire compris entre les paramètre "min" et "max"

\padrandom{min|max|length}

Comme random mais ça mets des 0 devant la valeur généré de manière à ce qu'elle mesure "length" caractères.

 \randomstr{length}

Cette macro permet de générer une chaîne de caractère aléatoire de la longueur du paramètre "length"

\counter{min|max|id}

Cette macro implémente un compteur atomique, local au scénario (donc si on le réutilise entre différentes step, il sera incrémenté a chaque appel de la macro). Le paramètre optionnel id permet de définir plusieurs compteurs sur le même scénario (limité à 42 compteurs par scénario).

C'est utile par exemple pour des tests de charge, pour garantir l'unicité d'une valeur entre les différents injecteurs et les différents passages du scénario.

\padcounter{min|max|length|id}

Comme counter mais ça mets des 0 devant la valeur de telle sorte qu'elle mesure "length" caractères.

\variable{name|fallback}

Cette macro permet de récupérer la valeur de la variable nommée "name" (fallback est un paramètre optionnel qui permet de spécifier une valeur de remplacement dans le cas ou la variable n'existerait pas).
 

A propos des variables

Lorsque vous activez les macros sur une étape, vous avez alors la possibilité d'ajouter des variables (un nom et une valeur a chaque fois). Ces variables seront disponibles tout au long du scénario via la macro \variable.

Evidemment, vous pouvez mettre n'importe quoi dans la valeur, y compris (et surtout) des macros.

Petite différence par rapport au concept général dans l'utilisation : pour tous les autres champs, les macros s'appliquent avant le passage de la step (donc sur la réponse de la step précédente), les variables sont sauvegardées après le passage d'une step donc les macros présentes dans les valeurs sont remplacées avec les éléments récupérés dans la réponse de l'étape en cours (et pas de l'étape d'avant).

Normalement il y a rarement besoin d'utiliser les variables, mais elle peuvent se trouver particulièrement utiles dans le cadre des tests de montée en charge, ou pour gérer des authentifications complexes, par exemple pour récupérer un token via un appel API et le réinjecter dans tous les appels suivants.

N'hésitez pas à faire appel à notre support technique (bouton "?" en bas à droite) en cas de question.

Cet article vous a-t-il été utile ?
Utilisateurs qui ont trouvé cela utile : 0 sur 0
Vous avez d’autres questions ? Envoyer une demande

0 Commentaires

Cet article n'accepte pas de commentaires.