K6 负载测试 - 如何为整个测试运行创建顺序 ID

J.S*_*dio 4 javascript load-testing k6

我有一个 api 端点,每个请求都需要是不同的 id ,但是如何为所有 VU 共享的每次迭代创建一个全局且连续的 id ,就像数据库表上的主键一样。

前任:

request 1 : <id>400</id> VU :1
request 2 : <id>401</id> VU :1

request 1 : <id>402</id> VU :2

request 3 : <id>403</id> VU :1
request 4 : <id>404</id> VU :1

request 2 : <id>405</id> VU :2
request 3 : <id>406</id> VU :2
Run Code Online (Sandbox Code Playgroud)

有没有办法声明一个由整个测试共享的变量?根据文档,Setup 和 Init 是针对每个 VU 的,不能共享数据。

Ale*_*sky 13

对于任何正在寻找生成连续数字的方法的人。从版本 v0.0.34 开始,引入了k6/executioniterationInTest ,它具有一个整数属性,描述如下:

场景中当前迭代的唯一且从零开始的序列号。它在所有 k6 执行模式中都是独一无二的 - 在本地、云和分布式/分段测试运行中。然而,虽然每个实例都会在云/分布式测试中获得不重叠的索引值,但它们可能会以不同的速度迭代它们,因此这些值在它们之间不会是连续的。

这可以在您的测试代码中用于生成序列号,例如:

import exec from 'k6/execution':

export default function () {
  const url = `https://foo.bar/${exec.scenario.iterationInTest}`;
  http.get(url)
}
Run Code Online (Sandbox Code Playgroud)

我能够为测试的每次迭代增加一个数字。