【Python】万字长文,Locust 性能测试指北

Locust

Locust 是比较常见的性能测试工具,底层基于 gevent官方介绍 它是一款易于使用、可编写脚本且可扩展的性能测试工具,可以让我们使用常规 Python 代码定义用户的行为,而不必陷入 UI 或限制性领域特定语言中.

Locust具有无限的可扩展性(只要提供客户端python 代码,适用于所有协议的性能测试).

本文为开发性能自动化对比平台时学习相关内容的记录整理。

我们为什么选择locust

特点说明
开源免费Locust是一个开源项目,无需支付费用,可以自由使用和定制。
易于学习使用使用Python编写,学习路线平缓,拥有丰富的库和社区支持。
可扩展性灵活性高可以根据需要定制测试,以便更准确地评估应用程序的性能。第三方插件较多、 易于扩展。
实时统计提供实时统计功能和Web界面,方便监控和分析测试结果。
易于集成可以轻松地与持续集成和持续部署工具集成,自动运行性能测试。
适用大规模的性能测试支持分布式,可以轻松地在多台机器上运行测试,以模拟大量用户。这使得它非常适合进行大规模的性能测试。

Locust的核心部件

Master节点

负责协调和管理整个测试过程,包括启动和停止测试、分发任务、收集和汇总测试结果等。

Worker节点

实际执行测试任务的节点,根据Master节点分配的任务进行模拟用户行为。

Web UI

提供可视化的测试界面,方便用户查看测试结果、监控测试进度等。

测试脚本(Load Test Script)

测试脚本,定义模拟用户行为的逻辑和参数,由Worker节点执行。

Locust内部运行调用链路

时序图如下:

  • 在测试启动时,Runner 类的 start() 方法会被调用,该方法会依次调用 EventHook 类的 fire() 方法,触发测试开始事件。
  • Runner 类会根据配置创建 Environment 类的实例,并将其作为参数传递给 User 类和 TaskSet 类的构造函数,同时将 User 类和 TaskSet 类添加到 Environment 类的 user_classes 属性中。
  • 在测试运行期间,Runner 类会启动多个用户进程,每个用户进程都会创建一个 User 类的实例,并调用 User 类的 run() 方法,该方法会调用 TaskSet 类的 run() 方法,从而执行用户的任务。
  • 在任务执行期间,User 类和 TaskSet 类会使用 Environment 类的 client 属性来发送请求,并使用 Environment 类的 stats 属性来记录统计信息。
  • 在任务执行完成后,TaskSet 类的 run() 方法会返回,User 类的 run() 方法会进入等待状态,等待其他用户完成任务。
  • 在测试结束时,Runner 类的 stop() 方法会被调用,该方法会依次调用 EventHook 类的 fire() 方法,触发测试结束事件。
Runner EventHook Environment User TaskSet start() 1 fire() 2 create Environment and add user classes 3 start users and run tasks 4 run() 5 send requests and record statistics 6 wait for other users to finish 7 return 8 stop users and tasks 9 stop() 10 fire() 11 Runner EventHook Environment User TaskSet

注:fire() 方法是 Locust 中的 EventHook 类中的一个方法,用于触发事件。在 Locust 的测试生命周期中,有多个事件可以被触发,例如测试开始、测试结束、用户启动、用户完成任务等。当这些事件发生时,EventHook 类会调用 fire() 方法,将事件传递给所有注册了该事件的回调函数。

更多内容点击查看原文:
【Python】万字长文,Locust 性能测试指北

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值