性能测试(五)-locust实战
locust实战
一、locust概述
locust:是基于Python语言的性能测试工具,它是基于协程的思想来进行设计的。Python语言是没有办法利用多核的优势,所以Python为了解决这个问题,设计了协程,作为协程的任务,遇到IO堵塞就立刻切换。 什么是协程,协程简单的来说就是微线程。
线程解释:以a,b两个进程为例,当a进程进行访问的时候,出现堵塞,系统会让b执行,b堵塞,系统会让a执行,总之不会让系统CPU等资源空闲下来。
locust(蝗虫)应用:主要做负载测试和稳定性测试,也可以做压力测试。
二、locust的安装
由于locust是基于python语言,所以在使用前我们首先需要对python进行环境配置。
然后对,Locust来进行安装,安装的命令为:pip3 install locust
安装成功的命令为:locust
三、稳定性测试+压力测试实战
下面具体通过⼀个案例的代码来演示Locust的使用,通过编写的代码来模拟对目标服务进行用户行为的HTTP 的请求,通过控pip3 install locust制台的命令行以及WEB平台来查看它收集到的性能测试数据。涉及到的代码如下:
在@task里面,我们使用装饰器定义了微线程的用户请求,也就是模拟用户请求, 路由地址为/login的接口信息。wait_time是模拟每个用户耗时是在1至2.5秒之间。
在控制台里面执行如下命令,就会启动locust的程序,命令为:在控制台输入如下命令:locust -f locustfile.py
Number of total users to simulate:设置模拟的用户总数 Spawn rate (users spawned/second):每秒启动的用户虚拟数 Host :被测目标服务器的地址信息
填写了具体的内容后,然后点击Start swarming后,目标服务器就会收到大量的请求,点击后,界面展示的信息,具体如下:
注意:这里的request请求并不等同于设置模拟的用户总数,一个用户可以在该网址上发送很多请求。
其中:
Type:请求类型(也就是请求具体是哪个方法) Name:请求的路径地址信息 Requests:当前已完成的请求数量 Fails:当前失败的数量 Mediam(ms): 响应时间的中位数 90%ile (ms):90%的请求响应时间 Average (ms):平均响应时间 Min (ms):最⼩响应时间 Max (ms):最⼤响应时间 Average size (bytes):平均请求的数据量 Current RPS:每秒中处理请求的数量,也就是RPS
每秒请求的RPS越多,说明性能越好!
菜单栏具体为:
New test:点击该按钮可对模拟的总虚拟⽤户数和每秒启动的虚拟用户数进行编辑;
Statistics:聚合报告
Charts:测试结果变化趋势的曲线展示图,分别为每秒完成的请求数(RPS)、响应时间、不同时间的虚拟用户数;
Failures:失败请求的展示界面;
Exceptions:异常请求的展示界面;
Download Data:测试数据下载模块, 提供三种类型的CSV格式的下载,分别是:Statistics、responsetime、exceptions,同时还有一个测试报告:report
点击Charts查看测试结果的变化趋势图,具体如下:
在上图的趋势图中可以看到,启动10个用户需要2秒的时间,当然设置的是每秒启动的虚拟用户数是5。
假设设置模拟的用户总数为:2000,每秒启动的用户虚拟数为:50,显示图表如下:
点击download datas菜单栏:
可以下载相应的报告等,以下载第一个为例:
这里的报告比主界面显示的要详细的多。
四、稳定性测试+负载测试
下面具体通过⼀个案例的代码来演示Locust的使用,我们通过编写的代码来模拟对目标服务进行用户行为的HTTP 的请求,通过控制台的命令行以及WEB平台来查看它收集到的性能测试数据。涉及到的代码如下:
继续访问原网址:
假设设置模拟的用户总数为:2000,每秒启动的用户虚拟数为:50,显示图表如下:
😀结论:会发现,在同样的模拟程度下,主界面的右上角RPS,相比于压力测试的数量减少,错误率也提高了。