1、前言
性能测试的核心目标,是验证系统在极端负载下的稳定性、响应速度与资源利用率。根据行业报告,随着云计算、物联网及人工智能技术的普及,企业对性能测试的需求已从传统的服务器扩展至移动端、分布式系统乃至云原生架构。然而,性能测试的复杂性也在增加,如何高效模拟大规模用户行为?如何快速生成可读性强的报告?如何灵活支持多协议与实时通信?这些问题催生了各类负载测试工具的迭代与创新。
本篇将介绍一款负载测试平台– Artillery,可进行分布式负载、可扩展、支持多种协议,并可以使用Playwright进行负载测试等特点。
2、简介
Artillery是一个可扩展、灵活和易于使用的平台,包含生产级负载测试所需的一切。
功能特点:
官方网址:
https://www.artillery.io/
3、快速上手
1、安装Artillery CLI
通过npm安装Artillery
系统要求:
Artillery在Windows、MacOS和Linux系统上运行,需要Node.js的最新LTS版本。
npm install -g artillery@latest
检查安装:
通过运行以下命令检查Artillery是否已安装。
npx artillery dino
或者直接输入命令artillery。
还可以通过运行以下命令来检查已安装的Artillery版本。
artillery version
Artillery CLI安装完成后,开始第一个请求示例:
http://asciiart.artillery.io:8080/dino
如图所示,接口返回的是一个恐龙图案。
首先要创建Artillery测试脚本。
脚本内容:
测试脚本由两部分组成:配置(config)和场景(scenarios):
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。
然后运行负载测试:
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键:
artillery run asciiart-load-test.yml --name "my-test-demo" --record --key $MY_ARTILLERY_CLOUD_KEY
负载测试执行完成,Artillery Cloud根据不同的仪表盘,可以查看当前测试的不同指标信息,便于分析与定位。
本文分享自 AllTests软件测试 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!