前言
一句话总结:本文是基于2.4.1的版本去学习locust,如果你想完全搞懂它,那么就从最新的产品文档从头到尾去研读一遍吧。
1、locust是什么?
1.1、相关资料
- 官网:www.locust.io/
- 产品文档:docs.locust.io/en/2.4.1/
- 源码:github.com/locustio/lo…
1.2、特征
Locust 是一种易于使用、可编写脚本、可扩展性能测试工具。基于requests库封装的性能工具,你可以随便自定义自己想要的功能,而不是局限于 UI ,搞性能就是用python,python能实现的都可以给它加上去,真的是无限扩展。这样的好处是:
- 对python能力得到了很好的锻炼
- 一切性能业务场景的设计,都是基于python脚本去实现,可以用python的各种第三方库,无限拓展
- 动态的web监控界面,同时也具备命令行无web界面的执行(用于持续集成中),命令行执行:locust -f .\per_01_test.py
- 可测一切协议、一切系统
- 对requests库的频繁使用,加深了理解,这个库是python接口自动化的基础,locust也可以理解是接口性能自动化测试框架。平时用接口自动化框架也是request去写的自己封装的,你封装的是实现业务,但无法执行并发操作,locust就是一款成熟的用于并发的接口自动化测试框架。httprunner就是一款成熟的不能并发的接口自动化测试框架,研究它就像研究一款优秀的接口自动化测试框架。
1.3、产生的背景
没有一个负载测试工具能够针对数据生成动态的实际负载,大多数页面都需要我们冗长的配置文件来声明测试,提供了一个python的性能测试框架,任由喜欢pthon的你去自由发挥,哦,你还可以自定义web界面的内容。 我喜欢它的两点:灵活、是python编写的框架
2、安装
- 配置好pthon、pycharm
- cmd窗口执行:pip3 install locust
- 验证:locust -V
就是这么简单,那么请问jmeter是怎么配置的?持续集成,直接拉去代码,安装个依赖库,直接直接执行,web界面动态显示执行结果,逼格、成就感有没有?
3、入门
3.1、编写python性能接口自动化测试脚本
脚本名:per_01_test.py
import json
from json import JSONDecodeError
from locust import task, HttpUser, between
class UserBehavior1(HttpUser):
"""登录
"""
host = "https://xxx.com" # 配置url
wait_time = between(2, 5) # 每个用户执行后等待2-5秒
@task # Locust 创建一个 greenlet(微线程),一个微线程可以跑很多协程
def test_login(self):
data = json.dumps({
"account": "4",
"password": "==",
})
headers = {"Content-Type": "application/json"}
response = self.client.post("/api/portal/login", data=data, headers=headers)
assert response.status_code == 200
3.2、运行pthon脚本
1、在脚本里面右键 open in > Terminal 打开命令行,输入:locust -f per_01_test.py,预期:
$ locust -f .\per_01_test.py [2021-10-27 20:18:38,307] Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces) [2021-10-27 20:18:38,307] xxx/INFO/locust.main: Starting Locust 2.4.0
2、浏览器输入:http://localhost:8089/,预期:
3、点击开始,预期
4、其他技术栈
(1)jmeter、loadrunner、locust各种工具的基本功能使用(一大堆xxx)
(2)docker实现分布式压测
(3)git、jenkins实现持续集成
(4)性能测试核心基础:测试层分析、APP转型性能测试原理、服务器端性能测试原理、性能分析思路、并发技术本质、全链路压测分析、web前端性能测试原理、常见接口加密方式、TPS/QPS/RT/吞吐量性能指标关系、jmeter\locust\loadrunner只是工具、webserver restful api实战详解、自定义协议分析
(5)web、app前端性能监控自动化平台构建
(6)性能测试脚本开发 参数化方式、参数化数据构造、关联原理、混合场景复杂脚本、参数化组件、关联组件、自定义检查点、事务/思考时间/集合点综合应用
(7)性能测试场景设计 复杂场景设计、压力曲线模型、基础性能场景、稳定性能场景、监控设计思路及技术图谱、业务模型构建、基于并发/吞吐量的场景设计、容量性能场景、异常性能场景、jmeter+docker分布式压测
(8)性能测试监控: 基本性能指标监控、linux常用监控工具解析、PHP代码级监控、java代码级监控之stack、数据库级监控及常用计数器解析、jmeter+influxob+grafana监控、操作系统监控及常用计数器、中间件监控指标及工具、网络监控等等
(9)性能测试结果分析: 基本性能指标测试结果分析、CPU/内存/磁盘/网络等性能分析、数据库常见性能指标分析、中间件常见性能指标分析、jvm核心原理、java各种线程状态码实现及解析、深入解析JVM垃圾回收算法及原理、
(10)瓶颈分析及定位: 前端性能分析及瓶颈定位、stack/heap深入解读瓶颈定位、CPU压力过大的瓶颈分析及定位、资源利用率过低的瓶颈分析及定位、内存泄漏原理及代码级瓶颈分析及定位、带宽消耗分析及网络瓶颈定位、数据库常见瓶颈分析、数据库慢查询定位、SQL语句执行计划分析及定位、SQL语句资源消耗细分解、磁盘10瓶颈分析及定位、java代码级剖析工具、Xhprof的Php代码瓶颈分析及定位、
(11)性能调优: JVM核心参数优化设置、中间件核心参数化设置、JVM垃圾回收算法选择及优化、JAVA代码优化解析、Mysql架构优化设计、Sql语句优化、mysql/schem设计优化、mysql常用存储引擎优化
(12)性能测试文档编写 性能测试需求分析报告、需求调研报告、技术方案、分析及调优报告、测试报告、项目总结
(13)平台化技术在性能领域的应用 docker+gitlab ci +jmeter性能测试 docker + jenkins + jmeter性能
-事必有法,然后有成- 最后祝大家早日达到测试的天花板!
以下是我收集到的比较好的学习教程资源,虽然不是什么很值钱的东西,如果你刚好需要,可以留言【777】直接拿走就好了