Size: a a a

QA — Load & Performance

2020 July 23

jj

jagga jagga in QA — Load & Performance
Alex Grishutin
токсик ты
да я токсичен, мне 14, но судя по последним вопросам в чате - я старше их всех)
источник

AG

Alex Grishutin in QA — Load & Performance
😂
источник

AL

Alexander Lebedev in QA — Load & Performance
jagga jagga
да я токсичен, мне 14, но судя по последним вопросам в чате - я старше их всех)
вопросы не показатель ума или возраста, а только лени или не желания самостоятельно изучить вопрос, ну или не умение составлять поисковый запрос
источник

KY

Kirill Yurkov in QA — Load & Performance
Alexander Lebedev
вопросы не показатель ума или возраста, а только лени или не желания самостоятельно изучить вопрос, ну или не умение составлять поисковый запрос
или не знание в какой сфере его искать
источник

KY

Kirill Yurkov in QA — Load & Performance
чатик в целом существует для развития НТ и просвещения народа хорошими практиками, сам закреп побуждает сюда кидать запросы а не в гугл ходить. тем более что тут качество информации выше гугловой
источник

c

cdc7600 in QA — Load & Performance
jagga jagga
да я токсичен, мне 14, но судя по последним вопросам в чате - я старше их всех)
😀 старше всех вопросов?
источник

c

cdc7600 in QA — Load & Performance
Kirill Yurkov
чатик в целом существует для развития НТ и просвещения народа хорошими практиками, сам закреп побуждает сюда кидать запросы а не в гугл ходить. тем более что тут качество информации выше гугловой
Спасибо, очень полезный чат
источник

jj

jagga jagga in QA — Load & Performance
cdc7600
😀 старше всех вопросов?
однозначно старше последних вопросов xD
источник

v

vasiliy in QA — Load & Performance
Всем привет. А можно бесполезный флуд остановить? Отношения в личке выясняйте
источник

AL

Alexander Lebedev in QA — Load & Performance
Kirill Yurkov
чатик в целом существует для развития НТ и просвещения народа хорошими практиками, сам закреп побуждает сюда кидать запросы а не в гугл ходить. тем более что тут качество информации выше гугловой
согласен, но такие вещи мне кажется можно и самому на базовом уровне минут за 20 узнать в гугле.
я вот лично сюда прихожу за каким-то сложным вопросом, и то после того как не нашел ответ в интернете.
источник

jj

jagga jagga in QA — Load & Performance
да, иначе это сводится к "поищите за меня в гугле"
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
vasiliy
Всем привет. А можно бесполезный флуд остановить? Отношения в личке выясняйте
Поддерживаю
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Потерял сам вопрос, был где-то в чате. Как сделать статистику по Assertion для JMeter в Grafana.

Сделал так как на картинке

У Assertion стандартный код ответа - Assertion failed.
Вывожу статистику с группировкой по тексту (responseMessage) и имени запроса (transaction)
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Код ответа 0 - у элементов Transaction Controller. Для них пишется количество запросов в транзакции всего и на каком из них произошел сбой.

Пример:
Number of samples in transaction : 9, number of failing samples: 1

Можно для статуса 0 сделать такую же таблицу.

Других специальных кодов нет. За исключением

Non HTTP Responce Code: java.net.SocketTimeoutException

И некоторых других редких Non HTTP Responce Code все другие коды ответа числовые:
200, 403, 500, 503, ...

По ним отдельных фильтров не делал и коллеги тоже не делали. Они все в общей таблице. На ней удобно сделать фильтр:

responseCode !~ /^$/

Значение /^$/ не выбрать в конструкторе запросов Grafana из выпадающего списка, его надо написать руками. Оно означает пустую строку. И только так можно задать в конструкторе запросов условие - "не пусто". При ручной правке запросов можно было бы написать ещё так:

responseCode <> ''
источник

KY

