locust:是基于Python语言的性能测试工具,它是基于协程的思想来进行设计的。Python语言是没有办法利用多核的优势,所以了Python为了解决这个问题,设计了协程,作为协程的任务,遇到IO堵塞就立刻切换。 生命是协程,协程可以简单的来说就是微线程。
locust主要做负载测试和稳定性测试,也可以做压力测试。
下载locust
下载文件
locust -f locustfile.py
在网页中打开http://localhost:8089/
• Number of total users to simulate:设置模拟的⽤户总数
• Spawn rate (users spawned/second):每秒启动的⽤户虚拟数
• Host (e.g. http://www.example.com):被测的⽬标服务器的地址信息
Type:请求类型(也就是请求具体是那个=⽅法)
Name:请求的路径地址信息
Requests:当前已完成的请求数量
Fails:当前失败的数量
Mediam(ms): 响应时间的中位数
90%ile (ms):90%的请求响应时间
Average (ms):平均响应时间
Min (ms):最⼩响应时间
Max (ms):最⼤响应时间
Average size (bytes):平均请求的数据量
Current RPS:每秒中处理请求的数量,也就是RPS
菜单栏
New test:点击该按钮可对模拟的总虚拟⽤户数和每秒启动的虚拟⽤户数进⾏编辑;
Statistics:聚合报告
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟⽤户数;
Failures:失败请求的展示界⾯;
Exceptions:异常请求的展示界⾯;
Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions;
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟⽤户数;
Failures:失败请求的展示界⾯
Exceptions:异常请求的展示界⾯
Current ratio:流动比率
Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions
性能测试计划:
背景:描述具体是干什么,干这件事的前因后果
前置工作:干这件事需要有哪些准备工作
技术选型(工具):JMeter、JVM监控工具、Locust、Gradana&influxDB
测试范围:就是具体的工作内容
上传⽂件最⼤⽀持2G 测试⽅式是:
关注点:上传文件成功需要的时间;上传过程中打开jvm观察cpu变化的趋势
结果:5min上传成功且无oom,那么:
1.需要测试一个人上传多大文件会oom,比如2.2g时oom,为保险>2g的不允许上传
2.需要测试有几个人同时上传2G文件会导致oom,比如11人同时上传2g文件,发生oom,那么保险起见设置9人/10人可以同时上传2g文件,其余的采取队列排队形式处理。
支持持续发送API请求
import time
from locust import HttpUser,task,between
class QuickStartUser(HttpUser):
host = 'http://47.95.142.233:8000'
min_wait = 3000
max_wait = 6000
def login(self):
r=self.client.post(
url='/login/auth/',
json={"username":"13484545195","password":"asd888"})
return r.json()['token']
@task
def api(self):
r=self.client.post(
url='/interface/run/api/32',
headers={'Authorization':'JWT {token}'.format(token=self.login())})
assert r.status_code==200
性能测试关注指标:
1、时间
2、CPU与内存的变化趋势
指标:
1、系统资源:CPU与内存
2、响应时间:最小,最大,平均,中位数,90%,95%,99%
3、吞吐量
4、IOPS,连接数
5、JVM的资源变化趋势关注
测试执行过程中,需要收集数据
测试任务为100万、90万、150万的各项响应时间等数据
1、系统资源:CPU与内存
2、响应时间:最小,最大,平均,中位数,90%,95%,99%
3、吞吐量
4、IOPS,连接数
在预测工作任务时间的时候会出现一些衍生的问题,所以在做任务时间评估的时候尽可能的多要一点时间
性能测试流程(模型)
首先要做测试前期准备
①梳理性能的目标②性能测试的数据③性能测试场景的设计以及性能测试用例的设计
第二步测试工具技术引入
①LoadRunner:HP公司研发的工业级别的性能测试工具,是收费的一款性能测试工具
②JMeter:100%使用Java语言研发的性能测试工具,是开源的,互联网公司基本使用的都是该性能测试工具
③Locust:是基于Python的协程来设计的性能测试工具,需要编写Python代码来进行性能测试
④Gatling:是微服务架构下高性能的性能测试工具
第三步性能测试计划
①明确每个性能测试的任务开始的时间和结束的时间
②明确每个任务的具体负责人
③明确性能测试工具
第四步是测试设计与开发
使用选择好的工具或代码,来设计场景或编写代码来测试设计好的性能测试用例
第五步测试执行与管理,数据收集
①多次测试执行,收集每次性能测试的数据(系统资源:CPU和内存,数据库资源:连接数和IOPS,JVM资源:内存资源 响应时间:最大,最小,平均,中位数,90%,95%,99%,吞吐量)②数据收集后的数据可视化展示
最后是测试分析
实际收集的结果,来得到最终的结论:吞吐量,响应时间等等,与期望的目标进行对比,来判断是否达到目标
负载测试与压力测试有什么区别
负载测试
在被测系统上持续不断的增加压力,直到性能指标(响应时间等)超过预定指标或者某种资源(CPU&内存)使用已达到饱和状态。核心是找到系统的处理极限,为系统调优提供数据,从而达到了解系统性能的容量
目的:
1、验证服务被部署的系统出现资源瓶颈的时候,服务依然能够提供产品的特性
2、找到系统的最大饱和状态,或者是最大的处理极限,为系统后续的容量规划提供参考的数据
压力测试
该方法是指系统在一定饱和状态下,具体如CPU,内存等饱和使用的情况下,系统能够处理的会话能力,以及系统是否会出现错误,比如TimeOut,OOM,OverStackExpection(堆栈异常)。压力测试的特点:
- 检查系统在处于压力情况下时应用的性能表现
- 等价于负载测试,使系统的资源处于一个瓶颈的状态(建议CPU和内存在75%以上)
- 这种方式一般用于测试系统的稳定性
性能测试通过的判断依据是什么?
测试结果的期望值
性能测试的指标有哪些?
1、系统资源:CPU与内存
2、响应时间:最小,最大,平均,中位数,90%,95%,99%
3、吞吐量
4、IOPS,连接数
5、JVM的资源变化趋势关注
常用的性能测试有哪些以及它的区别
LoadRunner:HP公司研发的工业级别的性能测试工具,是收费的一款性能测试工具
JMeter:100%使用Java语言研发的性能测试工具,是开源的,互联网公司基本使用的都是该性能测试工具
Locust:是基于Python的协程来设计的性能测试工具,需要编写Python代码来进行性能测试
Gatling:是微服务架构下高性能的性能测试工具
iops,qps,tps,响应时间,吞吐率?
IOPS 该术语主要是针对数据库的,也就是每秒发⽣的输⼊/输出操作的次数,是数据传输的⼀个度量⽅法。⽤于磁盘的 读写,IOPS值的是每秒读和写的次数。
吞吐量 指的是操作的速度,也就是每秒操作数或者每秒业务数。或者也可以说单位时间内客户端请求的数量,直接体现系统的性能承载能力。
TPS 统计的是每秒处理的事务数,即系统每秒能够处理的事务的数量。
QPS 指的是 每秒查询率,如DB服务器在规定时间内处理流量多少的衡量标准。
资料获取方法
【留言777】
各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!
三连之后我会在评论区挨个私信发给你们~