当前位置: 首页 > article >正文

21100颗星的Locust性能测试工具到底有多牛!

一句话:用普通的Python编写可扩展的负载测试,就够了,懂得自然懂!

Locust是一个易于使用、可编写脚本和可扩展的性能测试工具。你在常规的Python代码中定义你的用户的行为,而不是受制于一个UI或领域特定的语言,只是假装是真正的代码。这使得Locust具有无限的可扩展性,对开发者非常友好。

用普通的Python编写用户测试方案

如果你想让你的用户进行循环,执行一些条件行为或做一些计算,你只需使用Python提供的常规编程结构。Locust在它自己的greenlet(一个轻量级的进程/程序)中运行每个用户。这使你能够像正常的(阻塞的)Python代码一样编写你的测试,而不是使用回调或其他机制。因为你的场景 “只是Python”,你可以使用你的常规IDE,并将你的测试作为常规代码进行版本控制(相对于其他一些使用XML或二进制格式的工具)。

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2)

    def on_start(self):
        self.client.post("/login", json={"username":"foo", "password":"bar"})

    @task
    def hello_world(self):
        self.client.get("/hello")
        self.client.get("/world")

    @task(3)
    def view_item(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")

分布式和可扩展性 - 支持数十万用户

Locust使运行分布在多台机器上的负载测试变得容易。它是基于事件的(使用gevent),这使得一个进程可以处理成千上万的并发用户。虽然可能有其他工具能够在给定的硬件上每秒做更多的请求,但每个Locust用户的低开销使它非常适用于测试高并发的工作负载。

Web-based UI

Locust有一个用户友好的网络界面,实时显示你的测试进度。你甚至可以在测试运行时改变负载。它也可以在没有用户界面的情况下运行,使其易于用于CI/CD测试。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

可以测试任何系统

尽管Locust主要工作在网站/服务上,但它几乎可以用来测试任何系统或协议。只要为你想测试的东西写一个客户端,或者探索一些由社区创建的客户端。

可扩展

Locust的代码库有意保持小规模,并不解决所有开箱即用的问题。相反,我们试图让它容易适应你可能遇到的任何情况,使用常规的Python代码。没有什么可以阻止你:

将实时报告数据发送到TimescaleDB并在Grafana中进行可视化处理
包裹调用以处理你的REST API的特殊性
使用一个完全自定义的负载形状/配置文件

如果想要了解够多,甚至完全掌握,不妨来看看下面教程,因为我敢笃定你终究用到那一天。

从零开始,打造高效可靠的Locust性能测试

在这里插入图片描述

从零开始,打造高效可靠的Locust性能测试

在这里插入图片描述

书到用书方恨少,加油吧,兄嘚~~~~


http://www.kler.cn/a/10594.html

相关文章:

  • 软件测试面试2024最新热点问题
  • const限定符-C语言中指针的“可变与不可变”法则
  • vue3项目中内嵌vuepress工程两种实现方式
  • PHP搭建开发环境(Windows系统)
  • 平替 Spring 正当时!Solon v3.0.3 发布
  • AI写作(四)预训练语言模型:开启 AI 写作新时代(4/10)
  • springboot 部署k8s(二)
  • Linux基础命令-seq打印数字序列
  • 数字化时代,如何通过社媒找到外贸客户?
  • 00后整顿职场,我直呼太卷了....
  • ChatGPT热潮下,因生成式AI失业的人出现,我成了第一批失业的人
  • SpringMVC03-文件上传、异常处理、拦截器
  • 在windows上安装部署cicd
  • 【C++学习笔记】十、C++设计模式-抽象工厂模式
  • 了解HTTP与HTTPS以及SSL
  • HBuilderX 开发工具
  • 设计模式之《责任链模式》
  • CentOS安装docker
  • 如何使用ChatGPT在1天内完成毕业论文
  • 停车场管理系统文件录入(C++版)
  • JAVA面试真题2023
  • 当深度学习遇上Web开发:Spring和OpenAI如何实现图片生成?
  • NumPy 秘籍中文第二版:五、音频和图像处理
  • k8s、docker关联目录占用空间太大
  • JUC编程之——线程的start方法及底层源码
  • 用Kamailio修复FreeSWITCH的sdp