菜单
开源

选项参考

选项定义了测试运行的行为。大多数选项可以在多个位置传递。如果在多个位置定义了同一个选项,k6 将根据优先顺序选择最高优先级的那个值。

选项快速参考

每个选项都有其单独部分中详细的参考文档。

选项描述
AddressREST API 服务器地址
Batchhttp.batch() 调用最大并行连接数
Batch per host同一 host 的 http.batch() 调用最大并行连接数
Blacklist IP从调用中拉黑 IP 范围
Block hostnames阻止对特定 hostnames 的任何请求
Compatibility mode支持以不同 ECMAScript 模式运行脚本
Config指定 JSON 格式的配置文件,用于读取选项值
Console outputconsole 方法记录的日志重定向到提供的输出文件
Discard response bodies指定是否丢弃响应体
DNS配置 DNS 解析行为
Duration指定测试运行的总持续时间的字符串;与 vus 选项一起使用时,它是具有constant VUs executor的单个场景的快捷方式
Execution segment将执行限制为总测试的一部分
Exit on running当测试达到 running 状态时退出
Cloud options用于设置云参数配置选项的对象。
Hosts包含 DNS 解析覆盖的对象
HTTP debug记录所有 HTTP 请求和响应
Include system Env vars将真实的系统环境变量传递给运行时
Insecure skip TLS verify一个布尔值,指定 k6 是否应该忽略代码建立的连接的 TLS 验证
Iterations一个数字,指定要执行的脚本的总迭代次数;与 vus 选项一起使用时,它是具有shared iterations executor的单个场景的快捷方式
Linger一个布尔值,指定 k6 是否在测试运行完成后继续保持
Local IPsVUs 将从中发出请求的本地 IP、IP 范围和 CIDR 列表
Log output关于 k6 日志发送位置的配置
LogFormat指定日志输出的格式
Max redirectsk6 将遵循的最大 HTTP 重定向次数
Minimum iteration duration指定每次执行的最小持续时间
No color一个布尔值,指定是否禁用彩色输出
No connection reuse一个布尔值,指定 k6 是否禁用保持连接
No cookies reset禁用在每次 VU 迭代后重置 cookie jar
No summary禁用测试结束摘要
No setup一个布尔值,指定是否应该运行 setup() 函数
No teardown一个布尔值,指定是否应该运行 teardown() 函数
No thresholds禁用阈值执行
No usage report一个布尔值,指定 k6 是否应该发送使用报告
No VU connection reuse一个布尔值,指定 k6 是否重用 TCP 连接
Paused一个布尔值,指定测试是否应该以暂停状态开始
Profiling Enabled启用 profiling 端点
Quiet一个布尔值,指定是否在控制台显示进度更新
结果输出Specify the results output
RPS全局每秒最大请求数(不推荐,建议使用arrival-rate executors代替)
场景定义高级执行场景
Secret Sources指定用于 k6 内部的秘密来源。
Setup timeout指定 setup() 函数允许运行的最长时间
Show logs一个布尔值,指定是否将云日志打印到终端
Stages指定在特定时期内增加或减少 VU 目标数量的对象列表;这是具有ramping VUs executor的单个场景的快捷选项
Supply environment variable使用 VAR=value 添加/覆盖环境变量
System tags指定哪些系统标签将包含在收集的指标中
Summary export测试结束摘要报告输出到 JSON 文件(不推荐,建议使用handleSummary()代替)
Summary mode定义测试结束摘要的详细程度
Summary trend stats定义测试结束摘要中趋势指标的统计信息
Summary time unit定义测试结束摘要中*所有*时间值使用的时间单位
Tags指定应在所有指标中设置的测试范围标签
Teardown timeout指定 teardown() 函数允许运行的最长时间
阈值配置测试成功与否的条件
Throw一个布尔值,指定是否在失败的 HTTP 请求时抛出错误
TLS authTLS 客户端证书配置对象列表
TLS cipher suites允许与服务器进行 SSL/TLS 交互时使用的加密套件列表
TLS version表示允许使用的唯一 SSL/TLS 版本的字符串或对象
Traces output关于 k6 追踪数据发送位置的配置
User agent一个字符串,指定发送 HTTP 请求时使用的 User-Agent 请求头的值
Verbose一个布尔值,指定是否启用详细日志记录
VUs一个数字,指定同时运行的 VU 数量

以下部分详细介绍了所有可以在脚本中指定的可用选项。

它还记录了运行 k6 run ...k6 cloud run ... 时等效的命令行标志、环境变量或选项,你可以使用它们来覆盖代码中指定的选项。

Address

API 服务器的地址。运行 k6 run 脚本时,会启动一个带有 REST API 的 HTTP 服务器,可用于控制某些测试执行参数。默认情况下,服务器监听 localhost:6565。阅读更多关于 k6 REST API 的内容。

