负载测试和压力测试对于确保 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、运行负载测试

运行测试后,您将获得一份报告,放在F:\Samples\NBomberTest\reports\2021-07-18_12.04.89_session_57c6dcf0。

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

开源的负载测试/压力测试工具 NBomber相关推荐

  1. 负载测试压力测试强度测试稳定性测试

    你看,如标题所示,测试可以分为这么多种.实际上,这只是一种性能测试的分类.按照不同的标准,还可以有别的划分. 1.按开发阶段:单元测试.集成测试.系统测试.验收测试 2.按测试实施组织:α测试(开发方 ...

  2. EMQTT测试--压力测试

    之前写过一篇是关于emqtt安装和测试的,不过是在windows上 这次介绍一下压力测试 压力测试选择emqtt官方推荐的emqtt_benchmark emqtt官网推荐 emqtt_benchma ...

  3. Android App专项测试-压力测试篇

    小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...

  4. Jmeter负载和压力测试

    负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间. 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响. TPS和QPS的区别: tps可 ...

  5. QPS和TPS的区别、负载和压力测试的区别

    作为软件测试工程师,你应该要分清楚QPS和TPS的区别. QPS/TPS QPS(Queries Per Second):每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定 ...

  6. JMeter之负载阶梯压力测试

    适用场景:在实际的测试场景中,有时需要模拟阶梯型施压的场景,即:从某个点开始不断增加压力,直到达到某一值,然后持续运行一段时间,再继续加压,循环往复直到达到预期峰值,运行一段时间,然后再分批次退出.需 ...

  7. php项目通过不了压力测试,压力测试 – Apache ab测试和失败 – Apache或PHP配置问题?...

    我写了一个RESTful Web服务,成为使用PHP和Restler库的移动应用程序的支柱.它运行在运行Windows Server 2008 R2,PHP 5.3.5,Apache 2.2.17和M ...

  8. 几种网站压力测试工具调研与使用

    在项目上线之前,都需要做压力测试,目的是看下我们的网站能抗住多少的压力,能承担多少并发,如果不做压力测试,一旦出现大访问量时,我们的网站会挂掉.因此,我们对现有较流行的几种网络压力测试工具进行了简单调 ...

  9. FIO – IO压力测试工具

    <存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. 1. ...

最新文章

  1. 冠军杜兰特和Deta比赛
  2. UGUI_LayoutGroup布局
  3. IE浏览器下DOM节点被替换后获取边界offsetParent / getBoundingClientRect 的BUG解决(版本 EXT 2.0/ 2.0.1)...
  4. 宏与内联(inline)的区别(转载)
  5. 正则表达式matlab,正则表达式中一个word的匹配 @MATLAB - 优秀的Free OS(Linux)版 - 北大未名BBS...
  6. 共享单车当废铁卖 ofo回应:已达报废年限
  7. K8S 部署rabbitmq集群
  8. 使用QGIS将文本坐标转换为矢量文件
  9. KeepAlived+Nginx 模拟nginx单点故障转移,实现高可用
  10. hyperkube记录
  11. 如何得到当前程序执行的堆栈
  12. MYSQL 开窗函数
  13. Python OpenCV实现身份证号码识别
  14. ognl # % 的作用(井号,星号,百分号)
  15. android学习笔记-udacity/Sunshine-Version-2出错
  16. Android10.0CarAudioZone(一)
  17. 产品概念之4/4:产品包 —— 升维思考,降维打击
  18. 智源AI日报(2022-09-02):我是如何从头开始写一篇顶级论文的
  19. 深度学习在工业界的应用案例(二)
  20. i512450h和i512500h对比区别大吗

热门文章

  1. Open Flash Chart 初体验
  2. nowcoder OI 周赛 最后的晚餐(dinner) 解题报告
  3. java servlet练习测试
  4. 在不安装mysql-connector-net的情况下使用FluentData框架
  5. sql server 之函数小技巧 整数类型为空是用空字符串替代实现
  6. IDA64 Fatal error before kernel init
  7. Teams数据统计 - 聊天消息
  8. 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
  9. 【前端基础进阶】JS-Object 功能详解
  10. .Net转Java自学之路—基础巩固篇八—总结(封装、继承、多态)