Size: a a a

QA — Load & Performance

2020 July 23

AG

Alex Grishutin in QA — Load & Performance
или я немного не так понял о чем речь?
источник

KY

Kirill Yurkov in QA — Load & Performance
можно добавить боди и параметры
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Alex Grishutin
Так а на максперф... разве при продолжении при ошибке не будут ошибки накапливаться комом?

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

Если тест ранее не был отлажен, то это недоработка теста
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
От теста зависит так-то. В большей части тестов никогда не использую Continue при ошибках.
источник

AG

Alex Grishutin in QA — Load & Performance
так при крит ошибке реальный пользователь не сможет продолжить свой флоу и тут он или просто дропнет или начнет сначала...
источник

ВС

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

https://m.habr.com/ru/post/308098/
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Kirill Yurkov
я кастомный написал листенер для ошибок отдельно в отдельную таблицу
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());
}
#jmeter #assertion #jsr223listener
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Alex Grishutin
так при крит ошибке реальный пользователь не сможет продолжить свой флоу и тут он или просто дропнет или начнет сначала...
При отладке теста удобно также добавить View Result Three, и изменить поведение при ошибке с Continue на Stop Test. Тогда в последнем элементе View Result Three будет и тело запроса и ошибка. И искать удобно - в конце списка.
источник

AG

Alex Grishutin in QA — Load & Performance
да не, это все понятно, у меня сугубо диссонанс в том, что делать continue при проведении "боевого" теста.
источник

AG

Alex Grishutin in QA — Load & Performance
"И так делаю при отладке тестов. А в тестах на MaxPerf назад можно поменять в Continue"

Вот с этой фразой только вопрос возник
источник

ВС

Вячеслав Смирнов... in QA — Load & Performance
Alex Grishutin
"И так делаю при отладке тестов. А в тестах на MaxPerf назад можно поменять в Continue"

Вот с этой фразой только вопрос возник
Да, спасибо. Спорная вещь. Поправил выше
источник

AG

Alex Grishutin in QA — Load & Performance
Ребзя, а юзал кто loadninja или тому подобные проекты? Мб есть релевантный опыт?
источник

VG

Viktor Ganeles in QA — Load & Performance
Kirill Yurkov
я кастомный написал листенер для ошибок отдельно в отдельную таблицу
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());
}
Вау, вот это интересно.
Он сам по себе шлёт в графану, помимо бэкенд листнера?
Очень здорово!
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
Вау, вот это интересно.
Он сам по себе шлёт в графану, помимо бэкенд листнера?
Очень здорово!
да, врубаю его для отладки
источник

VG

Viktor Ganeles in QA — Load & Performance
Kirill Yurkov
да, врубаю его для отладки
А для постоянных тестов почему нет?
источник

VG

Viktor Ganeles in QA — Load & Performance
если в табличке сделать политику зачистки через пару недель, то и пускай всё шлёт
источник

KY

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

jj

jagga jagga in QA — Load & Performance
Alex Grishutin
Ребзя, а юзал кто loadninja или тому подобные проекты? Мб есть релевантный опыт?
дорого и бестолково, имхо лучшее это blazemeter
источник

VG

Viktor Ganeles in QA — Load & Performance
всё равно при ошибках итерация завершается
источник

KY

Kirill Yurkov in QA — Load & Performance
Viktor Ganeles
А для постоянных тестов почему нет?
можно и для любых тестов, я уже оптимизированный кинул
источник