Comments 11
Отлично! Респект автору! Мечтал о таком инструменте.
Особенно забавно после
например для авторизации с JWT, вам придется почти что программировать с помощью UI.
видеть не гораздо более продвинутый UI, который позволяет настроить использование того же JWT в пару кликов, а всего лишь библиотеку, при использовании которой программировать придётся вообще всё.
Если бы я программировал на Java/Scala/Kotlin, я бы рекомендовал Gatling ровно по тем же причинам, по которым рекомендую NBomber - удобство работы в привычном для вас стеке технологий.
Я уверен что все инструменты, и JMeter и Gatling и NBomber выполняют свои задачи и вряд ли делают что то нетривиальное. Как я и написал, вопрос во времени, которое вы готовы выделить на обучение (можно и Java и C# выучить при желании) и вопрос в вашем комфорте от работы в привычной среде.
Задача нагрузочного тестирования в оценке того как будет вести себя приложения под нагрузкой с точки зрения конечного пользователя (сколько пользователей приложение выдержит и насколько им будет комфортно). Если результаты тестирования неудовлетворительны и вы определили проблему в производительности, найти ее - задача уже других инструментов, например, Application Insights.
Для сбора метрик из системы вам нужны инструменты мониторинга, такие как Application Insights, dotMemory, PerfView, dotnet counters, логи и так далее.
Использовал 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();
NBomber как альтернатива JMeter для .NET разработчика