Size: a a a

QA — Load & Performance

2021 March 01

D

Dmitry in QA — Load & Performance
точно, по старой привычке
источник

VG

Viktor Ganeles in QA — Load & Performance
Ещё мне рассказывали, что в груви при сравнении строк лучше использовать одинарные кавычки, но я уже забыл почему. Можно поиском в этом чате поискать
источник

VG

Viktor Ganeles in QA — Load & Performance
Вячеслав Смирнов
Для Groovy и строк в двойных кавычках также надо знать особенность. Для двойных кавычек используется интерполяция строк. Такая строка - сложный динамический объект.

https://groovy-lang.org/syntax.html

Groovy код вида
a=123;
system.out.println("${a}");
выдаст 123

А код с одинарными кавычками
a=123;
system.out.println('${a}');
выдаст
${a}

А что будет если в JMeter, где уже есть своя интерполяция, применить вызов ${__groovy(...)}, а внутри применить двойные кавычки, где может быть еще и встретится ${...} не знаю пока.

Вот Виктор попробовал у него
"NONE" == "NONE" выдает false иногда
возможно так и надо для Groovy, не сработала дедупликация строк и строки стали разными объектами, и тогда фиксом будет
'NONE' == 'NONE'
может быть

Общий совет - стараться не использовать в Groovy "...", а стараться использовать '...', это не просто char, это строки. Так
1) производительнее для JVM
2) надежнее для JMeter
И если явно нужна интерполяция, тогда да использовать "..."
Вот тут
источник

AA

Artem Astaxov in QA — Load & Performance
Alexander
Понял, спасибо, насчет заглушки думал, но надеялся обойтись штатными средствами
wiremock легче легкого, даже ничего делать не надо кроме двух файликов и параметров запуска что бы логировал
источник

AA

Artem Astaxov in QA — Load & Performance
примерчик вроде где то есть на домашнем, могу глянуть
источник

A

Alexander in QA — Load & Performance
Artem Astaxov
примерчик вроде где то есть на домашнем, могу глянуть
Глянь пожалуйста
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Сергей
Всем привет!)
Хотел начать пользоваться sjk профайлором aragozin/jvm-tools.

Проблема: При использовании команды stcap (аналог jstack), генерится output файл с типом data, который я не могу прочитать :(
https://github.com/polarnik/Apache.JMeter.Benchmark.NG/blob/master/src/test/tools/sjk.for.jmeter.sh

Посмотрите пример обработки.
В каталоге с файлом есть и другие примеры

Можете оставить почти все также. Но удалив фильтры по имени потоков
--thread-name "Thread Group.*" \

Бинарный файл результатов sjk превращается в txt, html, svg. При этом накладываются фильтры.
Все это командой ssa (analise) и flame. Часто повторяющиеся фильтры удобно сделать один раз и сохранить результат в файл, это команда stcpy.
источник

AA

Artem Astaxov in QA — Load & Performance
Alexander
Глянь пожалуйста
источник

AA

Artem Astaxov in QA — Load & Performance
Alexander вот накидал быстренько, на домашнем нет soupui, но вот к примеру запрос из браузера просто


2021-03-01 22:34:53.429 Request received:
0:0:0:0:0:0:0:1 - GET /

Accept: [text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9]
Connection: [keep-alive]
User-Agent: [Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36]
Sec-Fetch-Site: [none]
Sec-Fetch-Dest: [document]
Host: [localhost:8080]
Accept-Encoding: [gzip, deflate, br]
Sec-Fetch-Mode: [navigate]
sec-ch-ua: ["Chromium";v="88", "Google Chrome";v="88", ";Not A Brand";v="99"]
sec-ch-ua-mobile: [?0]
Cache-Control: [max-age=0]
Upgrade-Insecure-Requests: [1]
Sec-Fetch-User: [?1]
Accept-Language: [ru-RU,ru;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6]



Matched response definition:
{
 "status" : 200,
 "body" : "More content\n"
}

Response:
HTTP/1.1 200
Matched-Stub-Id: [53f1f429-a8d3-475c-985b-5e627d11c2b0]
источник

A

Alexander in QA — Load & Performance
Artem Astaxov
Alexander вот накидал быстренько, на домашнем нет soupui, но вот к примеру запрос из браузера просто


2021-03-01 22:34:53.429 Request received:
0:0:0:0:0:0:0:1 - GET /

Accept: [text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9]
Connection: [keep-alive]
User-Agent: [Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.190 Safari/537.36]
Sec-Fetch-Site: [none]
Sec-Fetch-Dest: [document]
Host: [localhost:8080]
Accept-Encoding: [gzip, deflate, br]
Sec-Fetch-Mode: [navigate]
sec-ch-ua: ["Chromium";v="88", "Google Chrome";v="88", ";Not A Brand";v="99"]
sec-ch-ua-mobile: [?0]
Cache-Control: [max-age=0]
Upgrade-Insecure-Requests: [1]
Sec-Fetch-User: [?1]
Accept-Language: [ru-RU,ru;q=0.9,en-GB;q=0.8,en;q=0.7,en-US;q=0.6]



Matched response definition:
{
 "status" : 200,
 "body" : "More content\n"
}

Response:
HTTP/1.1 200
Matched-Stub-Id: [53f1f429-a8d3-475c-985b-5e627d11c2b0]
Спасибо огромное
источник

AA

Artem Astaxov in QA — Load & Performance
да и так для заглушек мне нравится дока у них имхо не идеальная но в целом нормальная http://wiremock.org/docs/running-standalone/
источник

AA

Artem Astaxov in QA — Load & Performance
да нз
источник

AA

Artem Astaxov in QA — Load & Performance
пробуй, отпишись потом)
источник
2021 March 02

