【发布时间】:2020-07-29 11:01:49
【问题描述】:
我编写了一个简单的 K6 负载测试脚本,可以成功登录。 我编写了一个单独的 K6 负载测试脚本,该脚本执行不成功的登录尝试
它们目前是单独的脚本,您必须自己运行。
我想知道的是,你们如何模拟用户在一次负载测试中执行不同的场景?例如有效登录、无效登录、注销、任何其他操作。
您是否将不同的场景都放在一个脚本中?
【问题讨论】:
标签: k6
我编写了一个简单的 K6 负载测试脚本,可以成功登录。 我编写了一个单独的 K6 负载测试脚本,该脚本执行不成功的登录尝试
它们目前是单独的脚本,您必须自己运行。
我想知道的是,你们如何模拟用户在一次负载测试中执行不同的场景?例如有效登录、无效登录、注销、任何其他操作。
您是否将不同的场景都放在一个脚本中?
【问题讨论】:
标签: k6
有两种方法,“旧”和“新”(从 v0.27.0 开始)。 旧的做法是有一个默认函数,在某些条件下选择做一个或另一个,例如,每第三次 VU 迭代不成功,其他的都是成功的:
export default function() {
if (__ITER % 3 == 2) {
call_to_unsuccessful_login();
} else {
call_to_successful_login();
}
}
在上面的例子中,你显然需要在同一个脚本中定义这两个函数,或者从另一个脚本中导入它们
在 v0.27.0 和新的执行模型之后,您有多个使用不同执行器的场景,每个执行器执行不同的“默认”功能。 所以在这种情况下,我们可以为成功和不成功的登录配置不同的执行计划,并直接调用执行它们的函数,而不是选择一个默认函数。
export let options = {
"scenarios": {
"successful": {
"executor": "constant-vus".
"vus": 2,
"duration": 1m,
"exec": "call_to_successful_login"
},
"unsuccessful": {
"executor": "constant-vus".
"vus": 1,
"duration": 1m,
"exec": "call_to_unsuccessful_login"
}
}
}
在这种情况下,两个 call... 函数也需要在主脚本中导出。
您可以在the documentation 中阅读有关如何配置方案及其不同选项的更多信息。
【讨论】: