news 2026/4/18 3:19:03

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/4/12 16:33:50

GitHub Template仓库快速初始化TensorFlow项目

GitHub Template仓库快速初始化TensorFlow项目 在AI项目开发中,最让人头疼的往往不是模型设计,而是“环境配置地狱”——明明代码没问题,却因为依赖版本不一致、CUDA驱动缺失或Python包冲突导致无法运行。这种问题不仅浪费时间,更…

作者头像 李华
网站建设 2026/4/17 20:03:37

GitHub Releases发布TensorFlow项目正式版本

GitHub Releases发布TensorFlow项目正式版本 在深度学习项目开发中,最令人头疼的往往不是模型设计本身,而是环境配置——“为什么代码在我机器上跑得好好的,换台设备就报错?”这种问题几乎每个开发者都遇到过。更别提团队协作时&a…

作者头像 李华
网站建设 2026/3/14 7:51:02

GitHub上最受欢迎的TensorFlow-v2.9项目合集分享

GitHub上最受欢迎的TensorFlow-v2.9项目合集分享 在深度学习工程实践中,最让人头疼的往往不是模型设计本身,而是环境配置——“为什么代码在我机器上能跑,在你那边就报错?”这种问题几乎成了团队协作中的常态。依赖冲突、CUDA版本…

作者头像 李华
网站建设 2026/4/18 0:19:06

HTML页面集成TensorFlow.js:实现浏览器端模型推理

HTML页面集成TensorFlow.js:实现浏览器端模型推理 在智能应用日益普及的今天,用户对响应速度和隐私保护的要求越来越高。想象一下这样的场景:你打开一个网页,上传一张照片,几秒钟内就得到了AI生成的分类结果——整个过…

作者头像 李华
网站建设 2026/4/18 2:01:18

Docker安装Ubuntu镜像并部署TensorFlow-v2.9环境

Docker 安装 Ubuntu 镜像并部署 TensorFlow-v2.9 环境 在深度学习项目开发中,环境配置往往是第一道“拦路虎”。你有没有遇到过这样的场景:同事递来一份能跑通的代码,但你在本地却频频报错?问题往往不在于模型本身,而是…

作者头像 李华
网站建设 2026/4/17 7:33:46

【Clang 17与C++26深度解析】:掌握下一代C++特性实战技巧

第一章:Clang 17与C26发展现状概览随着C标准的持续演进,Clang作为LLVM项目中的核心编译器前端,始终在支持最新语言特性方面处于领先地位。Clang 17于2023年发布,进一步增强了对C23的完整支持,并开始实验性引入部分C26草…

作者头像 李华