python_locust_基础概念

一、官网地址:https://www.locust.io/
二、Doc文档:https://docs.locust.io/en/stable/
三、Github文档及示例:https://github.com/locustio/locust/tree/master/docs

四、要把性能测试搞好,需要具备哪些技能?
(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前端性能监控自动化平台构建
(7)性能测试脚本开发
参数化方式、参数化数据构造、关联原理、混合场景复杂脚本、参数化组件、关联组件、自定义检查点、事务/思考时间/集合点综合应用
(8)性能测试场景设计
复杂场景设计、压力曲线模型、基础性能场景、稳定性能场景、监控设计思路及技术图谱、业务模型构建、基于并发/吞吐量的场景设计、容量性能场景、异常性能场景、jmeter+docker分布式压测
(9)性能测试监控:
基本性能指标监控、linux常用监控工具解析、PHP代码级监控、java代码级监控之stack、数据库级监控及常用计数器解析、jmeter+influxob+grafana监控、操作系统监控及常用计数器、中间件监控指标及工具、网络监控等等
(10)性能测试结果分析:
基本性能指标测试结果分析、CPU/内存/磁盘/网络等性能分析、数据库常见性能指标分析、中间件常见性能指标分析、jvm核心原理、java各种线程状态码实现及解析、深入解析JVM垃圾回收算法及原理、
(11)瓶颈分析及定位:
前端性能分析及瓶颈定位、stack/heap深入解读瓶颈定位、CPU压力过大的瓶颈分析及定位、资源利用率过低的瓶颈分析及定位、内存泄漏原理及代码级瓶颈分析及定位、带宽消耗分析及网络瓶颈定位、数据库常见瓶颈分析、数据库慢查询定位、SQL语句执行计划分析及定位、SQL语句资源消耗细分解、磁盘10瓶颈分析及定位、java代码级剖析工具、Xhprof的Php代码瓶颈分析及定位、
(12)性能调优:
JVM核心参数优化设置、中间件核心参数化设置、JVM垃圾回收算法选择及优化、JAVA代码优化解析、Mysql架构优化设计、Sql语句优化、mysql/schem设计优化、mysql常用存储引擎优化
(13)性能测试文档编写
性能测试需求分析报告、需求调研报告、技术方案、分析及调优报告、测试报告、项目总结
(14)平台化技术在性能领域的应用
docker+gitlab ci +jmeter性能测试
docker + jenkins + jmeter性能测试

【我们在性能这条路上,走了多远???】
在这里插入图片描述

(1)locust是什么?
Locust是一个简单易用的分布式用户负载测试工具。它用于web站点(或其他系统)的负载测试,并计算一个系统可以处理多少并发用户。

(2)核心类httpuser实现了什么?
HttpUser是最常用的User。它添加了一个client用于发出HTTP请求的属性。client是HttpSession的实例,HttpSession是 requests.Session
的子类,HttpSession将请求结果添加到locust的报告(成功、失败,响应时间)。HttpSession包含了所有的HTTP方法方法:get, post,put,像requests.Session,会保留cookie。如下:

from locust import HttpUser, task, between
class MyUser(HttpUser):
    wait_time = between(5, 15)
    @task(4)
    def index(self):
        self.client.get("/")

response = self.client.post("/login", {
    
    "username":"testuser", "password":"secret"})
print("Response status code:", response.status_code)
print("Response text:", response.text)

(3)它能解决测试的什么问题?
在测试中,一群locusts(蝗虫)会攻击你的网站。每个locusts (或者测试用户)的行为由您定义,集群过程由web UI实时监控。这将帮助你在允许实际用户使用之前测试并确定代码中的瓶颈。
Locust完全基于事件,因此可以在一台计算机上支持数千个并发用户。与许多其他基于事件的应用程序不同,它不使用回调。相反,它通过gevent(gevent 是一个python网络框架,使用greenlet提供异步API,基于libevent ,它为各种并发和网络相关的任务提供了整洁的API.)使用轻量级进程。每个聚集站点上的蝗虫实际上是在它自己的进程中运行的(正确的说是greenlet)。这允许你使用Python编写非常有表现力的场景,而不用回调使代码复杂化。
(4)locust基于设么诞生?相对于jmeter解决了什么痛点?
Locust 的诞生是因为我们厌倦了现有的解决方案。对我来说,他们都没有解决正确的问题,没有抓住重点。我们已经尝试了Apache JMeter和Tsung。
这两种工具都可以使用;我们已经在工作中多次使用了前一种方法。JMeter附带UI界面,您可能会认为这是一件好事。但是您很快就会意识到,通过某些点击界面“编码”你的测试方案是一种陷阱。其次,JMeter是线程绑定的。这意味着对于要模拟的每个用户,都需要一个单独的线程。不用说,在一台机器上对成千上万的用户进行基准测试是不可行的
(5)与jmeter有什么不同?
压测工具核心能力:TPS能力、并发能力
TPS (transaction per second)代表每秒执行的事务数量
CPU(central processing unit)中央处理器作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

总结点:
a、Jmeter基于多线程,Locust基于协程,相比来说,Locust用更少的并发就能达到相同的TPS
b、随着并发增大,响应时间变大,TPS每秒处理事务增多,不懂不懂,,,

Guess you like

Origin blog.csdn.net/weixin_45451320/article/details/117013046