EnvCLI代码 / 配置文件默认值
不适用--address, -a不适用localhost:6565
bash
k6 run --address "localhost:3000" script.js

Batch

VU 中 http.batch() 调用总共可以建立的最大同时/并行连接数。如果你有一个 batch() 调用向其提供了 20 个 URL 并且 --batch 设置为 15,则 VU 将立即并行发出 15 个请求,并将其余请求排队,一旦之前的请求完成并有空闲插槽,则立即执行它们。在 k6 runk6 cloud run 命令中均可用。

EnvCLI代码 / 配置文件默认值
K6_BATCH--batchbatch20
JavaScript
export const options = {
  batch: 15,
};

Batch per host

VU 中 http.batch() 调用对于同一 host 可以建立的最大同时/并行连接数。如果你有一个 batch() 调用向 *同一* hostname 提供了 20 个 URL 并且 --batch-per-host 设置为 5,则 VU 将立即并行发出 5 个请求,并将其余请求排队,一旦之前的请求完成并有空闲插槽,则立即执行它们。这不会并行运行超过 batch 值的请求。在 k6 runk6 cloud run 命令中均可用。

EnvCLI代码 / 配置文件默认值
K6_BATCH_PER_HOST--batch-per-hostbatchPerHost6
JavaScript
export const options = {
  batchPerHost: 5,
};

Blacklist IP

从调用中拉黑 IP 范围。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_BLACKLIST_IPS--blacklist-ipblacklistIPsnull
JavaScript
export const options = {
  blacklistIPs: ['10.0.0.0/8'],
};

Block hostnames

根据 glob 匹配字符串列表阻止 hostname。模式匹配字符串可以在开头包含一个单独的 *,例如 *.example.com,它将匹配其前面的任何内容,例如 test.example.comtest.test.example.com。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_BLOCK_HOSTNAMES--block-hostnamesblockHostnamesnull
JavaScript
export const options = {
  blockHostnames: ['test.k6.io', '*.example.com'],
};
bash
k6 run --block-hostnames="test.k6.io,*.example.com" script.js

Compatibility mode

支持以不同的 ECMAScript 兼容模式运行脚本。

阅读关于JavaScript 兼容模式文档中的不同模式。

EnvCLI代码 / 配置文件默认值
K6_COMPATIBILITY_MODE--compatibility-mode不适用"extended"
bash
k6 run --compatibility-mode=base script.js

Config

指定 JSON 格式的配置文件。如果未指定配置文件,k6 将在操作系统常规配置目录中的 k6/ 目录下查找 config.json。不同操作系统上默认的配置位置如下:

操作系统默认配置路径
Unix-based${HOME}/.config/k6/config.json
macOS${HOME}/Library/Application Support/k6/config.json
Windows%AppData%/k6/config.json

k6 runk6 cloud run 命令中可用

EnvCLI代码 / 配置文件默认值
不适用--config <path>, -c <path>不适用null

注意

在 k6 Cloud 中运行测试并使用非默认的 config.json 文件时,请在配置文件中指定云 token 进行身份验证。

Console output

将由 console 方法记录的日志重定向到提供的输出文件。在 k6 cloud runk6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_CONSOLE_OUTPUT--console-output不适用null
bash
k6 run --console-output "loadtest.log" script.js

Discard response bodies

通过将所有 HTTP 请求的 responseType 默认值更改为 none,指定是否应丢弃响应体。强烈建议将其设置为 true,然后仅对于脚本需要响应体的请求将 responseType 设置为 textbinary。这样可以减少所需的内存量和 GC 次数,从而减轻测试机器的负载,并可能产生更可靠的测试结果。

EnvCLI代码 / 配置文件默认值
K6_DISCARD_RESPONSE_BODIES--discard-response-bodiesdiscardResponseBodiesfalse
JavaScript
export const options = {
  discardResponseBodies: true,
};

DNS

这是一个复合选项,通过配置缓存过期时间 (TTL)、IP 选择策略和 IP 版本偏好来控制 DNS 解析行为。目前 k6 不读取 DNS 记录中的 TTL 字段,因此 ttl 选项允许手动控制此行为,尽管在测试运行期间是一个固定值。

请注意,DNS 解析仅在新 HTTP 连接上完成,默认情况下,如果支持 HTTP keep-alive,k6 将尝试重用连接。要强制特定的 DNS 行为,请考虑在测试中启用 noConnectionReuse 选项。

EnvCLI代码 / 配置文件默认值
K6_DNS--dnsdnsttl=5m,select=random,policy=preferIPv4

可能的 ttl 值包括:

  • 0: 完全不缓存 - 每个请求都将触发新的 DNS 查找。
  • inf: 在测试运行期间缓存所有解析的 IP。
  • 任何时间持续时间,如 60s5m30s10m2h 等;如果未指定单位(例如 ttl=3000),k6 假定为毫秒。

