Comment utiliser les paramètres de requête URL

Ajouter des paramètres de requête à une requête

Vous pouvez ajouter des paramètres de requête à votre requête soit dans l'URL, soit dans le champ Paramètres de requête.

https://www.example.com?query1=value1&query2=value2
https://www.example.com?query1=value1&query2=value2#hash1
https://api.example.com/v2/resources/1?query1=value1&query2=value2

Les deux méthodes sont valides. Si vous ajoutez des paramètres de requête dans l'URL et également dans les champs Paramètres de requête, ils seront concaténés et tous les paramètres de requête seront utilisés.

Pourquoi les paramètres de requête comptent dans un test de charge

Les paramètres de requête font partie de l'URL de la requête, donc le serveur (et tout ce qui se trouve devant lui, comme un CDN, un reverse proxy ou un WAF) les considère comme faisant partie de ce qui lui est demandé. Cela compte de deux façons pendant un test de charge :

  • Routage et filtrage : de nombreuses API utilisent des paramètres de requête pour sélectionner une ressource, une page ou un filtre (?page=2, ?status=active, ?locale=en). Si votre test ne sollicite qu'une seule combinaison de paramètres, vous ne testez qu'un seul chemin de code. Un point de terminaison de recherche rapide pour ?q=shoes peut se comporter très différemment pour ?q= (vide) ou pour une requête avec de nombreux filtres appliqués à la fois.
  • Mise en cache : un CDN ou un reverse proxy traite généralement l'URL complète, y compris sa chaîne de requête, comme clé de cache. Ajouter un paramètre de requête qui change à chaque requête (un horodatage anti-cache, un identifiant aléatoire) peut transformer accidentellement un point de terminaison cachable en un point de terminaison qui manque le cache à chaque utilisateur virtuel. Cela ressemblera à un backend beaucoup plus lent et beaucoup plus sollicité que ce que produirait jamais le trafic de production, alors que la cause réelle est la chaîne de requête elle-même.

Paramètres statiques et valeurs par requête

Les paramètres que vous saisissez dans une requête de test sont statiques : chaque utilisateur virtuel envoie exactement la même chaîne de requête à chaque itération. Cela convient à la plupart des tests conceptuels (vérifier qu'un point de terminaison se comporte correctement et reste rapide sous charge), mais gardez deux choses à l'esprit :

  • Vous ne pouvez pas rendre un paramètre de requête "global" pour qu'il s'applique automatiquement à toutes les requêtes du test, par exemple une clé API passée en ?api_key=.... Elle doit être ajoutée individuellement à chaque URL de requête (ou champ Paramètres de requête), partout où elle est nécessaire.
  • Si le point de terminaison que vous testez attend une valeur différente à chaque appel, un curseur de pagination, un identifiant de commande unique, un jeton à usage unique, une chaîne de requête fixe ne sollicitera que cette valeur unique, répétée. Le trafic réel touche de nombreuses valeurs différentes, donc des résultats basés sur une seule valeur statique ne vous renseignent que sur ce cas précis, pas sur l'ensemble du comportement en production.

Pièges courants

  • Oublier l'encodage URL : les espaces, &, = et les autres caractères réservés à l'intérieur d'une valeur doivent être encodés en pourcentage, sinon la chaîne est analysée comme des paramètres supplémentaires au lieu d'une seule valeur.
  • Confondre le fragment avec un paramètre : tout ce qui suit # (comme #hash1 dans l'exemple ci-dessus) est un fragment d'URL, pas un paramètre de requête. Les navigateurs conservent les fragments côté client et ne les envoient jamais au serveur, ils n'ont donc aucun effet sur le test de charge côté serveur.
  • Dupliquer un paramètre aux deux endroits : puisque les valeurs de l'URL et du champ Paramètres de requête sont concaténées, ajouter la même clé aux deux endroits l'envoie deux fois, ce qui peut déclencher un comportement différent, et non voulu, sur les serveurs qui n'attendent qu'une seule valeur par clé.

Pour des conseils connexes, voir https://loadfocus.com/docs/fr-fr/knowledge-base/using-valid-url-endpoints et https://loadfocus.com/docs/fr-fr/guides/load-testing/how-to-url-query-parameters.