news 2026/5/3 11:19:48

python+locust电商全流程性能测试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
python+locust电商全流程性能测试

电商全流程为什么要做全链路性能测试?

1、发现和解决问题:全链路性能测试可以模拟实际的用户行为和场景,以及发现系统的瓶颈和潜在的问题,及时发现和解决问题。

2、预防系统崩溃:电商系统在高峰期可能会面临巨大的流量压力,如果系统没有经过充分的性能测试,可能会导致系统崩溃或性能下降,影响用户体验和满意度。

3、提升用户体验:通过全链路性能测试,可以确保系统的各个部分都能在高并发的情况下正常运行,从而提升用户体验和满意度。

4、数据安全:电商系统通常会涉及到大量的用户信息和交易数据,因此需要确保系统的安全性,全链路性能测试可以检查系统的安全性。

5、降低运营成本:通过对系统的性能进行测试,可以提前发现问题,避免在生产环境中出现故障,减少运维成本和损失。

python+locust全链路性能测试的代码

内容模块包括:用户登陆、商品上架、商品浏览、商品加入购物车、商品下单、商品付款生成订单、查看库存是否扣减

首先,我们需要安装Locust库:

pip install locustio

然后,我们可以创建一个 Locust 类,用于定义用户行为和请求负载

  1. from locust import HttpUser, task, between

  2. class WebsiteUser(HttpUser):

  3. wait_time = between(5, 15)

  4. # 用户登录

  5. @task

  6. def login(self):

  7. self.client.post("/login", {"username": "test", "password": "test"})

  8. # 商品上架

  9. @task

  10. def upload_product(self):

  11. self.client.post("/product/upload", {"name": "Test Product", "price": "10.00"})

  12. # 商品浏览

  13. @task

  14. def browse_product(self):

  15. self.client.get("/product/1")

  16. # 商品加入购物车

  17. @task

  18. def add_to_cart(self):

  19. self.client.post("/cart/add", {"product_id": "1"})

  20. # 商品下单

  21. @task

  22. def place_order(self):

  23. self.client.post("/order/place", {})

  24. # 商品付款生成订单

  25. @task

  26. def pay_for_order(self):

  27. self.client.post("/order/pay", {})

  28. # 查看库存是否扣减

  29. @task

  30. def check_stock(self):

  31. self.client.get("/stock/1")

在这个例子中,我们定义了多个任务,分别对应不同的用户行为。每个任务都会按照一定的频率被分配给模拟的用户去执行。wait_time 参数表示模拟用户在执行下一个任务之前需要等待的时间。

接下来,我们可以启动 Locust 负载测试:

locust -f locustfile.py --host=http://example.com

其中,locustfile.py 是包含上面的 Locust 类定义的 Python 文件,--host 参数指定了 Web 服务器的 URL。

最后,我们可以观察 Locust 的实时统计信息和报告,以了解系统的性能和压力情况。

请注意,这只是一个非常基础的示例,实际的全链路性能测试可能需要考虑更多的因素,例如网络延迟、数据存储和处理、API 调用等等。此外,还需要根据具体的业务需求和系统特点,定制合适的测试脚本和策略。

在locust脚本中如何设置多域名性能压测

在 Locust 中,可以使用多任务(multiple tasks)来对多个域名称进行性能压测。每个任务都可以指向不同的域名称,并按照一定比例进行分配。以下是一个示例:

  1. from locust import HttpUser, task, between

  2. class WebsiteUser(HttpUser):

  3. wait_time = between(5, 15)

  4. @task(1)

  5. def test_domain1(self):

  6. self.client.get("http://domain1.com")

  7. @task(1)

  8. def test_domain2(self):

  9. self.client.get("http://domain2.com")

在这个示例中,我们定义了两个任务:test_domain1 和 test_domain2。第一个任务的概率为 1,第二个任务的概率也为 1,这意味着每个用户都有 50% 的概率会执行第一个任务,也有 50% 的概率会执行第二个任务。这两个任务都将访问不同的域名称。

注意,这里的 HttpUser 类中的 client 对象需要显式指定完整的 URL,而不是只提供域名称。这是因为 Locust 使用 HTTP 客户端库,它需要知道完整的 URL 来发送请求

使用 weight 参数来调整每个任务的比例

例如,将 test_domain1 的权重设置为 2,则该任务会被分配更多的资源,而 test_domain2 将会被分配较少的资源。

  1. @task(2)

  2. def test_domain1(self):

  3. self.client.get("http://domain1.com")

  4. @task(1)

  5. def test_domain2(self):

  6. self.client.get("http://domain2.com")

这个配置会让 domain1 占用两倍的任务量,而 domain2 占用一半的任务量。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/3 12:08:08

Jmeter 性能压测-最大并发数估算

在进行性能测试方案设计前,需要对系统的并发数进行估算 1、平均并发数计算 平均并发数 (最大活跃用户数 * 访问页面所需时间) / 页面被持续访问时间 最大活跃用户数:不管采用什么公式计算,都只能使用最大活跃用户数进行计算,不…

作者头像 李华
网站建设 2026/5/3 8:00:21

计算机毕设java的企业项目管理系统 基于Java的企业项目管理平台的设计与实现 Java驱动的企业项目管理系统开发与应用

计算机毕设java的企业项目管理系统30ub39 (配套有源码 程序 mysql数据库 论文) 本套源码可以在文本联xi,先看具体系统功能演示视频领取,可分享源码参考。在当今数字化时代,企业项目管理的复杂性与日俱增,传统的管理方式…

作者头像 李华
网站建设 2026/5/3 10:44:15

使用Git进行版本控制:避免TensorFlow实验结果丢失

使用Git进行版本控制:避免TensorFlow实验结果丢失 在深度学习项目中,最令人沮丧的场景之一莫过于:两周前某个实验准确率达到了92%,但如今无论怎么调整参数、复现代码,都无法再次达到同样的性能。更糟糕的是&#xff0…

作者头像 李华
网站建设 2026/5/3 8:56:21

直接上干货!今天聊聊用TMS320F28335搞光伏并网逆变器的实战玩法。这玩意儿核心就两件事:Boost升压和全桥逆变,但DSP里头的门道可不少

TMS320F28335/DSP28335 光伏逆变器 本装置DC-DC采用Boost升压,DCAC采用单相全桥逆变电路结构,以TI公司的浮点数字信号控制器TMS320F28335 DSP为控制电路核心,采用规则采样法和DSP片内ePWM模块功能实现PWM和SPWM波。 PV功率点跟踪(…

作者头像 李华
网站建设 2026/5/1 10:51:20

C++ AIGC推理加速实战:5个关键步骤实现吞吐量翻倍

第一章:C AIGC推理吞吐量翻倍的核心挑战在现代人工智能生成内容(AIGC)系统中,C作为高性能推理后端的首选语言,承担着关键角色。然而,实现推理吞吐量翻倍并非简单优化循环即可达成,其背后涉及多维…

作者头像 李华
网站建设 2026/5/1 17:13:28

从零配置SSH密钥登录TensorFlow-v2.9深度学习环境

从零配置 SSH 密钥登录 TensorFlow-v2.9 深度学习环境 在现代 AI 开发中,远程 GPU 服务器已成为训练模型的标配。无论是使用云平台实例还是本地部署的计算节点,开发者几乎每天都要面对一个看似简单却影响深远的问题:如何安全、高效地接入这些…

作者头像 李华