В 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).
вы можете вызвать 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
. Шаги:
- соберите http-запрос с помощью
TTP Request Sampler
. - добавить
BSF Assertion Sampler
под него. - найти методы, которые мне нужно использовать из http://jmeter.apache.org/api/index.html. Так как мне нужно манипулировать
Http Request Sampler
, Я иду прямо в пакетorg.apache.jmeter.protocol.http.sampler
. Если вы знакомы с этими методами, пропустите этот шаг.
вы можете использовать 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);