接到一个有关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(每天登录系统的人次)
性能的水很深,今天记录的东西是测试过程中的一个总结,也是查找资料的参考一些大佬写的博客,有不对的地方,欢迎指正