接到一个有关MQTT的性能测试任务,把查找资料到解决问题的过程都记录、分享下

首先先科普下性能测试中相关术语的解释及

说到性能测试、负载测试、压力测试、并发测试,很多人都是混合使用,或者一会叫压力测试,一会叫并发测试。这些概念除了非测试人员分不清楚,甚至许多专业测试人员也对这些名词也很模糊

基准性能测试 ,少量用户进行性能测试,查看相应结果,以此作为一个基准去测试

压力测试,分为轻、中、高三级压力,查看测试过程中,在一定饱和状态下,例如cpu、内存在接近饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现严重问题(如崩溃,死锁,占用资源无法释放,错误率超过预期的指标),

主要是作为查看系统在一定时间端经历较高压力后,再一定时间端内是否能恢复正常

负载测试,通过对被测系统由小到大不断加压,直到性能指标(如:平均响应时间、错误率、CPU/Mem系统资源占用)达到不满足预期的情况。

并发测试,并发测试方法通过模拟用户并发访问,测试多用户并发访问同一个应用、同一个模块或者数据记录时是否存在死锁或其者他性能问题。

稳定性测试,在给系统加载一定业务压力的情况下,使系统运行一段时间(如7x24小时),以此检测系统是否稳定。至于给多大的压力,可以参考负载测试的极限压力再乘以80%。

测试过程中分为下面几大点

一、性能测试需求

二、工具插件选型

三、MQTT协议了解

四、性能用例设计

五、性能执行过程监控(nmon)

六、测试结果分析

一、性能测试需求

不管做任何性能测试,首先一定要有一个大概的需求,比如这次我测试的需求就是从MQTT发布消息到服务器处理,最后存入数据库花费时间不能超过3s

需求一般是产品/客户/cto 这类人会提出的要求,总之谁让你测性能,需求来源就从谁那里问

可以参考这位大佬写的,写得蛮详细的,链接附上:https://blog.csdn.net/weixin_40906439/article/details/79124028

一般性能需求点的选取

性能测试点的选取

1.发生频率非常高的(例如:某邮箱核心业务系统中的登录、收发邮件等业务,它们在每天的业务总量中占到90%以上)

2.关键程度非常高的(产品经理认为绝对不能出现问题的,如登录等)

2.资源占用非常严重的(导致磁盘I/O非常大的,例如某个业务进行结果提交时需要向数十个表存取数据,或者一个查询提交请求时会检索出大量的数据记录)

一般的性能需求点:

1、响应速度-比如:API请求的平均响应时间应低于1s, WEB首页打开速度5s以下,web登陆速度 15s以下。

2、服务支持50万个在线用户

3、某接口支持200个用户同时调用(平均3秒调用一次)

3、计费请求成功率达到99.999%以上。

4、在100个并发用户的高峰期,邮箱的基本功能,处理能力至少达到10TPS

5、系统能在高于实际系统运行压力1倍的情况下,稳定的运行12小时

6、这个系统能否支撑200万的vu(每天登录系统的人次)

性能的水很深,今天记录的东西是测试过程中的一个总结,也是查找资料的参考一些大佬写的博客,有不对的地方,欢迎指正

