首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Artillery - 负载测试平台

Artillery - 负载测试平台

作者头像
wangmcn
发布于 2025-02-18 14:03:40
发布于 2025-02-18 14:03:40
13000
代码可运行
举报
文章被收录于专栏:AllTests软件测试AllTests软件测试
运行总次数:0
代码可运行

1、前言

性能测试的核心目标,是验证系统在极端负载下的稳定性、响应速度与资源利用率。根据行业报告,随着云计算物联网人工智能技术的普及,企业对性能测试的需求已从传统的服务器扩展至移动端、分布式系统乃至云原生架构。然而,性能测试的复杂性也在增加,如何高效模拟大规模用户行为?如何快速生成可读性强的报告?如何灵活支持多协议与实时通信?这些问题催生了各类负载测试工具的迭代与创新。

本篇将介绍一款负载测试平台– Artillery,可进行分布式负载、可扩展、支持多种协议,并可以使用Playwright进行负载测试等特点。

2、简介

Artillery是一个可扩展、灵活和易于使用的平台,包含生产级负载测试所需的一切。

功能特点:

  • 分布式负载测试:Artillery可通过运行在你自己的AWS或Azure账户中的无服务器负载生成器来扩展负载测试规模,无需设置或管理长期运行的基础设施。
  • 对任何内容进行负载测试:对Web应用程序、HTTP APIGraphQL服务、WebSocket、Socket.IO、SOAP、gRPC、Kafka等进行负载测试。
  • 使用Playwright进行负载测试:通过Playwright代码启动数千个无头浏览器,了解你的Web应用程序如何处理高负载,以及对核心网络指标(Core Web Vitals)的影响。
  • 报告与协作:可视化测试结果、分享报告、分析性能趋势,并与团队协作。
  • 丰富的集成:20多个用于监控、可观测性(包括OpenTelemetry)、持续集成/持续交付(CI/CD)以及集成开发环境IDE,如 VS Code、WebStorm等)的集成和插件。
  • 可扩展且成本效益高:Artillery在你自己的AWS或Azure账户中执行测试,这比在托管平台上运行测试便宜几个数量级,它是无服务器的,因此你只需为使用的资源付费,并且无需管理基础设施。

官方网址:

https://www.artillery.io/

3、快速上手

1、安装Artillery CLI

通过npm安装Artillery

系统要求:

Artillery在WindowsMacOSLinux系统上运行,需要Node.js的最新LTS版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npm install -g artillery@latest

检查安装:

通过运行以下命令检查Artillery是否已安装。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
npx artillery dino

或者直接输入命令artillery。

还可以通过运行以下命令来检查已安装的Artillery版本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
artillery version

Artillery CLI安装完成后,开始第一个请求示例:

http://asciiart.artillery.io:8080/dino

如图所示,接口返回的是一个恐龙图案。

首先要创建Artillery测试脚本。

脚本内容:

测试脚本由两部分组成:配置(config)和场景(scenarios):

  • 配置部分定义了负载测试将如何运行,例如要测试的系统的URL、将生成多少负载、想要使用的任何插件等等。
  • 场景部分则用于定义创建的虚拟用户将执行的操作。一个场景通常是一系列步骤,描述了应用程序中的用户会话。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
config:
  target: http://asciiart.artillery.io:8080 # 所有请求都将使用该基本URL
  phases:
    - duration: 60
      arrivalRate: 5
      rampTo: 10
      name: Warm up the API # API 预热阶段 —— 此阶段将持续 60 秒。Artillery 开始时每秒创建 5 个新虚拟用户,到该阶段结束时逐渐增加到每秒 10 个新虚拟用户。
    - duration: 60
      arrivalRate: 10
      rampTo: 50
      name: Ramp up to peak load # 负载提升至峰值阶段 —— 此阶段同样持续 60 秒。Artillery 将继续把负载从每秒 10 个虚拟用户提升至每秒 50 个虚拟用户。
    - duration: 300
      arrivalRate: 50
      name: Sustained peak load # 持续峰值负载阶段 —— 此阶段将持续 300 秒。在此阶段,Artillery 每秒将创建 50 个新虚拟用户。
  plugins:
    ensure: {}
    apdex: {}
    metrics-by-endpoint: {}
  apdex:
    threshold: 100
  ensure:
    thresholds:
      - http.response_time.p99: 100
      - http.response_time.p95: 75
scenarios:
  - flow:
      - loop:
          - get:
              url: '/dino'
          - get:
              url: '/pony'
          - get:
              url: '/armadillo'
        count: 100 
        # 将这3个请求重复100

保存脚本,例如文件为asciiart-load-test.yml。

然后运行负载测试:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
artillery run asciiart-load-test.yml

测试结果实时打印出来。但是单从这些日志结果看不出来具体的性能走势,不易于分析与定位,接下来将要介绍Artillery Cloud的使用。

2、使用Artillery Cloud

Artillery Cloud是一款软件即服务(SaaS)平台,它提供了一个集中式的仪表盘,用于管理和分析负载测试结果。

功能特点:

  • 实时监控负载测试运行情况。
  • 查看负载测试运行生成的性能指标(响应时间、错误、自定义验证检查和自定义指标)。
  • 为特定应用程序的指标创建自定义图表。
  • 按项目或团队整理负载测试报告。
  • 与外部利益相关者共享测试结果。

使用你的GitHub账户登录,创建Artillery Cloud账户。

https://app.artillery.io

创建API密钥。

要使Artillery CLI能够向Artillery Cloud发送数据,需要一个API密钥。

登录仪表板,转至“设置”→“API密钥”,然后创建新的API密钥。

Artillery CLI将数据发送到Artillery Cloud。

Artillery Cloud的使用是可选的,你必须告知命令行界面你何时希望将测试结果发送到云端仪表盘。

要将一次测试运行记录到仪表盘,在使用 `artillery run` 命令时带上 `--record` 和 `--key` 标志。例如,如果你当前使用以下命令运行负载测试:

要启用云仪表板报告,请添加--record并使用--key设置API键:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
artillery run asciiart-load-test.yml --name "my-test-demo" --record --key $MY_ARTILLERY_CLOUD_KEY

负载测试执行完成,Artillery Cloud根据不同的仪表盘,可以查看当前测试的不同指标信息,便于分析与定位。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2025-02-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AllTests软件测试 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档