Artillery配置文件完全指南:YAML语法与高级特性解析
配置文件基础结构
Artillery的核心配置文件采用YAML格式,主要包含config和scenarios两大模块。config定义测试环境和全局参数,scenarios描述用户行为流程。基础框架如下:
config:
target: "测试目标URL"
phases:
- arrivalRate: 虚拟用户到达率
duration: 测试持续时间
engines:
测试引擎配置
scenarios:
- name: "场景名称"
flow:
- 测试步骤定义
核心配置示例
browser-load-test.yml展示了完整的浏览器测试配置,包含目标URL、测试阶段、Playwright引擎和场景定义:
config:
target: "https://www.artillery.io"
phases:
- arrivalRate: 1
duration: 10
engines:
playwright: {}
processor: ./flows.js
scenarios:
- name: "check_out_core_concepts_scenario"
engine: playwright
flowFunction: "checkOutArtilleryCoreConceptsFlow"
全局配置详解
目标与阶段设置
config.target指定测试的基础URL,支持HTTP、WebSocket等协议。测试阶段通过phases数组定义,常用参数包括:
arrivalRate: 每秒新增虚拟用户数duration: 阶段持续时间(秒)rampTo: 渐进式调整用户数
load-test-with-automated-checks.yml中的三阶段配置展示了真实场景的流量设计:
phases:
- duration: 60
arrivalRate: 1
rampTo: 5
name: Warm up phase
- duration: 60
arrivalRate: 5
rampTo: 10
name: Ramp up load
- duration: 30
arrivalRate: 10
rampTo: 30
name: Spike phase
插件系统集成
Artillery通过插件扩展功能,在config.plugins中声明。常用插件包括:
metrics-by-endpoint: 按API端点聚合指标expect: 响应验证与断言apdex: 用户体验评分
common-config.yml演示了插件配置方式:
config:
target: http://asciizoo.artillery.io:8080
plugins:
metrics-by-endpoint: {}
expect: {}
场景设计与流量控制
基础场景结构
每个场景定义一组用户行为,包含name标识和flow步骤序列。支持的HTTP操作包括get、post、put等,示例:
scenarios:
- name: "API功能测试"
flow:
- get:
url: "/dino"
- post:
url: "/submit"
json:
data: "测试数据"
循环与条件控制
使用loop实现重复操作,count指定循环次数。load-test-with-automated-checks.yml中的循环结构:
flow:
- loop:
- get: { url: "/dino" }
- get: { url: "/pony" }
- get: { url: "/armadillo" }
count: 100
高级特性应用
性能指标断言
通过ensure插件配置性能阈值,实现测试结果自动校验。支持响应时间、错误率等指标的百分位值断言:
config:
ensure:
thresholds:
- http.response_time.p99: 100 # 99%请求响应时间<100ms
- http.response_time.p95: 75 # 95%请求响应时间<75ms
测试引擎扩展
Artillery支持多引擎测试,如Playwright浏览器引擎、Socket.IO实时通信测试等。通过config.engines配置引擎参数,在场景中指定engine使用对应引擎:
config:
engines:
playwright: {}
scenarios:
- name: "浏览器测试场景"
engine: playwright
flowFunction: "自定义流程函数"
数据驱动测试
通过processor引入外部JavaScript文件,实现复杂逻辑和动态数据处理。browser-load-test.yml配置示例:
config:
processor: ./flows.js
scenarios:
- flowFunction: "checkOutArtilleryCoreConceptsFlow"
配置最佳实践
分环境配置管理
建议按环境拆分配置文件,如test.yml、staging.yml、prod.yml,通过命令行参数指定使用:
artillery run -e prod prod-test.yml
性能优化建议
- 合理设置
arrivalRate和duration,避免测试流量过大 - 使用
rampTo实现平滑流量增长,模拟真实用户行为 - 关键接口单独场景测试,便于问题定位
- 结合
metrics-by-endpoint插件分析各接口性能差异
配置文件示例库
Artillery提供丰富的配置示例,覆盖各类测试场景:
- 浏览器测试: browser-load-test.yml
- 多场景配置: common-config.yml
- CI/CD集成: cicd/
- WebSocket测试: http-socket.yml
- 自定义指标: custom-metrics.yml
场景权重配置
通过场景权重分配不同用户行为比例,模拟真实流量分布:
scenarios:
- name: "浏览场景"
flow: [...]
weight: 70 # 70%流量
- name: "购买场景"
flow: [...]
weight: 30 # 30%流量
故障排查与验证
配置文件编写完成后,建议先通过artillery run --dry-run验证语法正确性。常见问题处理:
- YAML格式错误:使用在线YAML验证工具检查缩进和语法
- 引擎依赖缺失:运行
npm install artillery-engine-xxx安装对应引擎 - 性能指标不达标:调整测试阶段参数或优化系统性能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



