Utilisation des Modèles pour la Testation de Charge d'APIs
Sommaire
intermédiaire - This article is part of a series.
Dans cette entrée, nous abordons le sujet de l’utilisation des templates (templates) dans le processus de dépannage pour les API. Ce blog est, à certains égards, une continuation de notre blog de notre précédent post où nous avons proposé les avantages d’alterer les scripts JMeter externement et dynamiquement. Bien que ce technique puisse être complexe, il est important de connaître cette technique et d’en incorporer le savoir dans votre outil.
Exemple #
Comme nous le savons, les essais de charge d’API nécessitent généralement la soumission d’un bloc de données en format JSON. (Note : ce bloc de données est connu dans l’anglais comme payload.) Ce bloc comprend des paires de noms/valeurs comme ceci :
{
"Paciente":{
"Identificación": "123456789",
"Médico": "Dr. MataSanos",
"Hospital": "LaBuenaMuerte"
}
}
Dans notre exemple, le but de la vérification est d’élaborer des patients dans une certaine application. Pour cela, nous incluons un élément Demande HTTP où nous ajoutons le payload dans la zone Données du corps de l’ordre:
Le graphique montre comment la variable Identification est assignée un nombre aléatoire à partir de la variable __UUID. Nous définissons également les variables Doctor et Hospital, dont les valeurs seront lues via le élément [CSV Data Set Config]. C’est le processus standard.
Le Problème #
Le problème se produit lorsque les composants de l’API changent, ce qui nous oblige à modifier le script (en utilisant la fenêtre graphique) pour modifier la structure JSON. Ce problème est encore plus complexe lorsque cette structure est utilisée par plusieurs scripts.
{
"Paciente":{
"Identificación": "LT${__substring(${__UUID()}, 0, 8)}",
"Médico": "${__eval(${MD_NAME})}",
"Hospital": "${__eval(${HOSPITAL_NAME})}"
}
}
Il est important de noter que ce modèle contient uniquement les références aux valeurs des variables. Les données (médecine et hôpital) actuellement existent dans le fichier CSV (comme nous l’avons mentionné précédemment). Notez que nous utilisons la fonction JMeter __eval pour forcer l’évaluation des variables à la fois pendant les exécutions.
Nous avons implémenté cette technique en trois étapes :
Étape 1 : #
En utilisant l’élément de configuration Variables définies par l’utilisateur, nous créons/assignons une variable contenant la localisation où se trouve le fichier de modèle.
Étape 2 : #
Utilisant l’élément Paramètres de Pré-Processus Utilisateur, nous créons/assignons un paramètre (PATIENT_JSON) qui prend la valeur du modèle pendant l’exécution, de cette manière :
CASE_JSON={
"Paciente":{
"Identificación": "LT${__substring(${__UUID()}, 0, 8)}",
"Médico": "${__eval(${MD_NAME})}",
"Hospital": "${__eval(${HOSPITAL_NAME})}"
}
}
Étape 3 : #
Enfin, dans ce pas, nous ajoutons une expression à la Données du corps de la requête de la demande HTTP, qui attribuera des valeurs dynamiques aux variables MD_NAME et HOSPITAL_NAME au moment de l’exécution. Ces valeurs sont extraites des fichiers CSV correspondants.
Concluison #
Utiliser des modèles dans un script offre une flexibilité et une productivité qui entraînent une augmentation significative de l’efficacité des tests de scripts.