负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。尽管它们的某些测试是相同的,但目标不同。
负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标。应用在正常状态下运行。
压力测试:在极端条件下(通常为长时间)运行时测试应用的稳定性。测试会对应用施加高用户负载(峰值或逐渐增加的负载)或限制应用的计算资源。
压力测试可确定压力下的应用是否能够从故障中恢复,并正常返回到预期的行为。在压力下,应用不会在正常状态下运行。
NBomber是一个开源的 .NET 框架,开源协议是Apache 2.0, NBomber 用于对多种服务进行负载测试,包括 Web、消息队列、数据库等。 今年5月份发布了 NBomber 2.0版本。NBomber 类似于JMeter,但是和JMeter 不一样的地方是, NBomber 是通过F#/C#/JSON 代码来表达测试场景。
NBomber 作为一个现代框架提供:
NBomber的使用 比较简单,跟着入门文档走一遍就学会了 :
https://nbomber.com/docs/overview
dotnet new console -n NBomberTest -lang "C#"
cd NBomberTest
dotnet add package NBomber
让我们先从一个空的 hello world 开始,以便更熟悉 NBomber。在这个例子中,我们将定义一个简单的 步骤 和 场景,它什么都不做。
using System;
using System.Threading.Tasks;
using NBomber.Contracts;
using NBomber.CSharp;
namespace NBomberTest
{
class Program
{
static void Main(string[] args)
{
// first, you need to create a step
var step = Step.Create("step", async context =>
{
// you can define and execute any logic here,
// for example: send http request, SQL query etc
// NBomber will measure how much time it takes to execute your logic
await Task.Delay(TimeSpan.FromSeconds(1));
return Response.Ok();
});
// second, we add our step to the scenario
var scenario = ScenarioBuilder.CreateScenario("hello_world", step);
NBomberRunner
.RegisterScenarIOS(scenario)
.Run();
}
}
}
运行测试后,您将获得一份报告,放在F:SamplesNBomberTestreports
2021-07-18_12.04.89_session_57c6dcf0。
文件夹下有有4种格式(txt、csv、html、md)的报告,其中Html 页面的报告比较直观:
原文:
https://mp.weixin.qq.com/s/n3uWijjb7KwVHcxFIW1ZTw