快速入门Python性能测试框架Locust

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 快速入门Python性能测试框架Locust

目前做性能测试,比较简单常用的工具就是jmeter,但是对于一些复杂需求和场景需要编写java代码,如果只会Python能做性能测试吗,当然可以,今天就介绍一下Python强大的性能测试框架Locust。

Locust简介

一个基于python语言的开源性能测试工具,Locust直译为蝗虫,比喻他能产生蝗虫般成千上万的并发,内部使用requests完成http请求,使用协程完成并发请求,提供WebUI美观方便,支持分布式并发,当然也可以根据需要进行二次开发。

它的最重要优点是运行开销小,可以产生更高的并发请求。

更详细的介绍和使用可以查看官网介绍:https://locust.io/2f31caaa700bfb4ac565f6ef34544cc7.png

Github地址:https://github.com/locustio/locust

Locust安装

需要Python版本3.6及以上环境。

pip install locust

查看是否安装成功

locust -V

一个简单的Locust案例

新建一个用户行为类,定义任务集(用户行为),包含一个或多个请求。设置压测的基本参数,比如指向压测的host,等待时间等。

from locust import task, HttpUser, between

# 定义用户行为
class UserBehavior(HttpUser):
    host = "https://www.baidu.com" # 配置URL
    wait_time = between(1,2) # 用户执行每个task之后等待1-2秒
    # task装饰的方法会在Locust虚拟用户运行过程中被调用
    # 定义任务Locust发送请求是基于requests实现,请求的使用requests库一致
    @task
    def test_baidu(self):
        resp = self.client.get("/")
        return resp.status_code

当然,你也可以添加多个请求

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(1, 2)
    # wait_time = constant(3)  # 每次请求停顿时间 (思考时间)
    # 每个模拟用户开始执行,只执行一次
    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()参数用于指定该行为的执行权重。参数越大每次被虚拟用户执行的概率越高。
    @task(3)
    def view_item(self):
        for item_id in range(10):
            self.client.get(f"/item?id={item_id}", name="/item")

运行Locust

在命令行运行Locust脚本,在cmd下(win),进入到脚本目录,执行命令:

locust -f 文件名.py

设置测试

命令行运行之后,通过浏览器访问:http://localhost:8089(Locust启动网络监控器,默认为端口号为:8089)951a6deff2d30b1954f0131c94e0585a.png
出现如下界面启动成功,输入对应的虚拟用户数、用户启动速度,点击Start swarming,开始运行性能测试。047f578f1a4afdd5fad1d31ad091ebca.png

  • Number of users:设置模拟用户总数
  • Spawn rate(users started/second):每秒新增虚拟用户数
  • Host:目标服务器的ip端口或域名

测试监控字段说明

点击STOP,运行完成,查看测试统计如下,类似于jmeter中聚合报告的内容:ad24b01055bf271457ceda12d7f802d2.png

  • Type:请求的类型,例如GET/POST。
  • Name:请求的路径。这里为百度首页,即:https://www.baidu.com/
  • request:当前请求数量。
  • fails:当前请求失败的数量。
  • Median:50%的用户响应时间,单位毫秒
  • 90%ile:90%请求响应时间
  • Average:所有请求的平均响应时间,单位毫秒。
  • Min:最小响应时间,单位毫秒。
  • Max:最大响应时间,单位毫秒。
  • Average size:平均网络字节数
  • Current RPS:每秒请求书(TPS)。
  • Current Failures/s:每秒失败数。

响应时间和TPS曲线图

46345ad237ea49f73fbea3bc95e7b9d5.png

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
21天前
|
敏捷开发 Java 测试技术
探索软件测试中的自动化测试框架
在软件开发的生命周期中,软件测试扮演着至关重要的角色。随着技术的不断进步和软件项目的日益复杂化,传统的手动测试方法已经无法满足高效、准确的测试需求。自动化测试作为一种提高测试效率和质量的有效手段,越来越受到开发者和测试者的青睐。本文将深入探讨自动化测试框架的重要性、常见的自动化测试工具以及如何选择合适的自动化测试框架。
47 10
|
19天前
|
安全 关系型数据库 测试技术
学习Python Web开发的安全测试需要具备哪些知识?
学习Python Web开发的安全测试需要具备哪些知识?
29 4
|
23天前
|
设计模式 前端开发 JavaScript
自动化测试框架设计原则与最佳实践####
本文深入探讨了构建高效、可维护的自动化测试框架的核心原则与策略,旨在为软件测试工程师提供一套系统性的方法指南。通过分析常见误区,结合行业案例,阐述了如何根据项目特性定制自动化策略,优化测试流程,提升测试覆盖率与执行效率。 ####
47 6
|
23天前
|
人工智能 前端开发 测试技术
探索软件测试中的自动化框架选择与优化策略####
本文深入剖析了当前主流的自动化测试框架,通过对比分析各自的优势、局限性及适用场景,为读者提供了一套系统性的选择与优化指南。文章首先概述了自动化测试的重要性及其在软件开发生命周期中的位置,接着逐一探讨了Selenium、Appium、Cypress等热门框架的特点,并通过实际案例展示了如何根据项目需求灵活选用与配置框架,以提升测试效率和质量。最后,文章还分享了若干最佳实践和未来趋势预测,旨在帮助测试工程师更好地应对复杂多变的测试环境。 ####
42 4
|
23天前
|
监控 jenkins 测试技术
自动化测试框架的构建与实践
【10月更文挑战第40天】在软件开发周期中,测试环节扮演着至关重要的角色。本文将引导你了解如何构建一个高效的自动化测试框架,并深入探讨其设计原则、实现方法及维护策略。通过实际代码示例和清晰的步骤说明,我们将一起探索如何确保软件质量,同时提升开发效率。
35 1
|
29天前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
1月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
84 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
8天前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!
|
18天前
|
JavaScript 安全 编译器
TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法
本文深入探讨了 TypeScript 与 Jest 测试框架的结合使用,从 TypeScript 的测试需求出发,介绍了 Jest 的特点及其与 TypeScript 结合的优势,详细讲解了基本测试步骤、常见测试场景及异步操作测试方法,并通过实际案例展示了其在项目中的应用效果,旨在提升代码质量和开发效率。
33 6
|
13天前
|
机器学习/深度学习 人工智能 Java
探索软件测试中的自动化框架选择与优化策略####
本文深入探讨了在软件测试领域,面对众多自动化测试框架时,如何根据项目特性、团队技能及长远规划做出最佳选择,并进一步阐述了优化这些框架以提升测试效率与质量的策略。通过对比分析主流自动化测试框架的优劣,结合具体案例,本文旨在为测试团队提供一套实用的框架选型与优化指南。 ####