开源的负载测试/压力测试工具 NBomber
负载测试和压力测试对于确保 web 应用的性能和可缩放性非常重要。尽管它们的某些测试是相同的,但目标不同。
负载测试:测试应用是否可以在特定情况下处理指定的用户负载,同时仍满足响应目标。应用在正常状态下运行。
压力测试:在极端条件下(通常为长时间)运行时测试应用的稳定性。测试会对应用施加高用户负载(峰值或逐渐增加的负载)或限制应用的计算资源。
压力测试可确定压力下的应用是否能够从故障中恢复,并正常返回到预期的行为。在压力下,应用不会在正常状态下运行。
NBomber是一个开源的 .NET 框架,开源协议是Apache 2.0, NBomber 用于对多种服务进行负载测试,包括 Web、消息队列、数据库等。 今年5月份发布了 NBomber 2.0版本。NBomber 类似于JMeter,但是和JMeter 不一样的地方是, NBomber 是通过F#/C#/JSON 代码来表达测试场景。
NBomber 背后的主要原因是为编写负载测试提供了一个轻量级框架,您可以使用它来测试任何系统并模拟任何生产工作负载。我们只想提供一些抽象,以便我们可以描述任何类型的负载,并且仍然有一个简单、直观的 API。
另一个目标是提供构建块,通过应用任何复杂的负载分布来验证您的 POC(概念验证)项目。
使用 NBomber,您可以测试任何 PULL 或 PUSH 系统(HTTP、WebSockets、GraphQl、gRPC、SQL Databse、MongoDb、Redis 等)。
使用 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.按开发阶段:单元测试.集成测试.系统测试.验收测试 2.按测试实施组织:α测试(开发方 ...
- EMQTT测试--压力测试
之前写过一篇是关于emqtt安装和测试的,不过是在windows上 这次介绍一下压力测试 压力测试选择emqtt官方推荐的emqtt_benchmark emqtt官网推荐 emqtt_benchma ...
- Android App专项测试-压力测试篇
小伙伴们大家好,今天主要分享的主题是Android App专项测试.如何进行Android App专项测试压力测试呢?我们主要通过Android平台的一门工具Monkey.在学习本门课程之前,如果你具 ...
- Jmeter负载和压力测试
负载和压力的区别: 负载测试:在一定的工作负荷下,给系统造成du的负zhi荷及系统响应的时间. 压力测试:在一定的负荷条件下,长时间连续运行系统给系统性能造成的影响. TPS和QPS的区别: tps可 ...
- QPS和TPS的区别、负载和压力测试的区别
作为软件测试工程师,你应该要分清楚QPS和TPS的区别. QPS/TPS QPS(Queries Per Second):每秒查询率,是一台服务器每秒能够响应的查询次数,是对一个特定的查询服务器在规定 ...
- JMeter之负载阶梯压力测试
适用场景:在实际的测试场景中,有时需要模拟阶梯型施压的场景,即:从某个点开始不断增加压力,直到达到某一值,然后持续运行一段时间,再继续加压,循环往复直到达到预期峰值,运行一段时间,然后再分批次退出.需 ...
- php项目通过不了压力测试,压力测试 – Apache ab测试和失败 – Apache或PHP配置问题?...
我写了一个RESTful Web服务,成为使用PHP和Restler库的移动应用程序的支柱.它运行在运行Windows Server 2008 R2,PHP 5.3.5,Apache 2.2.17和M ...
- 几种网站压力测试工具调研与使用
在项目上线之前,都需要做压力测试,目的是看下我们的网站能抗住多少的压力,能承担多少并发,如果不做压力测试,一旦出现大访问量时,我们的网站会挂掉.因此,我们对现有较流行的几种网络压力测试工具进行了简单调 ...
- FIO – IO压力测试工具
<存储工具系列文章>主要介绍存储相关的测试和调试工具,包括不限于dd.fio.vdbench.iozone.iometer.cosbench等性能负载工具,及strace等调试工具. 1. ...
最新文章
- 冠军杜兰特和Deta比赛
- UGUI_LayoutGroup布局
- IE浏览器下DOM节点被替换后获取边界offsetParent / getBoundingClientRect 的BUG解决(版本 EXT 2.0/ 2.0.1)...
- 宏与内联(inline)的区别(转载)
- 正则表达式matlab,正则表达式中一个word的匹配 @MATLAB - 优秀的Free OS(Linux)版 - 北大未名BBS...
- 共享单车当废铁卖 ofo回应:已达报废年限
- K8S 部署rabbitmq集群
- 使用QGIS将文本坐标转换为矢量文件
- KeepAlived+Nginx 模拟nginx单点故障转移,实现高可用
- hyperkube记录
- 如何得到当前程序执行的堆栈
- MYSQL 开窗函数
- Python OpenCV实现身份证号码识别
- ognl # % 的作用(井号,星号,百分号)
- android学习笔记-udacity/Sunshine-Version-2出错
- Android10.0CarAudioZone(一)
- 产品概念之4/4:产品包 —— 升维思考,降维打击
- 智源AI日报(2022-09-02):我是如何从头开始写一篇顶级论文的
- 深度学习在工业界的应用案例(二)
- i512450h和i512500h对比区别大吗
热门文章
- Open Flash Chart 初体验
- nowcoder OI 周赛 最后的晚餐(dinner) 解题报告
- java servlet练习测试
- 在不安装mysql-connector-net的情况下使用FluentData框架
- sql server 之函数小技巧 整数类型为空是用空字符串替代实现
- IDA64 Fatal error before kernel init
- Teams数据统计 - 聊天消息
- 还原出厂设置 擦除frp_如何备份,擦除和还原Apple Watch
- 【前端基础进阶】JS-Object 功能详解
- .Net转Java自学之路—基础巩固篇八—总结(封装、继承、多态)