Kirill Yurkov in QA — Load & Performance
я кастомный написал листенер для ошибок отдельно в отдельную таблицу
result = new StringBuilder();
def Tag = "${__groovy(def Tag1 = '${__dateTimeConvert(${__P(TESTSTART.MS)},,dd-MM-yy_HH:mm,)}'; return Tag1;)}"

status = "Failure";

if (!sampleResult.isSuccessful()) {
result.append("test9,")
   .append("label=")
   .append(escapeTag(sampleResult.getSampleLabel()))
   .append(',application=')
   .append("${project_name}")
   .append(',testRun=')
   .append(Tag + '\\\\ ${custom_duration}')
   .append(',status=')
   .append(status)
   .append(" ")
   .append('responsecode="')
   .append(escapeValue(sampleResult.getResponseCode()))
   .append('",url="')
   .append(escapeValue(sampleResult.getUrlAsString()))
   .append('",response="')
   .append(escapeValue(sampleResult.getResponseMessage()))
   .append('" ')
   .append(sampleResult.getTimeStamp())
   .append("000000");
}

String escapeValue(String val) {
   val = val.replaceAll(",", "\\\\,")
       .replaceAll(" ", "\\\\ ")
       .replaceAll("=", "\\\\=")
       .replaceAll("\r\n", " ")
       .replaceAll("\n", " ")
       .trim();

   return val;

}

String escapeTag(String val) {

   val = val.replaceAll(",", "\\\\,")
       .replaceAll(" ", "_")
       .replaceAll("=", "\\\\=")
       .replaceAll("\r\n", "_")
       .replaceAll("\n", "_")
       .trim();

   return val;

}

import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.util.EntityUtils;

void PostMeasurement(String metric) {
 
   def httpclient = new DefaultHttpClient(new BasicHttpParams());
   def httpPost = new HttpPost();
   httpPost.setURI(new URI("http://${influx_host}:8086/write?db=jmeter"));
   httpPost.setEntity(new StringEntity(metric));
   HttpResponse response = httpclient.execute(httpPost);
   EntityUtils.consumeQuietly(response.getEntity());
}
if (result.toString()!="") {
 PostMeasurement(result.toString());
}
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
По Transaction Controller и учёту того, на каком шаге произошла ошибка, есть такое мнение, уже сложившееся.

Что если делать тест стабильности, то в нем должно быть 0 ошибок. И после любой ошибки нужно перезапускать тест снова. Для этого в Thread Group нужно поставить, что при ошибке сделать не Continue, а Start next loop

Тогда ошибки с кодом 0 становятся интересны для анализа. И тогда вообще тест идёт до первой ошибки.

И так делаю при отладке тестов. А в тестах на MaxPerf назад можно поменять в Continue
источник

KY

Kirill Yurkov in QA — Load & Performance
если асерт провалится, то в этот семпл должно упасть тело запроса и вывести его в отдельной табличке
источник

KY

Kirill Yurkov in QA — Load & Performance
источник

AG

Alex Grishutin in QA — Load & Performance
Вячеслав Смирнов
По Transaction Controller и учёту того, на каком шаге произошла ошибка, есть такое мнение, уже сложившееся.

Что если делать тест стабильности, то в нем должно быть 0 ошибок. И после любой ошибки нужно перезапускать тест снова. Для этого в Thread Group нужно поставить, что при ошибке сделать не Continue, а Start next loop

Тогда ошибки с кодом 0 становятся интересны для анализа. И тогда вообще тест идёт до первой ошибки.

И так делаю при отладке тестов. А в тестах на MaxPerf назад можно поменять в Continue
Так а на максперф... разве при продолжении при ошибке не будут ошибки накапливаться комом?

Например, зафейлилась странзакция логина, соответвенно все за ней тоже упадут....
источник

KY

Kirill Yurkov in QA — Load & Performance
только у меня там тег подставляется свой, можно и без него только по времени выбирать
источник