web-dev-qa-db-fra.com

Utiliser la valeur de la demande dans la liste de valeurs dans JMeter

Je suis sûr que j'ai déjà fait cela dans le passé, mais je n'arrive pas à comprendre comment ;-) Alors, voici mon problème:

J'essaie de créer un plan de test JUnit dans lequel une requête HTTP est modifiée à chaque itération en modifiant un paramètre spécifique. Ainsi, par exemple, en cinq itérations, je souhaite que les requêtes HTTP suivantes soient effectuées:

http://localhost:8080/test/foo.html?id=1
http://localhost:8080/test/foo.html?id=2
http://localhost:8080/test/foo.html?id=3
http://localhost:8080/test/foo.html?id=4
...

Je souhaite configurer les valeurs d'identifiant globalement pour le plan de test et les utiliser dans l'échantillonneur de requêtes HTTP comme ceci:

Path: /test/foo.html?id=${categoryId}

La question maintenant: comment configurer les valeurs des identificateurs globalement (je fais pas je veux utiliser StringFromFile) et comment les référencer dans l'échantillonneur?

15
perdian

Vous pouvez le faire de plusieurs manières.

Étant donné que vous avez un tableau de valeurs, vous pouvez:

  • Essayez le pré-processeur "Paramètres utilisateur" , en créant une entrée pour chaque utilisateur/boucle
  • Utilisez un script Beanshell pour créer le tableau, sélectionnez-en un au hasard et remplissez votre variable

Vous les référencez exactement comme vous l'avez indiqué: ${varName}

16
BlackGaff

Concernant la mise en œuvre de ${__StringFromArrayAtRandomIndex('3', '2', '54', '42')}.

Supposons que vous puissiez facilement implémenter votre scénario en utilisant par exemple BeanShell Sampler / BeanShell PostProcessor avec un peu de code.

Par exemple.:

  • Définissez votre variable source (par exemple, variables définies par l'utilisateur ):

     Nom Valeur 
     Catégories 3,2,54,42,37 
    

    (c.-à-d. utilisez une virgule comme délimiteur, sans espaces avant et après la virgule).

  • Utilisez add BeanShell Sampler/PostProcessor avec le code suivant:

     import Java.util.Random; 
     
     Chaîne [] catégories = (vars.get ("catégories")). split (","); 
     
     int idx = new Random (). nextInt (categories.length); 
     Chaîne category = (categories [idx]); 
     
     vars.put (" catégorieId ", catégorie); 
    
  • Reportez-vous plus loin dans le script à la valeur de la liste de formulaires choisie au hasard en tant que ${categoryId}.
17
Aliaksandr Belik

Pour obtenir une valeur de variable aléatoire à partir d'une liste, commencez par déclarer comme variables utilisateur la liste ou les valeurs disponibles, avec un préfixe et un index incrémentiel:

country_1     Spain 
country_2     France  
country_3     Portugal  
country_4     Italy 
country_5     England

Ensuite, vous pouvez obtenir une valeur aléatoire à partir de la liste concaténant le préfixe avec un index aléatoire dans l'intervalle:

${__V(country_${__Random(1,6,)})}  --> "Spain", "France", "Portugal", etc...

Jetez un coup d'œil à cette réponse pour une explication complète.

7
AlexGuti

La solution la plus simple sans variables peut être réalisée à l'aide de vars.getIteration():

/test/foo.html?id=${__groovy(vars.getIteration())}
0
user7294900