开源的负载测试/压力测试工具 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、运行负载测试

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/300432.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人生失败的31种致命原因

人生失败的31种致命原因 一、不利的遗传背景。天生智力不足的人,是没什么办法可想的。唯一的补救办法就是“以勤补拙”。 二、缺乏明确的人生目标,凡是没有明确人生目标的人,便没有成功的希望,在我曾经分析过的100人中&#x…

男人都应该懂的一张图。。 | 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅美国人为了教民众如何辨别韩国人制作的韩国女性标准照左右军事成为一个有钱人的概率有多高?最新版男人都该懂的汽车品牌从属关系图twi:NOCO_1002肥胖和骨架没有必然联系800斤胖子的X射线照 科普君XueShu 雪树来猜一猜这是…

python 抓取的网页默认是bytes的,要转码

python 抓取的网页默认是bytes的,要转码.查看网页源码可以看到,我本次抓取的网页的编码方式是utf-8的.req urllib.request.Request(urlmyurl,headers myheaders) data urllib.request.urlopen(req).read() print(data.decode("UTF-8"))这样就正常显示中文了转载于…

FireFox与IE的兼容

1. JavaScript对象的引用 为了减少JavaScript对象的下载次数,Tasian只会在浏览器第一次请求应用时才会下载JavaScript文件。JavaScript对象只会驻留在Top级窗体,任何其它窗体需要引用到该JavaScript对象,只需要在引如下的方式进行引用就行&am…

多语言应用开发中本地化信息对照表

多语言应用开发中本地化信息对照表。包含区域编号、本地化名称、英语名称、中文名称、国家地区码、语言代码和流通币种等。区域编号本地化名称英语名称中文名称国家地区语言流通币种排序id-idBahasa IndonesiaIndonesian印度尼西亚语IDidIDR1ms-myBahasa MelayuMalay (Malaysia…

学做菜咯

以前在QQ空间发的贴,现在转到这边来,嘿嘿。青蛙达 - 07月28日- 14时28分今天中午做我个人最喜欢的菜之一《咖喱鸡饭》 早上到超市买了: 大蒜头、洋葱、南瓜、鸡翅膀、咖喱粉、胡椒粉、白糖、桂皮 回来发现原来把辣椒粉当成胡椒粉买回来了....…

java一般方法有哪些方法有哪些方法_Java代码优化有哪些方法?

Java代码优化是Java编程开发很重要的一个步骤,Java代码优化要注重细节优化,一个两个的细节的优化,产生的效果不大,但是如果处处都能注意代码优化,对代码减少体积、提高代码运行效率是有巨大帮助的,还能在一…

Facebook 中国程序员之死

全世界只有3.14 % 的人关注了青少年数学之旅9 月 19 日,一位 Facebook 软件工程师从加州门洛帕克(Menlo Park)总部四楼纵身跳下,结束年轻的生命。Facebook 新闻发言人证实确有其事,并说公司将会联系员工家人。门洛帕克…

HTTP头信息

通常 HTTP 消息包括客户机向服务器的请求消息和服务器向客户机的响应消息。这两种类型的消息由一个起始行,一个或者多个头域,一个只是头域结束的空行和可选的消息体组成。HTTP 的头域包括通用头,请求头,响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。域…

[导入]数据库物理模型设计的其他模式之继承模式

连载之7原创:胖子刘(转载请注明作者和出处,谢谢)数据库物理模型设计的其他模式除了上面提到的四种主要设计模式,还有一些其他模式,在某些项目中可能会用到,在这里先简单做个说明,暂不…

最近ゲームにはまってる。

小D的[今日口语]栏目里今天教的一句话正好表达了我最近的状态最近(さいきん)ゲームにはまってる(最近我很迷游戏)这个“迷”字用得很对感觉自己现在还是孩子状态会沉溺于一种东西而无法自拔周末的时候一般都是游戏完累了才有心情去…

dialog element 删掉标题_ElementUI 销毁Dialog数据(简单粗暴)

在使用element开发通过之中使用Dialog弹窗创建数据或者数据回显在经常不过了。而且数据创建和数据编辑正常都是使用同一组件。出现的问题:title"提示弹窗":visible.sync"dialogVisible"width"30%"destroy-on-close>使用dialog 提供…

一个简单的方式搞定密码的加盐哈希与验证

过去一段时间来, 众多的网站遭遇用户密码数据库泄露事件。层出不穷的类似事件对用户会造成巨大的影响,因为人们往往习惯在不同网站使用相同的密码,一家 “暴库”,全部遭殃。单向加密一个简单的方案是将明文密码做单向哈希后存储。单向哈希算法…

“我数学太烂,但高考136分!”刷完上万道题后,我找到2个月多考58分的捷径…...

全世界只有3.14 %的人关注了青少年数学之旅01难上天的高考试卷,我逆袭考到136分!我叫刘辉,来自湖北省的某个县城,今年我数学考到了136分的好成绩,成功被一所985高校录取。↓我的高考成绩↓但回想一年之前,我…

php吞了throw错误,PHP 异常与错误处理

异常处理:意外,是在程序运行过程中发生的意料之外的事,使用异常改变脚本正常流程。try{}catch(异常对象){}如果try中代码没问题,则执行完try中代码后就到catch后执行如果try中代码有异常发生,则抛出一个异常对象&#…

[Forward] 因为火炬,所以迟到,工资照扣

今天跟往常一样,到香蜜湖等230 看到深南大道主道那边站了一名JC叔叔 在前面的主辅岔道口看到有交J叔叔...对面又大堵车...心想大事不妙..又要交通管制了......两hui期间因为交通管制让我第一个月上班就来了一次迟到 这时候是8点钟多一点开始管制.....很后悔没有上到最后一…

三分钟总览微软任务并行库TPL

点击上方蓝字进行关注有小伙伴问我每天忽悠的TPL是什么?☹️ 这次站位高一点,严肃讲一讲。引言俗话说,不想开飞机的程序员不是一名好爸爸;作为微软技术栈的老鸟,一直将代码整洁之道奉为经典, 优秀的程序员将…

第五章 MyEclipse配置hadoop开发环境

1.首先要下载相应的hadoop版本的插件,我这里就给2个例子: hadoop-1.2.1插件:http://download.csdn.net/download/hanyongan300/6238153 hadoop2.2.0插件:http://blog.csdn.net/twlkyao/article/details/17334693 上一章我也讲了怎…

这才是真正的,坐上来,自己动!| 今日趣图

全世界只有3.14 % 的人关注了青少年数学之旅你有见过加辣的奶茶吗?什么叫做科技改变生活其实你的猫一直都看不起你坐上来,自己动!安全带使用体验当iPhone遇上数学在B站UP主的剪刀下诞生了各种神奇的CP组合其中最受欢迎的居然是伏地魔和林黛玉…

九项路考(2)

<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />二、侧方位停车<?xml:namespace prefix v ns "urn:schemas-microsoft-com:vml" />要点&#xff1a;1、倒车入停车位&#xff08;1&#xff09;挂倒档&#xf…