可能的 select 值包括:

  • first: 总是选择第一个解析的 IP。
  • random: 为每个新连接选择一个随机 IP。
  • roundRobin: 按顺序遍历解析的 IP。

可能的 policy 值包括:

  • preferIPv4: 如果可用则使用 IPv4 地址,否则回退到 IPv6。
  • preferIPv6: 如果可用则使用 IPv6 地址,否则回退到 IPv4。
  • onlyIPv4: 只使用 IPv4 地址,忽略任何 IPv6 地址。
  • onlyIPv6: 只使用 IPv6 地址,忽略任何 IPv4 地址。
  • any: 无偏好,使用所有地址。

以下是一些配置示例:

bash
K6_DNS="ttl=5m,select=random,policy=preferIPv4" k6 cloud run script.js
JavaScript
export const options = {
  dns: {
    ttl: '1m',
    select: 'roundRobin',
    policy: 'any',
  },
};

Duration

一个字符串,指定测试运行的总持续时间。在此期间,每个 VU 将循环执行脚本。在 k6 runk6 cloud run 命令中可用。

vus 选项一起使用时,duration 是一个constant VUs executor的单个场景的快捷方式。

EnvCLI代码 / 配置文件默认值
K6_DURATION--duration, -ddurationnull
JavaScript
export const options = {
  vus: 100,
  duration: '3m',
};

Cloud options

用于设置 Grafana Cloud k6 配置选项的对象。有关可用参数的更多信息,请参阅Cloud options

EnvCLI代码 / 配置文件默认值
不适用不适用cloudnull

这是一个如何指定测试名称的示例(具有相同名称的测试运行/执行将逻辑分组以进行趋势分析和比较),以便将结果流式传输到Grafana Cloud k6

JavaScript
export const options = {
  cloud: {
    name: 'My test name',
  },
};

以前,cloud 对象被称为 ext.loadimpact

Execution segment

这些选项指定如何划分测试运行以及运行哪个部分。如果定义,k6 将缩放运行该部分的 VU 和迭代次数,这在分布式执行中很有用。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--execution-segmentexecutionSegment"0:1"
不适用--execution-segment-sequenceexecutionSegmentSequence"0,1"

例如,要运行测试的 25%,你可以指定 --execution-segment '25%',它等同于 --execution-segment '0:1/4',即运行测试的第一个 1/4。为确保每个实例执行特定的部分,还需要指定完整的部分序列,例如 --execution-segment-sequence '0,1/4,1/2,1'。这样,一个实例可以运行 --execution-segment '0:1/4',另一个实例运行 --execution-segment '1/4:1/2' 等等,并且它们之间没有重叠。

Exit on running

一个布尔值,指定脚本是否应该在测试状态达到 running 后退出。使用 k6 cloud run 运行脚本时,默认情况下脚本会一直运行直到测试达到最终状态。这在某些环境中(例如持续集成和交付管道)可能会出现问题,因为你需要等到测试进入最终状态。

使用此选项,你可以提前退出,让脚本在后台运行。在 k6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_EXIT_ON_RUNNING--exit-on-running不适用false
bash
k6 cloud run --exit-on-running script.js

Hosts

一个对象,包含对 DNS 解析的覆盖,类似于在 Linux/Unix 上的 /etc/hosts 或 Windows 上的 C:\Windows\System32\drivers\etc\hosts 中可以做到的。例如,你可以设置一个覆盖,将所有对 test.k6.io 的请求路由到 1.2.3.4

k6 还支持缩小或扩大重定向范围的方式:

  • 你可以仅从或仅重定向到特定端口。
  • 从 v0.42.0 开始,你可以在 hostname 开头使用星号 (*) 作为通配符,以避免重复。例如,*.k6.io 将对 k6.io 的所有子域应用覆盖。

注意

这不会修改实际的 HTTP Host 请求头,而是修改其将被路由到何处。

EnvCLI代码 / 配置文件默认值
不适用不适用hostsnull
JavaScript
export const options = {
  hosts: {
    'test.k6.io': '1.2.3.4',
    'test.k6.io:443': '1.2.3.4:8443',
    '*.grafana.com': '1.2.3.4',
  },
};

前面的代码将把发送到 test.k6.io 的请求重定向到 1.2.3.4,并保持相同的端口。如果请求发送到端口 443,它将改为重定向到端口 8443。它还将把对 grafana.com 的任何子域的请求重定向到 1.2.3.4

HTTP debug

记录所有 HTTP 请求和响应。默认情况下不包括 body,要包括 body 请使用 --http-debug=full。在 k6 runk6 cloud run 命令中可用。

在此处阅读更多内容:here

