В JMeter. Постпроцессор BeanShell

Я прошел через сценарии оболочки bean в jmeter, но я не нашел любой пример того, как это полезно в jmeter и каким образом.средство чтения значения выборки etc. Может ли кто-нибудь объяснить сценарии оболочки bean в Jmeter с примером.В сценарий BeanShell post/pre processor, где мы пишем сценарий. Я борюсь с этим, каково фактическое его использование .Пожалуйста объяснить вот этим .это было бы большой помощью для меня или других, а также для понимания использование его.

4 ответов


если вы посмотрите в раздел "скрипт" почтового процессора Beanshell, вы увидите следующее:

Script(variables: ctx, vars, props, prev, data, log)
  • ctx-означает JMeterContext, предоставляет доступ к контекстному API JMeter (Подробнее см. JavaDoc). Пример использования:

    int threadNum = ctx.getThreadNum(); // get current thread number 
    
  • vars-означает JMeterVariables. Используя vars вы можете получить/установить значения переменных.

    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
    
  • упорки-стойки для JMeter Свойства. В основном то же самое, что и переменные, но видимость переменных ограничена только текущей группой потоков, а свойства "глобальные"

  • prev-стенография к предыдущему SampleResult. Кажется, это именно то, что ты ищешь. Вы можете получить / установить время начала, Время окончания, время выполнения, задержку, URL, код ответа, ответное сообщение и т. д. См. JavaDoc для получения полной информации. Пример использования:

    String code = prev.getResponseCode(); 
    String message = prev.getResponseMessage();
    
  • сведения - массив байтов, содержащий данные ответа родительского сэмплера

    String samplerData = new String(data);
    System.out.println(samplerData);
    
  • log-может использоваться для печати чего-либо в jmeter.файл журнала

    log.info("This line has been written by Beanshell Post Processor");
    

посмотреть как использовать BeanShell: любимый встроенный компонент JMeter руководство для более подробной информации и реальных примеров.


Если вы хотите выполнять вычисления между запросами, Beanshell поможет вам достичь этого в jmeter. У нас есть Состоит Сэмплер, Beashell Pre Процессор и Почтовый Процессор Beanshell. Например, создайте группу потоков и добавьте образец beanshell, как показано на рисунке. В разделе скрипт введите

var a=1;
var b=2;
var c=a+b;
log.info("sum="+c);

и запустить с включенным Log viewer (меню опций> Log Viewer).

enter image description here

вы можете вызвать java методы jar (должны быть в jmeter_folder/lib/ext) с использованием сценария beanshell.

процессор Beashell Pre используется для выполнения вычислений и отправки значений вместе с запросом. Предположим, вы хотите зашифровать имя пользователя и пароль перед отправкой. Вы можете предоставить учетные данные, зашифровать его с помощью методов beanshell / java и установить его в качестве переменных в сценарии beanshell (vars.put("variablename",variablevalue)) . Вы можете добавить переменную в request as http://test.com?parameter=${variablename}.

Аналогично Beashell Для обработки ответа используются постпроцессоры. Предположим, вы хотите расшифровать значение из ответа, извлечь значение (с помощью экстрактора регулярных выражений) и расшифровать с помощью сценария beanshell.


например, я использую JMeter для создания клиента. Если ответное сообщение Created, установлен результат Pass; в противном случае задайте для результата значение Fail, сообщение об ошибке на Note:Creation failed. Шаги:

  1. соберите http-запрос с помощью TTP Request Sampler.
  2. добавить BSF Assertion Sampler под него.
  3. найти методы, которые мне нужно использовать из http://jmeter.apache.org/api/index.html. Так как мне нужно манипулировать Http Request Sampler, Я иду прямо в пакет org.apache.jmeter.protocol.http.sampler. Если вы знакомы с этими методами, пропустите этот шаг.

enter image description here

  1. закончите образец BSF. The prev стойки для предыдущего результата образца enter image description here

вы можете использовать BeanShell (или лучше: препроцессор JSR223/PostProcessor/Sampler) скриптовый движок для расчета параметров, необходимых для вашего теста. Я использую это для нескольких различных видов операций:

  • выбор случайного файла для загрузки из каталога
  • вычисление ключей hmac для авторизации загрузки / загрузки (необходимо для Swift)
  • Настройка переменных для конкретной среды (на основе параметр)

вот пример скрипта для выбора случайного файла и записи специфики файла в переменные, к которым вы можете получить доступ в следующих шагах:

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