よっしー
こんにちは。よっしーです(^^)
今日は、k6における実行時のコンテキスト変数についてご紹介します。
背景
Dockerで構築したWebアプリの開発環境において、k6のコンテキスト変数について調査したときの内容を備忘として残しました。
開発環境のソースは下記のリポジトリにあります。
実行コンテキスト変数
いくつかのケースでは、スクリプトの現在のテスト実行状態に関する情報が非常に役立ちます。例えば、次のようなことが考えられます。
- 異なる仮想ユーザー(VU)に異なるテストロジックを実行させたい
- 各VUとイテレーションに異なるデータを使用したい
- テストがどのステージにあるかを特定したい
これらの問題を解決するために、実行コンテキスト変数を使用することができます。
k6/execution
k6/executionモジュールは、現在の実行状態に関する詳細情報を提供し、現在実行中のシナリオの名前、現在アクティブなVUの数などの情報を公開します。このモジュールは、テスト実行情報を次の3つのプロパティを介して提供します。
- instance:現在実行中のk6インスタンス
- scenario:現在実行中のシナリオ
- vu:現在のVUおよびイテレーション
例: すべてのコンテキスト変数を記録する
テストが実行される際に各コンテキスト変数がどのように見えるかを試してみたい場合、このテンプレートリテラルをテストスクリプトの1つにコピーできます。
ただし、この例ではテストを中断するabort変数は省略されていることに注意してください。
import exec from 'k6/execution';
export default function () {
console.log(`Execution context
Instance info
-------------
Vus active: ${exec.instance.vusActive}
Iterations completed: ${exec.instance.iterationsCompleted}
Iterations interrupted: ${exec.instance.iterationsInterrupted}
Iterations completed: ${exec.instance.iterationsCompleted}
Iterations active: ${exec.instance.vusActive}
Initialized vus: ${exec.instance.vusInitialized}
Time passed from start of run(ms): ${exec.instance.currentTestRunDuration}
Scenario info
-------------
Name of the running scenario: ${exec.scenario.name}
Executor type: ${exec.scenario.executor}
Scenario start timestamp: ${exec.scenario.startTime}
Percenatage complete: ${exec.scenario.progress}
Iteration in instance: ${exec.scenario.iterationInInstance}
Iteration in test: ${exec.scenario.iterationInTest}
Test info
---------
All test options: ${exec.test.options}
VU info
-------
Iteration id: ${exec.vu.iterationInInstance}
Iteration in scenario: ${exec.vu.iterationInScenario}
VU ID in instance: ${exec.vu.idInInstance}
VU ID in test: ${exec.vu.idInTest}
VU tags: ${exec.vu.tags}`);
}
おわりに
今日は、k6における実行時のコンテキスト変数についてご紹介しました。
よっしー
何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。
それでは、また明日お会いしましょう(^^)
コメント