EnvCLI代码 / 配置文件默认值
K6_HTTP_DEBUG--http-debug,
--http-debug=full
httpDebugfalse
JavaScript
export const options = {
  httpDebug: 'full',
};

Include system env vars

将真实的系统环境变量传递给运行时。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--include-system-env-vars不适用对于 k6 runtrue,但对于所有其他命令为 false,以防止无意中泄露敏感数据。
bash
k6 run --include-system-env-vars ~/script.js

Insecure skip TLS verify

一个布尔值,true 或 false。启用此选项(设置为 true)时,将忽略所有用于建立对服务器提供的 TLS 证书信任的验证。这仅适用于通过代码创建的连接,例如 HTTP 请求。在 k6 runk6 cloud run 命令中可用

EnvCLI代码 / 配置文件默认值
K6_INSECURE_SKIP_TLS_VERIFY--insecure-skip-tls-verifyinsecureSkipTLSVerifyfalse
JavaScript
export const options = {
  insecureSkipTLSVerify: true,
};

Iterations

一个整数值,指定测试运行中要执行的 default 函数的总迭代次数,而不是指定脚本在循环中运行的时间持续时间。在 k6 runk6 cloud run 命令中均可用。

vus 选项一起使用时,iterations 是一个shared iterations executor的单个场景的快捷方式。

默认情况下,shared-iterations 场景的最大持续时间为 10 分钟。你可以通过场景的 maxDuration 选项或通过同时指定duration 全局快捷选项来调整该时间。

请注意,使用此选项时,迭代次数不会公平分配,执行速度更快的 VU 将比其他 VU 完成更多的迭代。每个 VU 将尝试完成尽可能多的迭代,从总迭代次数中“窃取”迭代。因此,根据迭代时间的不同,某些 VU 可能比其他 VU 完成更多迭代。如果你想确保每个 VU 都完成特定的固定迭代次数,请使用 per-VU iterations executor

EnvCLI代码 / 配置文件默认值
K6_ITERATIONS--iterations, -iiterations1
JavaScript
export const options = {
  vus: 5,
  iterations: 10,
};

或者,要运行 10 个 VU,每个运行 10 次:

JavaScript
export const options = {
  vus: 10,
  iterations: 100,
};

Linger

一个布尔值,true 或 false,指定 k6 进程是否应在测试运行完成后继续保持。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_LINGER--linger, -llingerfalse
JavaScript
export const options = {
  linger: true,
};

Local IPs

VUs 将从中发出请求的 IP、IP 范围和 CIDR 列表。IP 将按顺序分配给 VUs。此选项不会在操作系统层面更改任何内容,因此需要已经在操作系统层面配置这些 IP,k6 才能使用它们。此外,具有超过 2 个 IP 的 IPv4 CIDR 不包括第一个和最后一个 IP,因为它们分别保留用于引用网络本身和广播地址。

此选项可用于在多张网卡之间分流 k6 的网络流量,从而可能提高可用的网络吞吐量。例如,如果您有 2 张网卡,您可以使用 --local-ips="<第一张网卡的 IP>,<第二张网卡的 IP>" 运行 k6,以在它们之间平均分配流量 - 一半的 VUs 将使用第一个 IP,另一半将使用第二个 IP。这可以扩展到任意数量的网卡,您可以重复某些本地 IP 以给它们更多的流量。例如,--local-ips="<IP1>,<IP2>,<IP3>,<IP3>" 将以 25%:25%:50% 的比例在 3 个不同的源 IP 之间分配 VUs。

k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_LOCAL_IPS--local-ips不适用不适用
bash
k6 run --local-ips=192.168.20.12-192.168.20.15,192.168.10.0/27 script.js

Log output

此选项指定将日志发送到何处以及与之相关的其他配置。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_LOG_OUTPUT--log-output不适用stderr
bash
k6 run --log-output=stdout script.js

可能的值包括:

  • none - 禁用
  • stdout - 发送到标准输出
  • stderr - 发送到标准错误输出(这是默认值)
  • loki - 将日志发送到 loki 服务器
  • file - 将日志写入文件

Loki

使用 log-output 选项如下配置 Loki。有关附加说明和分步指南,请查看 Loki 教程

bash
k6 run --log-output=loki=http://127.0.0.1:3100/loki/api/v1/push,label.something=else,label.foo=bar,limit=32,level=info,pushPeriod=5m32s,msgMaxSize=1231 script.js

其中开头的 url 之外都不是必需的。可能的键及其含义和默认值:

key描述默认值
nothing发送日志的端点http://127.0.0.1:3100/loki/api/v1/push
allowedLabels如果设置,k6 将只发送提供的标签,所有其他标签将以 key=value 的形式附加到消息中。选项的值形式为 [label1,label2]不适用
label.labelName为每条消息添加一个带有提供的键和值的附加标签不适用
header.headerName为发送到 Loki 的每个 HTTP 请求添加一个带有提供的请求头名称和值的附加 HTTP 请求头不适用
limit每个 pushPeriod 的消息限制,达到限制时会发送附加日志,记录丢弃了多少日志100
level消息的最低级别,低于此级别的消息不会发送到 lokiall
pushPeriod发送日志行的时间周期1s
profile是否打印一些关于发送到 loki 性能的信息false
msgMaxSize消息中最多允许有多少个符号。更大的消息将丢失消息的中间部分,并附加几个字符说明丢弃了多少字符。1048576

文件

文件可以如下配置,其中明确的文件路径是必需的:

bash
k6 run --log-output=file=./k6.log script.js

有效的文件路径是唯一的必需字段,其他可选字段如下所示:

key描述默认值
level要写入的最低消息级别(按升序排列):trace, debug, info, warning, error, fatal, panictrace

LogFormat

指定日志格式的值。默认情况下,k6 包括额外的调试信息,如日期和日志级别。其他可用选项包括:

  • json: 以 JSON 格式打印所有调试信息。

  • raw: 只打印日志消息。

EnvCLI代码 / 配置文件默认值
K6_LOG_FORMAT--log-format, -f不适用
bash
k6 run --log-format raw test.js

Max redirects

k6 在放弃请求并报错之前,将遵循的最大 HTTP 重定向次数。在 k6 runk6 cloud run 命令中均可用。

EnvCLI代码 / 配置文件默认值
K6_MAX_REDIRECTS--max-redirectsmaxRedirects10
JavaScript
export const options = {
  maxRedirects: 10,
};

Minimum iteration duration

指定 default 函数每次执行(即迭代)的最小持续时间。任何短于此值的迭代将导致该 VU 睡眠剩余时间,直到达到指定的最小持续时间。

EnvCLI代码 / 配置文件默认值
K6_MIN_ITERATION_DURATION--min-iteration-durationminIterationDuration0 (禁用)
JavaScript
export const options = {
  minIterationDuration: '10s',
};

No color

一个布尔值,指定是否禁用彩色输出。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--no-color不适用false
bash
k6 run --no-color script.js

No connection reuse

一个布尔值,true 或 false,指定 k6 是否禁用保持连接。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_CONNECTION_REUSE--no-connection-reusenoConnectionReusefalse
JavaScript
export const options = {
  noConnectionReuse: true,
};

No cookies reset

这将禁用每次 VU 迭代后重置 cookie jar 的默认行为。如果启用,保存的 cookie 将在 VU 迭代之间保持。

EnvCLI代码 / 配置文件默认值
K6_NO_COOKIES_RESET不适用noCookiesResetfalse
JavaScript
export const options = {
  noCookiesReset: true,
};

No summary

禁用测试结束摘要生成,包括对handleSummary()--summary-export 的调用。

k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_SUMMARY--no-summary不适用false
bash
k6 run --no-summary ~/script.js

No setup

一个布尔值,指定是否运行 setup() 函数。在 k6 cloud runk6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_SETUP--no-setup不适用false
bash
k6 run --no-setup script.js

No teardown

一个布尔值,指定是否运行 teardown() 函数。在 k6 cloud runk6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_TEARDOWN--no-teardown不适用false
bash
k6 run --no-teardown script.js

No thresholds

禁用阈值执行。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_THRESHOLDS--no-thresholds不适用false
bash
k6 run --no-thresholds ~/script.js

No usage report

一个布尔值,true 或 false。默认情况下,k6 每次运行时都会发送使用报告,以便我们跟踪人们使用它的频率。如果此选项设置为 true,则不会生成使用报告。要了解更多信息,请查看使用报告文档。在 k6 run 命令中可用。

EnvCLI配置文件默认值
K6_NO_USAGE_REPORT--no-usage-reportnoUsageReport*false
bash
k6 run --no-usage-report ~/script.js

* 注意,此选项在导出的脚本选项中不受支持,但可以在配置文件中指定。

No VU connection reuse

一个布尔值,true 或 false,指定 k6 是否应在 VU 的迭代之间重用 TCP 连接。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_NO_VU_CONNECTION_REUSE--no-vu-connection-reusenoVUConnectionReusefalse
JavaScript
export const options = {
  noVUConnectionReuse: true,
};

Paused

一个布尔值,true 或 false,指定测试是否应以暂停状态开始。要恢复暂停状态,可以使用 k6 resume 命令。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_PAUSED--paused, -ppausedfalse
JavaScript
export const options = {
  paused: true,
};

Profiling Enabled

在 k6 的 REST API 地址下启用 pprof 分析端点。这些端点有助于调试和分析 k6 本身。k6 的 REST API 也应该启用。

EnvCLI代码 / 配置文件默认值
K6_PROFILING_ENABLED--profiling-enabled不适用https://:6565/debug/pprof/
bash
k6 run --profiling-enabled script.js