С

Сергей in QA — Load & Performance
Вячеслав Смирнов
https://github.com/polarnik/Apache.JMeter.Benchmark.NG/blob/master/src/test/tools/sjk.for.jmeter.sh

Посмотрите пример обработки.
В каталоге с файлом есть и другие примеры

Можете оставить почти все также. Но удалив фильтры по имени потоков
--thread-name "Thread Group.*" \

Бинарный файл результатов sjk превращается в txt, html, svg. При этом накладываются фильтры.
Все это командой ssa (analise) и flame. Часто повторяющиеся фильтры удобно сделать один раз и сохранить результат в файл, это команда stcpy.
спасибо 🙏🏻
источник

VS

Vlad Shabalov in QA — Load & Performance
Коллеги, добрый день! Скажите, пожалуйста, вопрос задавал когда-то уже, но есть дополнительный. Если я, к примеру, хочу считать в память все строки из .csv, т.е я использую что-то в таком виде:                        List<String> records = new ArrayList<String>();
records.put(vars.get("issue_key")
vars.get("issue_key")
try (BufferedReader br = new BufferedReader(new FileReader("202102251137.csv"))) {
   String issue_key;
   while ((issue_key = br.readLine()) != null) {
       records.add(issue_key);
   }
   vars.put("issue_key", records.toString()); }
, то нормально ли прописывать это в JSR223 Sampler, а вот уже сам рандом в BeanShell Preprocessor              import java.util.Random;
var issue_key;
Random random = new Random();
vars.put("issue_key", vars.get("issue_key" + random.nextInt(Integer.parseInt(vars.get("issue_key")))));  Вопрос все тот же, никак не получается прям вытащить рандомное количество строк из .csv. У меня есть тесты по последовательному чтению файла и рандомному, но там рандом одной строки, а мне нужно, к примеру, рандом 10, 54, 87 строк с последующей подстановкой в тело POST-запроса в виде простого списка. В нагрузке совсем недавно, не судите строго.
источник

ΙΤ

Ιωάννης Τσεκούρι... in QA — Load & Performance
Vlad Shabalov
Коллеги, добрый день! Скажите, пожалуйста, вопрос задавал когда-то уже, но есть дополнительный. Если я, к примеру, хочу считать в память все строки из .csv, т.е я использую что-то в таком виде:                        List<String> records = new ArrayList<String>();
records.put(vars.get("issue_key")
vars.get("issue_key")
try (BufferedReader br = new BufferedReader(new FileReader("202102251137.csv"))) {
   String issue_key;
   while ((issue_key = br.readLine()) != null) {
       records.add(issue_key);
   }
   vars.put("issue_key", records.toString()); }
, то нормально ли прописывать это в JSR223 Sampler, а вот уже сам рандом в BeanShell Preprocessor              import java.util.Random;
var issue_key;
Random random = new Random();
vars.put("issue_key", vars.get("issue_key" + random.nextInt(Integer.parseInt(vars.get("issue_key")))));  Вопрос все тот же, никак не получается прям вытащить рандомное количество строк из .csv. У меня есть тесты по последовательному чтению файла и рандомному, но там рандом одной строки, а мне нужно, к примеру, рандом 10, 54, 87 строк с последующей подстановкой в тело POST-запроса в виде простого списка. В нагрузке совсем недавно, не судите строго.
код можете в разметку взять ? глаза вытекли пока прочитал
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Vlad Shabalov
Коллеги, добрый день! Скажите, пожалуйста, вопрос задавал когда-то уже, но есть дополнительный. Если я, к примеру, хочу считать в память все строки из .csv, т.е я использую что-то в таком виде:                        List<String> records = new ArrayList<String>();
records.put(vars.get("issue_key")
vars.get("issue_key")
try (BufferedReader br = new BufferedReader(new FileReader("202102251137.csv"))) {
   String issue_key;
   while ((issue_key = br.readLine()) != null) {
       records.add(issue_key);
   }
   vars.put("issue_key", records.toString()); }
, то нормально ли прописывать это в JSR223 Sampler, а вот уже сам рандом в BeanShell Preprocessor              import java.util.Random;
var issue_key;
Random random = new Random();
vars.put("issue_key", vars.get("issue_key" + random.nextInt(Integer.parseInt(vars.get("issue_key")))));  Вопрос все тот же, никак не получается прям вытащить рандомное количество строк из .csv. У меня есть тесты по последовательному чтению файла и рандомному, но там рандом одной строки, а мне нужно, к примеру, рандом 10, 54, 87 строк с последующей подстановкой в тело POST-запроса в виде простого списка. В нагрузке совсем недавно, не судите строго.
1) Можно переписать на nio, проще и быстрее, легче с ресурсами.
2) я бы использовал какой-нибудь потокобезопасный лист.
3) я бы не писал в семплере такое, вынес бы в инит, а в семплере, например забирал из листа рандомное значение(как вы описали), либо в препроцессоре/постпроцессоре(зависит от логики)...
4) беншел - говно, жср - тоже самое но лучше))
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Имхо 😅
источник

AK

Alexey Kübler-Ross in QA — Load & Performance
Название файла стоит вынести в переменную - при поддержке будет легче
источник

VS

Vlad Shabalov in QA — Load & Performance
Alexey Kübler-Ross
1) Можно переписать на nio, проще и быстрее, легче с ресурсами.
2) я бы использовал какой-нибудь потокобезопасный лист.
3) я бы не писал в семплере такое, вынес бы в инит, а в семплере, например забирал из листа рандомное значение(как вы описали), либо в препроцессоре/постпроцессоре(зависит от логики)...
4) беншел - говно, жср - тоже самое но лучше))
А инит - это?
источник