web-dev-qa-db-fra.com

Jmeter. BeanShell PostProcessor

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.

19
zeus.atr

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.

42
Dmitri T

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).

enter image description here

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.

4
Nidheesh

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:

  1. Assemblez la demande http à l'aide de TTP Request Sampler.
  2. Ajouter un BSF Assertion Sampler dessous.
  3. Trouvez les méthodes que je dois utiliser depuis http://jmeter.Apache.org/api/index.html . Puisque je dois manipuler le Http Request Sampler, Je vais directement au package org.Apache.jmeter.protocol.http.sampler. Si vous connaissez ces méthodes, ignorez cette étape.

enter image description here

  1. Terminez l'échantillonneur BSF. prev représente le résultat de l'échantillon précédent enter image description here
1
wenwen

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:

  • Sélection d'un fichier aléatoire à télécharger depuis un répertoire
  • Calcul des clés hmac pour l'autorisation de téléchargement/téléchargement (nécessaire pour Swift)
  • Définition de variables pour un environnement spécifique (basé sur un paramètre)

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);
0
Sven