Quiet

一个布尔值,true 或 false,禁用控制台输出上的进度更新条。在 k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--quiet, -q不适用false
bash
k6 run script.js -d 20s --quiet

结果输出

指定结果输出。有关所有可用输出及其配置方式的信息,请参阅Results output

EnvCLI代码 / 配置文件默认值
K6_OUT--out, -o不适用null
bash
k6 run --out influxdb=https://:8086/k6 script.js

RPS

全局每秒最大请求数,跨所有 VUs 总计。在 k6 runk6 cloud run 命令中可用。

注意

此选项不推荐使用。

--rps 选项有许多注意事项,难以正确使用。

例如,在云端或分布式执行中,此选项独立影响每个 k6 实例。也就是说,它不像 VUs 那样进行分片。

我们强烈建议使用arrival-rate executors来模拟恒定的 RPS,而不是此选项。

EnvCLI代码 / 配置文件默认值
K6_RPS--rpsrps0 (无限制)
JavaScript
export const options = {
  rps: 500,
};

在云端运行时的注意事项:

此选项是按负载生成器设置的,这意味着你在测试脚本的选项对象中设置的值将乘以你的测试运行使用的负载生成器数量。目前我们每负载生成器实例托管 300 个 VU。实际上,这意味着如果你将选项设置为 100 rps,并运行一个有 1000 个 VU 的测试,你将启动 4 个负载生成器实例,你的测试运行的有效 rps 限制将是 400。

场景

定义一个或多个执行模式,具有各种 VU 和迭代调度设置,运行不同的导出函数(除了 default!),使用不同的环境变量、标签等。

有关详细信息和更多示例,请参阅Scenarios 文章。

k6 runk6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用不适用scenariosnull
JavaScript
export const options = {
  scenarios: {
    my_api_scenario: {
      // arbitrary scenario name
      executor: 'ramping-vus',
      startVUs: 0,
      stages: [
        { duration: '5s', target: 100 },
        { duration: '5s', target: 0 },
      ],
      gracefulRampDown: '10s',
      env: { MYVAR: 'example' },
      tags: { my_tag: 'example' },
    },
  },
};

秘密源

指定在 k6 脚本中使用的秘密来源

EnvCLI代码 / 配置文件默认值
不适用--secret-source不适用不适用

可以提供多个秘密来源,如果提供 name=<value>,则秘密来源将具有给定的名称。

可以添加额外的 default 来设置单个默认秘密来源。如果只提供一个秘密来源,它默认将是默认值;如果提供多个,则需要配置默认值。

bash
$ k6 cloud run --secret-source=mock=name=something,key=value,key2=value2 --secret-source=mock,default,key=value3 script.js

以上内容将定义两个模拟秘密来源,其中一个名为“something”,另一个是默认值。

Setup timeout

指定 setup() 函数在终止并导致测试失败之前可以运行的最长时间。如果定义了值,则必须为正数。

EnvCLI代码 / 配置文件默认值
K6_SETUP_TIMEOUT不适用setupTimeout"60s"
JavaScript
export const options = {
  setupTimeout: '30s',
};

Show logs

一个布尔值,指定是否将云日志打印到终端。在 k6 cloud run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--show-logs不适用true
bash
k6 cloud run --show-logs=false script.js

Stages

指定在特定时间段内增加或减少目标 VU 数量的 VU { target: ..., duration: ... } 对象列表。在 k6 runk6 cloud run 命令中可用。

它是具有ramping VUs executor的单个场景的快捷选项。如果与VUs选项一起使用,则 vus 值将用作 executor 的 startVUs 选项。

EnvCLI代码 / 配置文件默认值
K6_STAGES--stage <duration>:<target>, -s <duration>:<target>stages基于 vusduration
JavaScript
// The following config would have k6 ramping up from 1 to 10 VUs for 3 minutes,
// then staying flat at 10 VUs for 5 minutes, then ramping up from 10 to 35 VUs
// over the next 10 minutes before finally ramping down to 0 VUs for another
// 3 minutes.

export const options = {
  stages: [
    { duration: '3m', target: 10 },
    { duration: '5m', target: 10 },
    { duration: '10m', target: 35 },
    { duration: '3m', target: 0 },
  ],
};
bash
k6 run --stage 5s:10,5m:20,10s:5 script.js

# or...

K6_STAGES="5s:10,5m:20,10s:5" k6 run script.js
windows
k6 run --stage 5s:10,5m:20,10s:5 script.js

# or...

set "K6_STAGES=5s:10,5m:20,10s:5" && k6 run script.js
powershell
k6 run --stage 5s:10,5m:20,10s:5 script.js

# or...

$env:K6_STAGES="5s:10,5m:20,10s:5"; k6 run script.js

Summary export

