为什么K6测试时迭代次数不能小于vus?以及这个属性的含义

问题描述 投票:0回答:3

我是 K6 测试新手。我已经阅读了K6的文档,但我不清楚“vus”和“迭代”。我知道 vus = 访问声明的 URL 的人数,但我不确定“迭代”。

  • 谁能帮我解释清楚吗? 我的代码如下。我的目标是测试一个Restful API,尝试找出大约100个用户在5分钟内连续使用该API时的性能。
  • 我的代码正确吗?因为我明白,我们只需要“vus”和“duration”就可以达到我提到的测试目标(100个用户在5分钟内连续使用这个API)。那么为什么需要添加“迭代”呢?
  • 如果我将迭代次数更改为 100、1000 或删除它,会有什么不同?
import http from 'k6/http';
     
export let options = {
  vus: 100,
  iterations: 20,
  duration: '300s'
};

export default function () {
  http.get('https://test.k6.io/contacts.php');
}
testing performance-testing k6
3个回答
0
投票

正如文档所示,

iterations
是定义共享迭代执行器的快捷方式,而指定
duration
常量VU执行器的快捷方式。两者互相冲突,所以你基本上只想使用其中之一。

您应该能够注释掉

iterations
选项。完成的迭代次数(即执行导出的默认函数的次数)将完全取决于 VU 在指定的
duration
中能够实现的程度。


0
投票

您可能还对不同的执行器感兴趣:如果您知道您的请求率,例如每秒 10 个请求,您可以使用 constant-arrival-rate 执行器

import http from 'k6/http';
     
export let options = {
  scenarios: {
    default: {
      executor: 'constant-arrival-rate',
      duration: '5m',
      rate: 10, timeUnit: '1s', // 10 per second
      preAllocatedVUs: 8
    }
  }
};

export default function () {
  http.get('https://test.k6.io/contacts.php');
}

0
投票

根据你的问题,我们需要明白三件事。

  • Vus
  • 迭代
  • 持续时间

正如您编写的脚本,上面提到以 100 vus 命中特定 api,在给定时间内,我们称之为持续时间,应该完成 20 次迭代。

它基本上是按照提及的持续时间和在该特定持续时间内并行的 vus 数量执行导出默认函数,可以完成多少迭代。

© www.soinside.com 2019 - 2024. All rights reserved.