选项参考
选项定义了测试运行的行为。大多数选项可以在多个位置传递。如果在多个位置定义了同一个选项,k6 将根据优先顺序选择最高优先级的那个值。
选项快速参考
每个选项都有其单独部分中详细的参考文档。
选项 | 描述 |
---|---|
Address | REST API 服务器地址 |
Batch | http.batch() 调用最大并行连接数 |
Batch per host | 同一 host 的 http.batch() 调用最大并行连接数 |
Blacklist IP | 从调用中拉黑 IP 范围 |
Block hostnames | 阻止对特定 hostnames 的任何请求 |
Compatibility mode | 支持以不同 ECMAScript 模式运行脚本 |
Config | 指定 JSON 格式的配置文件,用于读取选项值 |
Console output | 将 console 方法记录的日志重定向到提供的输出文件 |
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 IPs | VUs 将从中发出请求的本地 IP、IP 范围和 CIDR 列表 |
Log output | 关于 k6 日志发送位置的配置 |
LogFormat | 指定日志输出的格式 |
Max redirects | k6 将遵循的最大 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 auth | TLS 客户端证书配置对象列表 |
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 的内容。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --address , -a | 不适用 | localhost:6565 |
k6 run --address "localhost:3000" script.js
Batch
VU 中 http.batch()
调用总共可以建立的最大同时/并行连接数。如果你有一个 batch()
调用向其提供了 20 个 URL 并且 --batch
设置为 15,则 VU 将立即并行发出 15 个请求,并将其余请求排队,一旦之前的请求完成并有空闲插槽,则立即执行它们。在 k6 run
和 k6 cloud run
命令中均可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_BATCH | --batch | batch | 20 |
export const options = {
batch: 15,
};
Batch per host
VU 中 http.batch()
调用对于同一 host 可以建立的最大同时/并行连接数。如果你有一个 batch()
调用向 *同一* hostname 提供了 20 个 URL 并且 --batch-per-host
设置为 5,则 VU 将立即并行发出 5 个请求,并将其余请求排队,一旦之前的请求完成并有空闲插槽,则立即执行它们。这不会并行运行超过 batch
值的请求。在 k6 run
和 k6 cloud run
命令中均可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_BATCH_PER_HOST | --batch-per-host | batchPerHost | 6 |
export const options = {
batchPerHost: 5,
};
Blacklist IP
从调用中拉黑 IP 范围。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_BLACKLIST_IPS | --blacklist-ip | blacklistIPs | null |
export const options = {
blacklistIPs: ['10.0.0.0/8'],
};
Block hostnames
根据 glob 匹配字符串列表阻止 hostname。模式匹配字符串可以在开头包含一个单独的 *
,例如 *.example.com
,它将匹配其前面的任何内容,例如 test.example.com
和 test.test.example.com
。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_BLOCK_HOSTNAMES | --block-hostnames | blockHostnames | null |
export const options = {
blockHostnames: ['test.k6.io', '*.example.com'],
};
k6 run --block-hostnames="test.k6.io,*.example.com" script.js
Compatibility mode
支持以不同的 ECMAScript 兼容模式运行脚本。
阅读关于JavaScript 兼容模式文档中的不同模式。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_COMPATIBILITY_MODE | --compatibility-mode | 不适用 | "extended" |
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 run
和 k6 cloud run
命令中可用
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --config <path> , -c <path> | 不适用 | null |
注意
在 k6 Cloud 中运行测试并使用非默认的 config.json 文件时,请在配置文件中指定云 token 进行身份验证。
Console output
将由 console
方法记录的日志重定向到提供的输出文件。在 k6 cloud run
和 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_CONSOLE_OUTPUT | --console-output | 不适用 | null |
k6 run --console-output "loadtest.log" script.js
Discard response bodies
通过将所有 HTTP 请求的 responseType 默认值更改为 none
,指定是否应丢弃响应体。强烈建议将其设置为 true
,然后仅对于脚本需要响应体的请求将 responseType 设置为 text
或 binary
。这样可以减少所需的内存量和 GC 次数,从而减轻测试机器的负载,并可能产生更可靠的测试结果。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_DISCARD_RESPONSE_BODIES | --discard-response-bodies | discardResponseBodies | false |
export const options = {
discardResponseBodies: true,
};
DNS
这是一个复合选项,通过配置缓存过期时间 (TTL)、IP 选择策略和 IP 版本偏好来控制 DNS 解析行为。目前 k6 不读取 DNS 记录中的 TTL 字段,因此 ttl
选项允许手动控制此行为,尽管在测试运行期间是一个固定值。
请注意,DNS 解析仅在新 HTTP 连接上完成,默认情况下,如果支持 HTTP keep-alive,k6 将尝试重用连接。要强制特定的 DNS 行为,请考虑在测试中启用 noConnectionReuse
选项。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_DNS | --dns | dns | ttl=5m,select=random,policy=preferIPv4 |
可能的 ttl
值包括:
0
: 完全不缓存 - 每个请求都将触发新的 DNS 查找。inf
: 在测试运行期间缓存所有解析的 IP。- 任何时间持续时间,如
60s
、5m30s
、10m
、2h
等;如果未指定单位(例如ttl=3000
),k6 假定为毫秒。
可能的 select
值包括:
first
: 总是选择第一个解析的 IP。random
: 为每个新连接选择一个随机 IP。roundRobin
: 按顺序遍历解析的 IP。
可能的 policy
值包括:
preferIPv4
: 如果可用则使用 IPv4 地址,否则回退到 IPv6。preferIPv6
: 如果可用则使用 IPv6 地址,否则回退到 IPv4。onlyIPv4
: 只使用 IPv4 地址,忽略任何 IPv6 地址。onlyIPv6
: 只使用 IPv6 地址,忽略任何 IPv4 地址。any
: 无偏好,使用所有地址。
以下是一些配置示例:
K6_DNS="ttl=5m,select=random,policy=preferIPv4" k6 cloud run script.js
export const options = {
dns: {
ttl: '1m',
select: 'roundRobin',
policy: 'any',
},
};
Duration
一个字符串,指定测试运行的总持续时间。在此期间,每个 VU 将循环执行脚本。在 k6 run
和 k6 cloud run
命令中可用。
与vus
选项一起使用时,duration
是一个constant VUs executor的单个场景的快捷方式。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_DURATION | --duration , -d | duration | null |
export const options = {
vus: 100,
duration: '3m',
};
Cloud options
用于设置 Grafana Cloud k6 配置选项的对象。有关可用参数的更多信息,请参阅Cloud options。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | cloud | null |
这是一个如何指定测试名称的示例(具有相同名称的测试运行/执行将逻辑分组以进行趋势分析和比较),以便将结果流式传输到Grafana Cloud k6。
export const options = {
cloud: {
name: 'My test name',
},
};
以前,cloud
对象被称为 ext.loadimpact
。
Execution segment
这些选项指定如何划分测试运行以及运行哪个部分。如果定义,k6 将缩放运行该部分的 VU 和迭代次数,这在分布式执行中很有用。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --execution-segment | executionSegment | "0:1" |
不适用 | --execution-segment-sequence | executionSegmentSequence | "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
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_EXIT_ON_RUNNING | --exit-on-running | 不适用 | false |
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
请求头,而是修改其将被路由到何处。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | hosts | null |
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 run
和 k6 cloud run
命令中可用。
在此处阅读更多内容:here。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_HTTP_DEBUG | --http-debug ,--http-debug=full | httpDebug | false |
export const options = {
httpDebug: 'full',
};
Include system env vars
将真实的系统环境变量传递给运行时。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --include-system-env-vars | 不适用 | 对于 k6 run 为 true ,但对于所有其他命令为 false ,以防止无意中泄露敏感数据。 |
k6 run --include-system-env-vars ~/script.js
Insecure skip TLS verify
一个布尔值,true 或 false。启用此选项(设置为 true)时,将忽略所有用于建立对服务器提供的 TLS 证书信任的验证。这仅适用于通过代码创建的连接,例如 HTTP 请求。在 k6 run
和 k6 cloud run
命令中可用
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_INSECURE_SKIP_TLS_VERIFY | --insecure-skip-tls-verify | insecureSkipTLSVerify | false |
export const options = {
insecureSkipTLSVerify: true,
};
Iterations
一个整数值,指定测试运行中要执行的 default
函数的总迭代次数,而不是指定脚本在循环中运行的时间持续时间。在 k6 run
和 k6 cloud run
命令中均可用。
与vus
选项一起使用时,iterations
是一个shared iterations executor的单个场景的快捷方式。
默认情况下,shared-iterations
场景的最大持续时间为 10 分钟。你可以通过场景的 maxDuration
选项或通过同时指定duration
全局快捷选项来调整该时间。
请注意,使用此选项时,迭代次数不会公平分配,执行速度更快的 VU 将比其他 VU 完成更多的迭代。每个 VU 将尝试完成尽可能多的迭代,从总迭代次数中“窃取”迭代。因此,根据迭代时间的不同,某些 VU 可能比其他 VU 完成更多迭代。如果你想确保每个 VU 都完成特定的固定迭代次数,请使用 per-VU iterations executor。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_ITERATIONS | --iterations , -i | iterations | 1 |
export const options = {
vus: 5,
iterations: 10,
};
或者,要运行 10 个 VU,每个运行 10 次:
export const options = {
vus: 10,
iterations: 100,
};
Linger
一个布尔值,true 或 false,指定 k6 进程是否应在测试运行完成后继续保持。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_LINGER | --linger , -l | linger | false |
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
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_LOCAL_IPS | --local-ips | 不适用 | 不适用 |
k6 run --local-ips=192.168.20.12-192.168.20.15,192.168.10.0/27 script.js
Log output
此选项指定将日志发送到何处以及与之相关的其他配置。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_LOG_OUTPUT | --log-output | 不适用 | stderr |
k6 run --log-output=stdout script.js
可能的值包括:
- none - 禁用
- stdout - 发送到标准输出
- stderr - 发送到标准错误输出(这是默认值)
- loki - 将日志发送到 loki 服务器
- file - 将日志写入文件
Loki
使用 log-output
选项如下配置 Loki。有关附加说明和分步指南,请查看 Loki 教程。
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 | 消息的最低级别,低于此级别的消息不会发送到 loki | all |
pushPeriod | 发送日志行的时间周期 | 1s |
profile | 是否打印一些关于发送到 loki 性能的信息 | false |
msgMaxSize | 消息中最多允许有多少个符号。更大的消息将丢失消息的中间部分,并附加几个字符说明丢弃了多少字符。 | 1048576 |
文件
文件可以如下配置,其中明确的文件路径是必需的:
k6 run --log-output=file=./k6.log script.js
有效的文件路径是唯一的必需字段,其他可选字段如下所示:
key | 描述 | 默认值 |
---|---|---|
level | 要写入的最低消息级别(按升序排列):trace, debug, info, warning, error, fatal, panic | trace |
LogFormat
指定日志格式的值。默认情况下,k6 包括额外的调试信息,如日期和日志级别。其他可用选项包括:
json
: 以 JSON 格式打印所有调试信息。raw
: 只打印日志消息。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_LOG_FORMAT | --log-format , -f | 不适用 |
k6 run --log-format raw test.js
Max redirects
k6 在放弃请求并报错之前,将遵循的最大 HTTP 重定向次数。在 k6 run
和 k6 cloud run
命令中均可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_MAX_REDIRECTS | --max-redirects | maxRedirects | 10 |
export const options = {
maxRedirects: 10,
};
Minimum iteration duration
指定 default
函数每次执行(即迭代)的最小持续时间。任何短于此值的迭代将导致该 VU 睡眠剩余时间,直到达到指定的最小持续时间。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_MIN_ITERATION_DURATION | --min-iteration-duration | minIterationDuration | 0 (禁用) |
export const options = {
minIterationDuration: '10s',
};
No color
一个布尔值,指定是否禁用彩色输出。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --no-color | 不适用 | false |
k6 run --no-color script.js
No connection reuse
一个布尔值,true 或 false,指定 k6 是否禁用保持连接。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_CONNECTION_REUSE | --no-connection-reuse | noConnectionReuse | false |
export const options = {
noConnectionReuse: true,
};
No cookies reset
这将禁用每次 VU 迭代后重置 cookie jar 的默认行为。如果启用,保存的 cookie 将在 VU 迭代之间保持。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_COOKIES_RESET | 不适用 | noCookiesReset | false |
export const options = {
noCookiesReset: true,
};
No summary
禁用测试结束摘要生成,包括对handleSummary()
和 --summary-export
的调用。
在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_SUMMARY | --no-summary | 不适用 | false |
k6 run --no-summary ~/script.js
No setup
一个布尔值,指定是否运行 setup()
函数。在 k6 cloud run
和 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_SETUP | --no-setup | 不适用 | false |
k6 run --no-setup script.js
No teardown
一个布尔值,指定是否运行 teardown()
函数。在 k6 cloud run
和 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_TEARDOWN | --no-teardown | 不适用 | false |
k6 run --no-teardown script.js
No thresholds
禁用阈值执行。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_THRESHOLDS | --no-thresholds | 不适用 | false |
k6 run --no-thresholds ~/script.js
No usage report
一个布尔值,true 或 false。默认情况下,k6 每次运行时都会发送使用报告,以便我们跟踪人们使用它的频率。如果此选项设置为 true,则不会生成使用报告。要了解更多信息,请查看使用报告文档。在 k6 run
命令中可用。
Env | CLI | 配置文件 | 默认值 |
---|---|---|---|
K6_NO_USAGE_REPORT | --no-usage-report | noUsageReport * | false |
k6 run --no-usage-report ~/script.js
* 注意,此选项在导出的脚本选项中不受支持,但可以在配置文件中指定。
No VU connection reuse
一个布尔值,true 或 false,指定 k6 是否应在 VU 的迭代之间重用 TCP 连接。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_NO_VU_CONNECTION_REUSE | --no-vu-connection-reuse | noVUConnectionReuse | false |
export const options = {
noVUConnectionReuse: true,
};
Paused
一个布尔值,true 或 false,指定测试是否应以暂停状态开始。要恢复暂停状态,可以使用 k6 resume
命令。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_PAUSED | --paused , -p | paused | false |
export const options = {
paused: true,
};
Profiling Enabled
在 k6 的 REST API 地址下启用 pprof 分析端点。这些端点有助于调试和分析 k6 本身。k6 的 REST API 也应该启用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_PROFILING_ENABLED | --profiling-enabled | 不适用 | https://:6565/debug/pprof/ |
k6 run --profiling-enabled script.js
Quiet
一个布尔值,true 或 false,禁用控制台输出上的进度更新条。在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --quiet , -q | 不适用 | false |
k6 run script.js -d 20s --quiet
结果输出
指定结果输出。有关所有可用输出及其配置方式的信息,请参阅Results output。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_OUT | --out , -o | 不适用 | null |
k6 run --out influxdb=https://:8086/k6 script.js
RPS
全局每秒最大请求数,跨所有 VUs 总计。在 k6 run
和 k6 cloud run
命令中可用。
注意
此选项不推荐使用。
--rps
选项有许多注意事项,难以正确使用。
例如,在云端或分布式执行中,此选项独立影响每个 k6 实例。也就是说,它不像 VUs 那样进行分片。
我们强烈建议使用arrival-rate executors来模拟恒定的 RPS,而不是此选项。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_RPS | --rps | rps | 0 (无限制) |
export const options = {
rps: 500,
};
在云端运行时的注意事项:
此选项是按负载生成器设置的,这意味着你在测试脚本的选项对象中设置的值将乘以你的测试运行使用的负载生成器数量。目前我们每负载生成器实例托管 300 个 VU。实际上,这意味着如果你将选项设置为 100 rps,并运行一个有 1000 个 VU 的测试,你将启动 4 个负载生成器实例,你的测试运行的有效 rps 限制将是 400。
场景
定义一个或多个执行模式,具有各种 VU 和迭代调度设置,运行不同的导出函数(除了 default
!),使用不同的环境变量、标签等。
有关详细信息和更多示例,请参阅Scenarios 文章。
在 k6 run
和 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | scenarios | null |
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 脚本中使用的秘密来源。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --secret-source | 不适用 | 不适用 |
可以提供多个秘密来源,如果提供 name=<value>
,则秘密来源将具有给定的名称。
可以添加额外的 default
来设置单个默认秘密来源。如果只提供一个秘密来源,它默认将是默认值;如果提供多个,则需要配置默认值。
$ k6 cloud run --secret-source=mock=name=something,key=value,key2=value2 --secret-source=mock,default,key=value3 script.js
以上内容将定义两个模拟秘密来源,其中一个名为“something”,另一个是默认值。
Setup timeout
指定 setup()
函数在终止并导致测试失败之前可以运行的最长时间。如果定义了值,则必须为正数。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SETUP_TIMEOUT | 不适用 | setupTimeout | "60s" |
export const options = {
setupTimeout: '30s',
};
Show logs
一个布尔值,指定是否将云日志打印到终端。在 k6 cloud run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --show-logs | 不适用 | true |
k6 cloud run --show-logs=false script.js
Stages
指定在特定时间段内增加或减少目标 VU 数量的 VU { target: ..., duration: ... }
对象列表。在 k6 run
和 k6 cloud run
命令中可用。
它是具有ramping VUs executor的单个场景的快捷选项。如果与VUs选项一起使用,则 vus
值将用作 executor 的 startVUs
选项。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_STAGES | --stage <duration>:<target> , -s <duration>:<target> | stages | 基于 vus 和 duration 。 |
// 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 },
],
};
k6 run --stage 5s:10,5m:20,10s:5 script.js
# or...
K6_STAGES="5s:10,5m:20,10s:5" k6 run script.js
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
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
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SUMMARY_EXPORT | --summary-export <filename> | 不适用 | null |
k6 run --summary-export export.json script.js
# or...
K6_SUMMARY_EXPORT="export.json" k6 run script.js
k6 run --summary-export export.json script.js
# or...
set "K6_SUMMARY_EXPORT=export.json" && k6 run script.js
k6 run --summary-export export.json script.js
# or...
$env:K6_SUMMARY_EXPORT="export.json"; k6 run script.js
请参阅结果输出页面上的示例文件。
Summary mode
定义测试结束摘要的详细程度。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SUMMARY_MODE | --summary-mode | 不适用 | "compact" |
以下模式可用:
- compact (默认): 以简洁的格式显示最相关的测试结果,侧重于
- 阈值结果
- 检查结果
- 按类别汇总的指标
- full: 显示所有可用信息,包括
- 来自 compact 模式的所有内容
- 每个协议特定类别的详细指标
- 分组特定结果
- 场景特定结果
- legacy: 使用 v1.0.0 之前的摘要格式以保持向后兼容性
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()
函数。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SUMMARY_TREND_STATS | --summary-trend-stats | summaryTrendStats | avg,min,med,max,p(90),p(95) |
export const options = {
summaryTrendStats: ['avg', 'min', 'med', 'max', 'p(90)', 'p(95)', 'p(99.99)', 'count'],
};
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 将使用混合时间单位,为每个值选择最合适的单位。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SUMMARY_TIME_UNIT | --summary-time-unit | summaryTimeUnit | null |
export const options = {
summaryTimeUnit: 'ms',
};
提供环境变量
在 k6 脚本中使用 VAR=value
添加/覆盖环境变量。在 k6 run
和 k6 cloud
命令中可用。
要通过 __ENV
使系统环境变量在 k6 脚本中可用,请使用--include-system-env-vars
选项。
注意
-e
标志不配置选项。此标志仅为脚本提供变量,脚本可以使用或忽略这些变量。例如,
-e K6_ITERATIONS=120
*不*配置脚本迭代次数。将此行为与
K6_ITERATIONS=120 k6 run script.js
进行比较,后者*会*设置迭代次数。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --env , -e | 不适用 | null |
k6 run -e FOO=bar ~/script.js
System tags
指定哪些系统标签将包含在收集的指标中。某些收集器(如 cloud
)可能要求使用某些系统标签。您可以从 JS 脚本中将标签指定为数组,或通过 CLI 指定为逗号分隔列表。在 k6 run
和 k6 cloud
命令中可用
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_SYSTEM_TAGS | --system-tags | systemTags | proto ,subproto ,status ,method ,url ,name ,group ,check ,error ,error_code ,tls_version ,scenario ,service ,expected_response |
export const options = {
systemTags: ['status', 'method', 'url'],
};
Tags
指定应在所有指标中设置的测试范围标签。如果请求、检查或自定义指标上指定了同名标签,则其优先级高于测试范围标签。在 k6 run
和 k6 cloud
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --tag NAME=VALUE | tags | null |
export const options = {
tags: {
name: 'value',
another: 'different value',
},
};
可以提供多个 CLI 标志,一次设置多个标签
k6 run --tag name=value --tag another="different value" script.js
Teardown timeout
指定 teardown()
函数在终止并导致测试失败之前允许运行的最长时间。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_TEARDOWN_TIMEOUT | 不适用 | teardownTimeout | "60s" |
export const options = {
teardownTimeout: '30s',
};
阈值
阈值规范的集合,用于配置测试基于指标数据成功或失败的条件。要了解更多信息,请参阅Thresholds文档。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | thresholds | null |
export const options = {
thresholds: {
'http_req_duration': ['avg<100', 'p(95)<200'],
'http_req_connecting{cdnAsset:true}': ['p(95)<100'],
},
};
Throw
一个布尔值,true 或 false,指定当某些错误发生时 k6 是否应抛出异常,或者是否仅记录警告。当前取决于此选项的行为:
- HTTP 请求失败,例如由于网络错误。
- 向自定义指标添加无效值。
- 设置无效的每个 VU 指标标签。
在 k6 run
和 k6 cloud
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_THROW | --throw , -w | throw | false |
export const options = {
throw: true,
};
TLS auth
TLS 客户端证书配置对象列表。domains
和 password
是可选的,但 cert
和 key
是必需的。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | tlsAuth | null |
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 的密码是*不受支持*的,并且不会产生任何效果。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | tlsCipherSuites | null (允许所有套件) |
export const options = {
tlsCipherSuites: ['TLS_RSA_WITH_RC4_128_SHA', 'TLS_RSA_WITH_AES_128_GCM_SHA256'],
};
TLS version
一个字符串,表示允许与服务器进行交互时使用的唯一 SSL/TLS 版本,或者一个对象,指定允许使用的“min”和“max”版本。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | 不适用 | tlsVersion | null (允许所有版本) |
export const options = {
tlsVersion: 'tls1.2',
};
export const options = {
tlsVersion: {
min: 'ssl3.0',
max: 'tls1.2',
},
};
Traces output
此选项指定将跟踪数据发送到何处。在 k6 run
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_TRACES_OUTPUT | --traces-output | 不适用 | none |
k6 run --traces-output=otel script.js
可能的值包括:
- none - 禁用
- otel - 将跟踪数据发送到兼容 OTEL 的后端
OTEL
使用 traces-output
选项如下配置Open Telemetry兼容输出。
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 管道更新计划测试的测试脚本。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_CLOUD_UPLOAD_ONLY | --upload-only | 不适用 | false |
k6 cloud run --upload-only script.js
User agent
一个字符串,指定在发送 HTTP 请求时在 User-Agent
请求头中使用的 user-agent 字符串。如果传递空字符串,则不会发送 User-Agent
请求头。在 k6 run
和 k6 cloud
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_USER_AGENT | --user-agent | userAgent | k6/0.27.0 (https://k6.io/) (取决于您使用的版本) |
export const options = {
userAgent: 'MyK6UserAgentString/1.0',
};
Verbose
一个布尔值,指定是否启用详细日志记录。在 k6 run
和 k6 cloud
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
不适用 | --verbose , -v | 不适用 | false |
k6 run --verbose script.js
VUs
一个整数值,指定同时运行的 VU 数量,与迭代次数或持续时间选项一起使用。如果您需要更多控制,请查看stages
选项或场景。
在 k6 run
和 k6 cloud
命令中可用。
Env | CLI | 代码 / 配置文件 | 默认值 |
---|---|---|---|
K6_VUS | --vus , -u | vus | 1 |
export const options = {
vus: 10,
duration: '1h',
};