如何在loadimpact / k6中通过单个命令执行多个k6脚本?

时间:2018-03-05 15:13:27

标签: performance-testing load-testing k6

正如官方loadimpact / k6文档所示,我们可以按如下方式执行单个k6脚本:

k6 run ../tests/

如何在一次运行中执行多个脚本文件?特别是驻留在给定本地目录中的所有脚本。类似的东西:

.table-style{
    align: left;
    valign: middle;
}

这是否支持k6开箱即用?

3 个答案:

答案 0 :(得分:2)

目前,k6只接受一个脚本文件,并运行导出的默认函数。

import {sleep} from "k6";
import http from "k6/http";

export default function() {
    http.get("http://test.loadimpact.com/");
    sleep(2);
}

也许,您可以通过使用模块来实现目标。 将逻辑拆分为模块有助于组织代码,并允许在不同的测试中重用常见用例。

查看k6 Modules documentation

import {sleep} from "k6";
import mainPageUserFlow from "../cases/main-page";
import billingUserFlow from "../cases/billing";

export default function() {
    mainPageUserFlow();
    billingUserFlow();
    sleep(2);
}

此外,您还可以更改脚本上不同虚拟用户的执行,如https://community.k6.io/t/how-to-distribute-vus-across-different-scenarios-with-k6/49

答案 1 :(得分:2)

根据您的设置,您可以通过几种不同的方式解决此问题。一个非常直接的方法是在bash中分叉k6 run命令。

version: '3'
services:
  k6_test:
    image: loadimpact/k6
    container_name: test_k6
    volumes:
       - ./:/specs
    command: run /tests/test_spec.js
    ports:
       - "6565:6565"

  k6_test2:
    image: loadimpact/k6
    container_name: test2_k6
    volumes:
       - ./:/specs
    command: run /tests/test2_spec.js
    ports:
       - "6566:6566"

您可以轻松编写一些更复杂的bash脚本来读取/ tests /目录中的所有内容并像这样运行它们。我选择这样做,因为我有一些自定义输入参数给每个特定的测试。

另一种方法是编写一个docker compose脚本来完成同样的事情。这将为每个测试启动一个docker容器并在那里运行它。 k6 docker镜像只不过是添加了k6二进制文件的小型linux映像。

{{1}}

这两种方法都允许您在CI环境和本地计算机上同时运行多个测试。

答案 2 :(得分:0)

使用&将并行运行测试,如果要顺序运行并检索合并的结果,我建议:

exit_c=0 
(
  k6 run script_1.js || exit_c=$?
  k6 run script_2.js || exit_c=$?
  ...
  k6 run script_n.js || exit_c=$?
  exit $exit_c
)