将测试结束摘要报告保存到包含所有测试指标、检查和阈值数据的 JSON 文件中。这对于以机器可读格式获取汇总的测试结果非常有用,以便与仪表板、外部警报、CI 管道等集成。

虽然此功能尚未弃用,但我们现在不鼓励使用它。为了获得更好、更灵活的 JSON 导出以及将摘要数据导出到不同格式(例如 JUnit/XUnit 等 XML、HTML、.txt)和完整的摘要自定义,请使用handleSummary() 函数

k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_SUMMARY_EXPORT--summary-export <filename>不适用null
bash
k6 run --summary-export export.json script.js

# or...

K6_SUMMARY_EXPORT="export.json" k6 run script.js
windows
k6 run --summary-export export.json script.js

# or...

set "K6_SUMMARY_EXPORT=export.json" && k6 run script.js
powershell
k6 run --summary-export export.json script.js

# or...

$env:K6_SUMMARY_EXPORT="export.json"; k6 run script.js

请参阅结果输出页面上的示例文件。

Summary mode

定义测试结束摘要的详细程度。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_SUMMARY_MODE--summary-mode不适用"compact"

以下模式可用:

  • compact (默认): 以简洁的格式显示最相关的测试结果,侧重于
    • 阈值结果
    • 检查结果
    • 按类别汇总的指标
  • full: 显示所有可用信息,包括
    • 来自 compact 模式的所有内容
    • 每个协议特定类别的详细指标
    • 分组特定结果
    • 场景特定结果
  • legacy: 使用 v1.0.0 之前的摘要格式以保持向后兼容性
bash
k6 run --summary-mode=full script.js

Summary trend stats

定义将在测试结束摘要中显示的Trend 指标(例如,响应时间、组/迭代持续时间等)的统计信息。可能的值包括 avg (平均值)、med (中位数)、min (最小值)、max (最大值)、count (计数),以及任意百分位数(例如 p(95)p(99)p(99.99) 等)。

为了进一步定制摘要并将摘要导出为各种格式(例如 JSON、JUnit/XUnit 等 XML、HTML、.txt 等),请使用handleSummary() 函数

EnvCLI代码 / 配置文件默认值
K6_SUMMARY_TREND_STATS--summary-trend-statssummaryTrendStatsavg,min,med,max,p(90),p(95)
JavaScript
export const options = {
  summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(90)', 'p(95)', 'p(99.99)', 'count'],
};
bash
k6 run --summary-trend-stats="avg,min,med,max,p(90),p(99.9),p(99.99),count" ./script.js

Summary time unit

定义测试结束摘要中*所有*时间值使用的时间单位。可能的值包括 s (秒)、ms (毫秒) 和 us (微秒)。如果未指定值,k6 将使用混合时间单位,为每个值选择最合适的单位。

EnvCLI代码 / 配置文件默认值
K6_SUMMARY_TIME_UNIT--summary-time-unitsummaryTimeUnitnull
JavaScript
export const options = {
  summaryTimeUnit: 'ms',
};

提供环境变量

在 k6 脚本中使用 VAR=value 添加/覆盖环境变量。在 k6 runk6 cloud 命令中可用。

要通过 __ENV 使系统环境变量在 k6 脚本中可用,请使用--include-system-env-vars 选项

注意

-e 标志不配置选项。

此标志仅为脚本提供变量,脚本可以使用或忽略这些变量。例如,-e K6_ITERATIONS=120 *不*配置脚本迭代次数。

将此行为与 K6_ITERATIONS=120 k6 run script.js 进行比较,后者*会*设置迭代次数。

EnvCLI代码 / 配置文件默认值
不适用--env, -e不适用null
bash
k6 run -e FOO=bar ~/script.js

System tags

指定哪些系统标签将包含在收集的指标中。某些收集器(如 cloud)可能要求使用某些系统标签。您可以从 JS 脚本中将标签指定为数组,或通过 CLI 指定为逗号分隔列表。在 k6 runk6 cloud 命令中可用

EnvCLI代码 / 配置文件默认值
K6_SYSTEM_TAGS--system-tagssystemTagsproto,subproto,status,method,url,name,group,check,error,error_code,tls_version,scenario,service,expected_response
JavaScript
export const options = {
  systemTags: ['status', 'method', 'url'],
};

Tags

指定应在所有指标中设置的测试范围标签。如果请求、检查或自定义指标上指定了同名标签,则其优先级高于测试范围标签。在 k6 runk6 cloud 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--tag NAME=VALUEtagsnull
JavaScript
export const options = {
  tags: {
    name: 'value',
    another: 'different value',
  },
};

可以提供多个 CLI 标志,一次设置多个标签

shell
k6 run --tag name=value --tag another="different value" script.js

Teardown timeout

指定 teardown() 函数在终止并导致测试失败之前允许运行的最长时间。

