Pull to refresh

Comments 11

Отлично! Респект автору! Мечтал о таком инструменте.

UFO landed and left these words here

Особенно забавно после

например для авторизации с JWT, вам придется почти что программировать с помощью UI.

видеть не гораздо более продвинутый UI, который позволяет настроить использование того же JWT в пару кликов, а всего лишь библиотеку, при использовании которой программировать придётся вообще всё.

Если бы я программировал на Java/Scala/Kotlin, я бы рекомендовал Gatling ровно по тем же причинам, по которым рекомендую NBomber - удобство работы в привычном для вас стеке технологий.
Я уверен что все инструменты, и JMeter и Gatling и NBomber выполняют свои задачи и вряд ли делают что то нетривиальное. Как я и написал, вопрос во времени, которое вы готовы выделить на обучение (можно и Java и C# выучить при желании) и вопрос в вашем комфорте от работы в привычной среде.

А как метрики системы под тестом собирать? Иначе вы тестируете только таймауты запросов, что не дает информации о том, как нагрузка распределена между сервером приложения и сервером баз данных, например, куда смотреть, если внезапно таймауты выросли, кто жрёт всю память и т.д.

Задача нагрузочного тестирования в оценке того как будет вести себя приложения под нагрузкой с точки зрения конечного пользователя (сколько пользователей приложение выдержит и насколько им будет комфортно). Если результаты тестирования неудовлетворительны и вы определили проблему в производительности, найти ее - задача уже других инструментов, например, Application Insights.

То есть, отвечая на мой вопрос — никак?

Для сбора метрик из системы вам нужны инструменты мониторинга, такие как Application Insights, dotMemory, PerfView, dotnet counters, логи и так далее.

Скорее можно юзать какой-нибудь Prometheus или Telegraph, чтобы в some time-series db рядом с результатами нагрузочных тестов складывать текущие метрики приложения/сервера, а потом уже в Graphana накладывать одни графики на другие для поиска корреляций/аномалий.

Использовал NBomber, так и не разобрался, как делать сложные нагрузочные тесты: например, авторизация - запрос списка - для каждого элемента списка выполнить определенный сценарий

На JMeter это решаемо, хотя и с отвратительным developer experience

Если я правильно понял то что вы описали, вам нужен сценарий с 3-я степами с приблизительно вот таким псевдокодом:

var loginStep = Step.Create("auth", (context) => {
  var authData = httpClient.Authorize();
  context.Data["authData"] = authData;
  return Response.Ok();
});
var getCollectionStep = Step.Create("getCollection", (context) => {
  var authData = context.Data["authData"];
  var collection = httpClient.GetCollection(authData);
  context.Data["collection"] = collection;
  return Response.Ok();
});
var iterateCollectionStep = Step.Create("iterate", (context) => {
  var collection = context.Data["collection"];
  foreach (var item in collection) {
    // do some work here 
  }
  return Response.Ok();
});

var scenario = ScenarioBuilder.CreateScenario("yourComplexScenario",
                                             loginStep,
                                             getCollectionStep,
                                             iterateCollectionStep);

NBomberRunner
    .RegisterScenarios(scenario)
    .Run();

Sign up to leave a comment.

Articles