【问题标题】:How do we code k6 scripts that have dynamic number of stages?我们如何编写具有动态阶段数的 k6 脚本?
【发布时间】:2022-01-16 03:20:37
【问题描述】:

我们如何编写具有动态阶段数的 k6 脚本?本质上,如果在一次运行中我需要 2 个阶段,参数是恒定的或具有算术或几何级数,而在第二次运行中我想运行 3/4/5.....n 个阶段。

这是在 k6 中定义场景/阶段的方式:

export let options = {
    scenarios: {
        stage_1: {
            executor: 'constant-arrival-rate',
            rate: __ENV.STAGE_1_RPS,
            timeUnit: '1s',
            startTime: __ENV.STAGE_1_START_TIME,
            duration: __ENV.STAGE_1_DUR,
            preAllocatedVUs: __ENV.STAGE_1_VUS
        },
        stage_2: {
            executor: 'constant-arrival-rate',
            rate: __ENV.STAGE_1_RPS + 100,
            timeUnit: '1s',
            startTime: __ENV.STAGE_2_START_TIME,
            duration: __ENV.STAGE_2_DUR,
            preAllocatedVUs: __ENV.STAGE_2_VUS
    }
}

使用上面的格式,如果需要运行n个不同数量的阶段,则需要编写n个不同的脚本,这似乎是一个不错的方法。

浏览过 k6 文档,但似乎没有一些特性/参数可以提供上述功能:https://k6.io/docs/using-k6/

【问题讨论】:

    标签: javascript testing automation k6


    【解决方案1】:

    经过多种资源,想出了这个使用javascript基础的解决方案(基本上,如果框架没有功能集,就启动一个解决方案!)

    for(var i = 1; i <= noOfStages; i++) {
            scenariosDynamic["stage_" + i] = {
                executor: 'constant-arrival-rate',
                rate: stageRps,
                timeUnit: '1s',
                startTime: stageStartTime,
                duration: stageRunDuration,
                preAllocatedVUs: 10,
            };
            stageRps = +stageRps + +rampRps;
            stageStartTime += stageDuration;
        }
    
    export let options = {
        scenarios: scenariosDynamic
    };
    

    只需使用括号表示法创建一个带有动态键的 javascript 对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2020-02-13
      • 2011-11-25
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2023-03-22
      相关资源
      最近更新 更多