【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 性能测试指北

你可能感兴趣的:(python,开发语言,Locust,Jmeter,性能测试,压力测试,测试工具)