jmeter如何进行MQTT性能测试(测试前期准备一,性能测试需求)的更多相关文章

  1. 性能测试工具JMeter 基础(六)—— 测试元件: 线程组

    线程组的定义: 线程组是测试计划执行的入口,所有的逻辑控制器和取样器都必须在线程组下,其他的元件根据位置的不同作用域是不同的. 线程组是每个线程都是独立运行测试脚本,一个线程组就等于一个用户,通过多个 ...

  2. Windows和Linux的Jmeter分布式集群压力测试

    Windows的Jmeter分布式集群压力测试 原文:https://blog.csdn.net/cyjs1988/article/details/80267475 在使用Jmeter进行性能测试时, ...

  3. [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试),长期有效

    [原创] 上海招聘高级测试工程师(性能测试/自动化测试/App测试方向),长期有效 高级测试工程师(性能/自动化方向) 1.负责性能测试计划,性能需求分析,性能测试方案和用例设计,搭建性能测试环境,执 ...

  4. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告

    Jemter   压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...

  5. Jmeter使用实践-接口diff测试

    Jmeter使用实践-接口diff测试 大多数人都使用 Jmeter 做过性能测试,但是在使用的过程中你会发现,它不仅可以做性能测试和功能测试,还能够满足基本的接口测试需求. 相比其他工具,Jmete ...

  6. Jmeter教程 简单的压力测试

    Jmeter教程 简单的压力测试:http://www.cnblogs.com/TankXiao/p/4059378.html

  7. 使用JMeter进行简单的压力测试

    一.压力测试 顾名思义:压力测试,就是  被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况). 比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速 ...

  8. 转:使用 JMeter 完成常用的压力测试

    使用 JMeter 完成常用的压力测试 就目前 Java EE 的平台下开发的软件来说,这种节点通常可能是:Web 服务器.数据库服务器和 JMS 服务器.它们都是请求主要发生的地点,请求频率较其它的 ...

  9. MQTT 及其 测试工具

    协议说明书:https://mcxiaoke.gitbooks.io/mqtt-cn/content/mqtt/04-OperationalBehavior.html 官网提供了很多的broker模拟 ...

  10. JMeter ----与WebDriver安装与测试

    JMeter ----与WebDriver安装与测试 主要内容 JMeter安装 WebDriver安装 一个简单的JMeter+WebDriver示例 环境与参考 jvm版本: 1.8.0_65 j ...

随机推荐

  1. pyqt5安装与pycharm配置

    最近几天新入坑了python的GUI设计,回想一下我为什么会入门这个???好像是在知乎上看到你都用 Python 来做什么? 这篇文章,看到有人回答说将python打包成exe文件,然后就想把之前弄得 ...

  2. vsphere client/web client 开启ESXi SSH服务

    ●vsphere client 开启ESXi SSH服务 1,从主机和群集列表选择主机esxi01.2,选择[配置]-->[软件]列表-->[安全配置文件]--> [服务],点击右上 ...

  3. MySQL中Decimal类型和Float Double的区别 & BigDecimal与Double使用场景

    MySQL中存在float,double等非标准数据类型,也有decimal这种标准数据类型. 其区别在于,float,double等非标准类型,在DB中保存的是近似值,而Decimal则以字符串的形 ...

  4. python+selenium的web自动化测试之一(手工执行)

    环境 Windows 前提: 1. python已正常安装 2. selenium已正常安装. 如果没安装,会报:ImportError: No module named 'selenium' (参考 ...

  5. 2018-2019-2 网络对抗技术 20165303 Exp4 恶意代码分析

    实践目标 1.1是监控你自己系统的运行状态,看有没有可疑的程序在运行. 1.2是分析一个恶意软件,就分析Exp2或Exp3中生成后门软件:分析工具尽量使用原生指令或sysinternals,systr ...

  6. JavaScript入门篇

    记录一下在慕课网学习JavaScript的过程. 以下内容均来自慕课网. 传送:https://www.imooc.com/code/401 为什么学习JavaScript 1. 所有主流浏览器都支持 ...

  7. AutoCAD批量导出点坐标

    需求背景: 需要批量导出DWG文件中的散点树的位置信息,以Excel文件格式存储. 实现方法: 在AutoCAD2012打开dwg文件,点击“插入”选项卡中的“提取数据”工具(或输入DATAEXTRA ...

  8. C#中,子类构造函数调用父类父类构造函数的正确方式

    正确调用的方式是:

  9. AutoLayout的坑

    本文投稿文章,作者:MangoMade(简书) AutoLayout非常强大也非常易用,可读性也很强,加上各种第三方AutoLayout库,让你布起局来犹如绷掉链子的狗!根本停不下来!以前的 1 la ...

  10. day 10 函数命名空间、函数嵌套和作用域

    1. day 09 内容复习 # 函数 # 可读性强 复用性强 # def 函数名(): # 函数体 #return 返回值 # 所有的函数 只定义不调用就一定不执行 #先定义后调用 #函数名() # ...