You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Artillery中能否同时运行多个场景?多API并行负载测试咨询

并行/联合运行多API负载测试的方案

根据你手里的5份YAML测试文件,下面按主流负载测试工具给出具体实现方法:

针对k6工具

1. 并行运行多个YAML文件

直接通过命令行批量启动进程,或者写个简单的Shell脚本:

# 单次执行命令(bash环境)
k6 run api-test-1.yaml & k6 run api-test-2.yaml & k6 run api-test-3.yaml & k6 run api-test-4.yaml & k6 run api-test-5.yaml
wait

如果需要重复执行,写个Shell脚本更方便:

#!/bin/bash
# 遍历当前目录下所有YAML测试文件
for test_file in *.yaml; do
  echo "Starting test: $test_file"
  k6 run "$test_file" &
done
# 等待所有测试进程结束
wait
echo "All tests completed"

如果要统一查看汇总报告,可以给每个k6命令加上--out influxdb=http://localhost:8086/k6参数,将结果同步到InfluxDB,再用Grafana可视化汇总数据。

2. 合并成单一测试脚本

把5个API的负载逻辑整合到一个k6脚本(JS格式),通过**场景(scenarios)**配置不同API的负载规则,这样一次启动就能同时测试所有API:

import http from 'k6/http';
import { check } from 'k6';

// 配置每个API的独立负载场景
export const options = {
  scenarios: {
    api1_scenario: {
      executor: 'constant-vus',
      vus: 15,
      duration: '10m',
      exec: 'testAPI1',
    },
    api2_scenario: {
      executor: 'ramping-vus',
      startVUs: 5,
      stages: [
        { duration: '3m', target: 20 },
        { duration: '5m', target: 20 },
        { duration: '2m', target: 0 },
      ],
      exec: 'testAPI2',
    },
    // 依次添加api3、api4、api5的场景配置
  },
};

// API1的测试逻辑
export function testAPI1() {
  const res = http.get('https://your-api-1.com/endpoint');
  check(res, { 'API1 status 200': (r) => r.status === 200 });
}

// API2的测试逻辑
export function testAPI2() {
  const payload = JSON.stringify({ key: 'value' });
  const params = { headers: { 'Content-Type': 'application/json' } };
  const res = http.post('https://your-api-2.com/endpoint', payload, params);
  check(res, { 'API2 status 201': (r) => r.status === 201 });
}

// 补充api3、api4、api5的测试函数

针对JMeter工具

1. 并行运行多个YAML测试计划

用JMeter命令行批量启动:

jmeter -n -t api-test-1.yaml & jmeter -n -t api-test-2.yaml & jmeter -n -t api-test-3.yaml & jmeter -n -t api-test-4.yaml & jmeter -n -t api-test-5.yaml
wait

也可以通过Maven/Gradle的JMeter插件配置多测试计划,实现并行执行。

2. 合并成单一测试计划

打开JMeter,新建一个测试计划,为每个API添加独立的线程组,分别配置线程数、Ramp-Up时间、循环次数等负载参数,然后在对应线程组下添加取样器、断言、监听器等组件。运行这个合并后的测试计划,就能同时对所有API执行负载测试。

针对Locust工具

1. 并行运行多个YAML文件

通过命令行启动多个Locust进程:

locust -f api-test-1.yaml & locust -f api-test-2.yaml & locust -f api-test-3.yaml & locust -f api-test-4.yaml & locust -f api-test-5.yaml
wait

2. 合并成单一测试文件

编写一个Python格式的Locustfile,导入各API的测试逻辑,定义多个用户类:

from locust import HttpUser, task, between

class API1User(HttpUser):
    wait_time = between(1, 3)
    host = "https://your-api-1.com"

    @task
    def test_api1(self):
        response = self.client.get("/endpoint")
        response.assert_status_code(200)

class API2User(HttpUser):
    wait_time = between(2, 4)
    host = "https://your-api-2.com"

    @task
    def test_api2(self):
        payload = {"key": "value"}
        response = self.client.post("/endpoint", json=payload)
        response.assert_status_code(201)

# 添加API3、API4、API5的用户类

启动Locust时指定这个文件,就能同时模拟不同用户群体访问各个API。

通用注意事项

  • 并行测试前要确认本地/测试机的CPU、内存、网络带宽足够,避免资源瓶颈影响测试结果。
  • 合并测试时,确保每个API的负载配置相互独立,避免互相干扰。

内容的提问来源于stack exchange,提问作者isumit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 22:53:12