2017-09-27 1 views
0

J'ai un groupe de threads avec sampler unique. J'ai un scénario avec 10 utilisateurs à exécuter pour une durée d'une heure. L'arbre des résultats montre des données de réponse différentes dans les données de réponse de chaque échantillonneur. Il est possible de compter combien de fois les échantillonneurs obtiennent les mêmes données de réponse.lire le nombre de messages de réponse identiques dans le groupe de threads

  {"success":false,"code":"104","message":"xx","status":412,"MessageType":"120","ResponseCode":"100","rilreplyDetails":"121"} 

{ "succès": false, "code": "104", "message": "yyy", "état": 412, "MessageType": "120", "ResponseCode": "100 "," rilreplyDetails ":" 121 "}

Puis-je avoir un compte du nombre d'échantillonneurs qui obtiennent une réponse" xx "et combien de" yyy "?

Répondre

0

Une solution serait de définir deux variables dans la section plan de test, i.e.: counter_xx et counter_yyy.

enter image description here

Ensuite, sur la demande de sampler ajouter un extracteur d'expression régulière pour extraire la valeur de message et enfin utiliser Si le contrôleur pour spécifier quel compteur à incrémenter.

L'image ci-dessous montre la structure de la solution ci-dessus.

enter image description here

Enfin, vous seriez en mesure d'accéder aux valeurs variables en utilisant $ {} ou counter_xx $ {} counter_yyy.

0

Le plus simple serait faire cela en dehors de JMeter, soit le configurer pour enregistrer les données de réponse en ajoutant les 2 lignes suivantes à user.properties fichier:

jmeter.save.saveservice.output_format=xml 
jmeter.save.saveservice.response_data=true 

restart JMeter sera nécessaire pour choisir la propriétés en hausse. Une fois votre test terminé, inspectez le fichier résultant .jtl en utilisant votre éditeur XML favori. Pour plus d'informations sur l'approche, voir Configuring JMeter


Une autre option utilise JSR223 Listener et le script comme:

import org.apache.jmeter.engine.util.CompoundVariable 
import org.apache.jmeter.functions.IterationCounter 

def xxcounter = props.get("xxcounter") 
if (xxcounter == null) { 
    xxcounter = new IterationCounter(); 
    List<CompoundVariable> params = new ArrayList<>(); 
    params.add(new CompoundVariable("false")); 
    xxcounter.setParameters(params); 
} 
def yycounter = props.get('yycounter') 
if (yycounter == null) { 
    yycounter = new IterationCounter(); 
    List<CompoundVariable> params = new ArrayList<>(); 
    params.add(new CompoundVariable("false")); 
    yycounter.setParameters(params); 
} 

if (prev.getResponseDataAsString().contains('xx')) { 
    log.info('XX count: ' + xxcounter.execute(prev, sampler)) 
    props.put('xxcounter', xxcounter) 
} 
if (prev.getResponseDataAsString().contains('yyy')) { 
    log.info('YYY count: ' + yycounter.execute(prev, sampler)) 
    props.put('yycounter', yycounter) 
} 

L'auditeur analysera les données de réponse de l'échantillonneur en cours et incrémenter ceci ou que le compteur d'impression la valeur actuelle à jmeter.log fichier .

Démo:

JMeter Increment Counter Conditionally

Plus d'informations sur les scripts Groovy JMeter: Apache Groovy - Why and How You Should Use It