Very simple load testing framework for Pull and Push scenarios. It's 100% written in F# and targeting .NET Core and full .NET Framework.
To install NBomber via NuGet, run this command in NuGet package manager console:
PM> Install-Package NBomber
Documentation is located here.
- The main reason behind NBomber is to provide a lightweight framework for writing load tests which you can use to test literally any system and simulate any production workload. We wanted to provide only a few abstractions so that we could describe any type of load and still have a simple, intuitive API.
- Another goal is to provide building blocks to validate your POC (proof of concept) projects by applying any complex load distribution.
- With NBomber you can test any PULL or PUSH system (HTTP, WebSockets, GraphQl, gRPC, SQL Databse, MongoDb, Redis etc).
NBomber as a modern framework provides:
- Zero dependencies on protocol (HTTP/WebSockets/AMQP/SQL)
- Zero dependencies on semantic model (Pull/Push)
- Very flexible configuration and dead simple API
- Cluster support
- Reporting sinks
- CI/CD integration
- Plugins/extensions support
- Data feed support
NBomber is a foundation of building blocks which you can use to describe your test scenario, run it and get reports.
// FSharp example
let step = Step.create("step", fun context -> task {
// you can do any logic here: go to http, websocket etc
do! Task.Delay(seconds 1)
return Response.Ok()
})
Scenario.create "scenario" [step]
|> NBomberRunner.registerScenario
|> NBomberRunner.run
// CSharp example
var step = Step.Create("step", async context =>
{
// you can do any logic here: go to http, websocket etc
await Task.Delay(TimeSpan.FromSeconds(1));
return Response.Ok();
});
var scenario = ScenarioBuilder.CreateScenario("scenario", step);
NBomberRunner
.RegisterScenarios(scenario)
.Run();
Language | Example |
---|---|
F# | link |
C# | link |
Would you like to help make NBomber even better? We keep a list of issues that are approachable for newcomers under the good-first-issue label.