• 开源的负载测试/压力测试工具 NBomber


    负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。 尽管它们的某些测试是相同的,但目标不同。

    负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标。 应用在正常状态下运行。

    压力测试:在极端条件下(通常为长时间)运行时测试应用的稳定性。 测试会对应用施加高用户负载(峰值或逐渐增加的负载)或限制应用的计算资源。

    压力测试可确定压力下的应用是否能够从故障中恢复,并正常返回到预期的行为。 在压力下,应用不会在正常状态下运行。

    NBomber是一个开源的 .NET 框架,开源协议是Apache 2.0, NBomber 用于对多种服务进行负载测试,包括 Web、消息队列、数据库等。  今年5月份发布了 NBomber 2.0版本。 NBomber 类似于JMeter,但是和JMeter 不一样的地方是, NBomber 是通过F#/C#/JSON 代码来表达测试场景。

    1. NBomber 背后的主要原因是为编写负载测试提供了一个轻量级框架,您可以使用它来测试任何系统并模拟任何生产工作负载。我们只想提供一些抽象,以便我们可以描述任何类型的负载,并且仍然有一个简单、直观的 API。
    2. 另一个目标是提供构建块,通过应用任何复杂的负载分布来验证您的 POC(概念验证)项目。
    3. 使用 NBomber,您可以测试任何 PULL 或 PUSH 系统(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
    4. 使用 NBomber,您可以轻松地将一些集成测试转换为负载测试

    NBomber 作为一个现代框架提供:

    • 零依赖协议(HTTP/WebSockets/AMQP/SQL)
    • 对语义模型的零依赖(Pull/Push)
    • 非常灵活的配置和非常简单的 API (F#/C#/JSON)
    • 集群支持
    • 实时报告
    • CI/CD 集成
    • 数据馈送支持

    NBomber的使用 比较简单,跟着入门文档走一遍就学会了 :https://nbomber.com/docs/overview

    1、创建一个控制台程序

    dotnet new console -n NBomberTest -lang "C#"
    cd NBomberTest

    2、添加NBomber包

    dotnet add package NBomber

    3、创建 hello world 负载测试

    让我们先从一个空的 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();
             }
         }
    }

    4、运行负载测试

    image

    image

    运行测试后,您将获得一份报告,放在F:SamplesNBomberTest eports2021-07-18_12.04.89_session_57c6dcf0。

    文件夹下有有4种格式(txt、csv、html、md)的报告,其中Html 页面的报告比较直观:

    image

    欢迎大家扫描下面二维码成为我的客户,为你服务和上云

  • 相关阅读:
    网页性能优化,缓存优化、加载时优化、动画优化--摘抄
    display的32种写法--摘抄
    transform与position:fixed的那些恩怨--摘抄
    float 常见用法与问题--摘抄
    10个JavaScript难点--摘抄
    CSS3 动画卡顿性能优化解决方案--摘抄
    CSS 盒模型、解决方案、BFC 原理讲解--摘抄
    web实时长图实践--摘抄
    移动端H5多平台分享实践--摘抄
    canvas绘制视频封面--摘抄
  • 原文地址:https://www.cnblogs.com/shanyou/p/15027581.html
Copyright © 2020-2023  润新知