EnvCLI代码 / 配置文件默认值
K6_TEARDOWN_TIMEOUT不适用teardownTimeout"60s"
JavaScript
export const options = {
  teardownTimeout: '30s',
};

阈值

阈值规范的集合,用于配置测试基于指标数据成功或失败的条件。要了解更多信息,请参阅Thresholds文档。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用不适用thresholdsnull
JavaScript
export const options = {
  thresholds: {
    'http_req_duration': ['avg<100', 'p(95)<200'],
    'http_req_connecting{cdnAsset:true}': ['p(95)<100'],
  },
};

Throw

一个布尔值,true 或 false,指定当某些错误发生时 k6 是否应抛出异常,或者是否仅记录警告。当前取决于此选项的行为:

k6 runk6 cloud 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_THROW--throw, -wthrowfalse
JavaScript
export const options = {
  throw: true,
};

TLS auth

TLS 客户端证书配置对象列表。domainspassword 是可选的,但 certkey 是必需的。

EnvCLI代码 / 配置文件默认值
不适用不适用tlsAuthnull
JavaScript
export const options = {
  tlsAuth: [
    {
      domains: ['example.com'],
      cert: open('mycert.pem'),
      key: open('mycert-key.pem'),
      password: 'mycert-passphrase',
    },
  ],
};

TLS cipher suites

允许与服务器进行 SSL/TLS 交互时使用的加密套件列表。有关可用密码的完整列表,请参见此处

注意

由于底层 go 实现的限制,更改 TLS 1.3 的密码是*不受支持*的,并且不会产生任何效果。

EnvCLI代码 / 配置文件默认值
不适用不适用tlsCipherSuitesnull (允许所有套件)
JavaScript
export const options = {
  tlsCipherSuites: ['TLS_RSA_WITH_RC4_128_SHA', 'TLS_RSA_WITH_AES_128_GCM_SHA256'],
};

TLS version

一个字符串,表示允许与服务器进行交互时使用的唯一 SSL/TLS 版本,或者一个对象,指定允许使用的“min”和“max”版本。

EnvCLI代码 / 配置文件默认值
不适用不适用tlsVersionnull (允许所有版本)
JavaScript
export const options = {
  tlsVersion: 'tls1.2',
};
JavaScript
export const options = {
  tlsVersion: {
    min: 'ssl3.0',
    max: 'tls1.2',
  },
};

Traces output

此选项指定将跟踪数据发送到何处。在 k6 run 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_TRACES_OUTPUT--traces-output不适用none
bash
k6 run --traces-output=otel script.js

可能的值包括:

  • none - 禁用
  • otel - 将跟踪数据发送到兼容 OTEL 的后端

OTEL

使用 traces-output 选项如下配置Open Telemetry兼容输出。

bash
k6 run --traces-output=otel=http://127.0.0.1:4318,proto=http,header.AdditionalHeader=example script.js

其中所有选项都不是必需的。可能的键及其含义和默认值:

key描述默认值
nothing发送跟踪数据的端点http://127.0.0.1:4317
proto连接跟踪后端时使用的协议grpc
header.headerName为发送到跟踪后端的每个 HTTP 请求添加一个带有提供的请求头名称和值的附加 HTTP 请求头不适用

仅上传(已弃用)

注意

“仅上传”选项已弃用,并将在未来的版本中移除。请改用 k6 cloud upload 命令。

一个布尔值,指定是否仅将测试上传到云端,但不运行。在 k6 cloud 命令中可用。

如果你想更新给定的测试并稍后运行它,这将很有用。例如,从 CI 管道更新计划测试的测试脚本。

EnvCLI代码 / 配置文件默认值
K6_CLOUD_UPLOAD_ONLY--upload-only不适用false
bash
k6 cloud run --upload-only script.js

User agent

一个字符串,指定在发送 HTTP 请求时在 User-Agent 请求头中使用的 user-agent 字符串。如果传递空字符串,则不会发送 User-Agent 请求头。在 k6 runk6 cloud 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_USER_AGENT--user-agentuserAgentk6/0.27.0 (https://k6.io/) (取决于您使用的版本)
JavaScript
export const options = {
  userAgent: 'MyK6UserAgentString/1.0',
};

Verbose

一个布尔值,指定是否启用详细日志记录。在 k6 runk6 cloud 命令中可用。

EnvCLI代码 / 配置文件默认值
不适用--verbose, -v不适用false
bash
k6 run --verbose script.js

VUs

一个整数值,指定同时运行的 VU 数量,与迭代次数持续时间选项一起使用。如果您需要更多控制,请查看stages 选项或场景

k6 runk6 cloud 命令中可用。

EnvCLI代码 / 配置文件默认值
K6_VUS--vus, -uvus1
JavaScript
export const options = {
  vus: 10,
  duration: '1h',
};