2026/4/18 15:53:12
网站建设
项目流程
建设部网站官网 下载规范,网站页面优化签象客,诏安县城乡建设局网站,线下营销活动有哪些Locust 是一个开源负载测试工具#xff0c;通过 Python 形式的代码构造来定义用户行为#xff0c;而不是与混乱的 UI 和臃肿的 XML 配置纠缠在一起。 先决条件
Python#xff08; pip 用于安装 locust 包#xff09;
任何模拟负载测试的 HTTP 服务。#xff08;我们将创…Locust 是一个开源负载测试工具通过 Python 形式的代码构造来定义用户行为而不是与混乱的 UI 和臃肿的 XML 配置纠缠在一起。先决条件Python pip 用于安装 locust 包任何模拟负载测试的 HTTP 服务。我们将创建一个小型 Spring Boot HTTP 服务作为本博客演示的一部分演示 Spring Boot HTTP 服务我们通过 Spring Boot 创建了一个简单的 REST API如下所示它有一个简单的端点/greet它不执行 CPU 或 I/O 密集型工作而只是返回一个字符串。该服务在端口 8080 上本地运行我们将在该端口上执行负载测试。示例 Spring Boot HTTP 代码import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;SpringBootApplicationpublic class SpringBootLoadServiceApplication {public static void main(String[] args) {SpringApplication.run(SpringBootLoadServiceApplication.class, args);}}RestControllerclass RandomResource {GetMapping(value /greet)public String greet() {return Locust Load Test.;}}Locust设置像往常一样我们将创建并激活虚拟环境以避免将来使用时出现包冲突。python -m venv virtualenv激活虚拟环境source virtualenv/Scripts/activate.bat设置虚拟环境后我们将使用 pip 仅安装 locust 所需的软件包如下所示pip install locust安装locust后验证以下是否显示版本以证明安装成功locust -V如果如下所示我们就可以开始使用 Locust 进行负载测试了。Locust版本验证设置 Locust 脚本文件现在我们将编写一个 Python 代码springboot_locust.py来模拟负载测试该测试将到达我们的本地端点如下所示。代码片段from locust import HttpUser, task, between #this is self-explanatory we importing required classes, function from locust module.class SpringBootUser(HttpUser): #Simulates a single Real-world User. HttpUser class is extended so we provide what task the user will do.this wont take effect in our scenario, as this attribute is optional and specify wait time randomly picked between parameters passed (1-3 seconds) between multiple task executed. We have only one task executedwait_time between(1, 3)This is main core functionality of locust. task are treated as a singel http request made.We can multiple have task. In below we are going to hit /greet endpoint on our localhosttaskdef hello_world(self):self.client.get(/greet)添加注释以确保代码是不言自明的。我们只是定义一个任务一个任务是一个微线程的单次执行。我们也可以有多个任务以模拟流程和权重来确定它们的执行顺序否则它们将被随机选取。现在我们将开始 Locust 测试通过执行以下命令来启动 Locust Web UIlocust -f springboot_locust.py默认情况下它将在端口 8089 上启动 Locust Web UI 并显示以下屏幕注意我们不会看到太多的峰值因为该服务不执行任何 I/O 或 CPU 密集型工作。但想法是看到一个小峰值来验证我们的服务负载测试。但是我们可以添加 I/O 部分以基于对本文的响应调用某些 HTTP 或 DB 的形式:)执行负载测试我们将执行 2 项测试一项有 100 个用户另一项有 1000 个用户。我们将每秒生成 5 个和 20 个用户直到分别达到 100 和 1000 个最终用户目标。100 个用户的负载每秒生成 5 个用户我们将在填充以下值后开始 SwarmingLocust 扩展到 100 个用户每个用户向 API 发送一个请求从下面的图表中我们可以看到随着负载增加到 100 个用户这没有什么区别其中平均响应时间保持在 2 毫秒而 95% 百分位响应时间约为 3 毫秒。因此我们可以看到在处理 100 个用户请求时用户没有出现任何峰值。每个测试都有不同的选项卡如下所示用于显示测试的实时结果并且大多数选项卡都是不言自明的。主要使用统计、图表实时结果和下载数据用于共享测试后结果。每秒生成 20 个用户负载 1000 个用户我们现在将模拟 1000 个用户测试但每秒生成 20 个用户以获得用于博客目的的正确图表并查看服务的反应现在我们看到有 1000 个用户正在使用我们的 API在查看下面的图表之前我们会让服务承受几分钟的压力以扩展到 1,000 个用户。从下面的图表中我们可以看到当我们的服务负载以用户增加和请求触发的形式增加时Locust如何捕获响应时间。随着 API 负载的增加我们看到中位数以及 95% 百分位响应时间有所增加。下面的公告显示了用户扩展所增加的时间对于少于400 个运行的用户我们的中值响应时间为2 毫秒95% 百分位数响应为5 毫秒。对于少于450-675 名运行的用户我们的中值响应时间为3 毫秒95% 百分位数响应为7 毫秒。对于少于750-1000 名运行的用户我们的中位响应时间为4-5 毫秒95% 百分位数响应为10-12 毫秒*。因此我们可以看到 Locust 如何提供实时图表来捕获服务的响应时间这些服务根据负载生成的行为有所不同。显然上述服务是一个虚拟服务但在现实场景中它将有助于识别在负载下行为异常的服务。然后可以通过分析工具进行传递以便根据 locust 报告进行进一步分析。可以在此处找到相同负载测试的报告。显然这只是一个主要用例但Locust的用途远不止于此。上述内容可以帮助您在本地进行基本的单元负载测试然后再在集成环境中进行测试。除此之外还有许多可用的自定义项这些自定义项在文档中指定下面的链接也是如此。相关链接Locust官方网站https://locust.io/Locust文档https://docs.locust.io/en/stable/用于博客的完整源代码https://github.com/cycorax12/locust-load-test感谢每一个认真阅读我文章的人礼尚往来总是要有的虽然不是什么很值钱的东西如果你用得到的话可以直接拿走这些资料对于【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴上万个测试工程师们走过最艰难的路程希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取