J'ai parcouru le script de shell Bean dans jmeter mais je n'ai trouvé aucun exemple de cela, comment il est utile dans jmeter et de quelle manière. Signifie lire les valeurs de l'échantillonneur, etc. Peut-on expliquer le script de shell bean dans Jmeter avec un exemple. script postprocesseur beanshell où nous écrivons le script. Je me bats avec ce qui est l'utilisation réelle de celui-ci. Veuillez expliquer avec cela. Ce serait une grande aide pour moi ou pour les autres ainsi que pour comprendre l'utilisation de celui-ci.
Si vous regardez dans la section "Script" de Beanshell Post Processor, vous verrez ce qui suit:
Script(variables: ctx, vars, props, prev, data, log)
ctx - signifie JMeterContext , donne accès à l'API JMeter Context (voir JavaDoc pour plus de détails). Exemple d'utilisation:
int threadNum = ctx.getThreadNum(); // get current thread number
vars - signifie JMeterVariables . En utilisant vars
, vous pouvez obtenir/définir des valeurs de variable.
String myvar = vars.get("myvar"); // get ${myvar} variable value and store it to myvar string
myvar = myvar + "something"; // append "something" to myvar
vars.put("myvar", myvar); // put new value into ${myvar} variable
accessoires - signifie JMeter Properties. Fondamentalement les mêmes que les variables, mais la visibilité des variables est limitée au groupe de threads actuel uniquement et les propriétés sont "globales"
prev - raccourci vers précédent SampleResult . Semble être exactement ce que vous recherchez. Vous pouvez obtenir/définir l'heure de début, l'heure de fin, l'heure d'exécution, la latence, l'URL, le code de réponse, le message de réponse, etc. Voir JavaDoc pour des informations complètes. Exemple d'utilisation:
String code = prev.getResponseCode();
String message = prev.getResponseMessage();
data - tableau d'octets contenant les données de réponse de l'échantillonneur parent
String samplerData = new String(data);
System.out.println(samplerData);
log - peut être utilisé pour imprimer quelque chose dans le fichier jmeter.log
log.info("This line has been written by Beanshell Post Processor");
Voir Comment utiliser BeanShell: le composant intégré préféré de JMeter guide pour plus de détails et des exemples concrets.
Si vous souhaitez effectuer des calculs entre les requêtes, Beanshell vous aidera à le réaliser dans jmeter. Nous avons Beanshell Sampler , Beashell Pre Processor et Beanshell Post Processor . Pour un exemple, créez un groupe de threads et ajoutez un échantillonneur de fèves comme dans la figure. Sous le script, entrez
var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);
et exécutez avec la visionneuse de journaux activée (menu Options> Visionneuse de journaux).
Vous pouvez appeler Java d'un jar (devrait être dans jmeter_folder/lib/ext) en utilisant le script beanshell.
Le pré-processeur Beashell est utilisé pour effectuer des calculs et envoyer les valeurs avec la demande. Supposons que vous vouliez crypter le nom d'utilisateur et le mot de passe avant de les envoyer. Vous pouvez fournir des informations d'identification, les chiffrer à l'aide de méthodes beanshell/Java et les définir en tant que variables dans le script beanshell (vars.put("variablename",variablevalue)
). Vous pouvez ajouter la variable à demander en tant que http://test.com?parameter=${variablename}
.
De même, les postprocesseurs Beashell sont utilisés pour traiter la réponse. Supposons que vous souhaitiez décrypter une valeur de la réponse, extraire la valeur (à l'aide de l'extracteur d'expressions régulières) et décrypter à l'aide du script beanshell.
Par exemple, j'utilise JMeter pour créer un client. Si le message de réponse est Created
, définissez result sur Pass
; Sinon, définissez le résultat sur Fail
, message d'échec sur Note:Creation failed
. Les étapes sont les suivantes:
TTP Request Sampler
.BSF Assertion Sampler
dessous.Http Request Sampler
, Je vais directement au package org.Apache.jmeter.protocol.http.sampler
. Si vous connaissez ces méthodes, ignorez cette étape.Vous pouvez utiliser le moteur de script BeanShell (ou mieux: le JSR223 PreProcessor/PostProcessor/Sampler) pour calculer les paramètres dont vous avez besoin pour votre test. Je l'utilise pour plusieurs types d'opérations:
Voici un exemple de script pour sélectionner un fichier aléatoire et écrire les spécificités du fichier dans des variables, auxquelles vous pouvez accéder dans les étapes suivantes:
File folder = new File(vars.get("image_path"));
File[] imageFiles = folder.listFiles(new FileFilter() {
public boolean accept(File pathname) {
return !pathname.isHidden();
}
});
Random rnd = new Random();
File selected = imageFiles[rnd.nextInt(imageFiles.length)];
String file = selected.getAbsolutePath();
String extension = file.substring(file.lastIndexOf('.')+1);
String mimetype = URLConnection.guessContentTypeFromName(file);
vars.put("CURRENT_FILE", file);
vars.put("FILE_EXT", extension.toUpperCase());
vars.put("MIME_TYPE", mimetype);