k6入門:k6 の Executors について

スポンサーリンク
k6入門:k6 の Executors について 環境構築
k6入門:k6 の Executors について
この記事は約3分で読めます。
よっしー
よっしー

こんにちは。よっしーです(^^)

今日は、k6 の Executors についてご紹介します。

スポンサーリンク

背景

Dockerで構築したWebアプリの開発環境において、k6のExecutorsについて調査したときの内容を備忘として残しました。

開発環境のソースは下記のリポジトリにあります。

エグゼキューター(Executors)

エグゼキューターは、k6がVUとイテレーションをスケジュールする方法を制御します。選択するエグゼキューターは、テストの目標とモデル化したいトラフィックの種類に依存します。

エグゼキューターは、シナリオオブジェクトのexecutorキーで定義します。値はハイフンで区切られたエグゼキューター名です。

export const options = {
  scenarios: {
    arbitrary_scenario_name: {
      //Name of executor
      executor: 'ramping-vus',
      // more configuration here
    },
  },
};

以下のテーブルは、すべてのk6エグゼキューターをリストアップし、それぞれの説明になります。

名前説明
Shared iterationsshared-iterations固定数のイテレーションが複数のVU間で共有されます。
Per VU iterationsper-vu-iterations各VUは正確な数のイテレーションを実行します。
Constant VUsconstant-vus固定数のVUが指定された時間内で可能な限り多くのイテレーションを実行します。
Ramping VUsramping-vus可変数のVUが指定された時間内で可能な限り多くのイテレーションを実行します。
Constant Arrival Rateconstant-arrival-rate指定された時間内で固定数のイテレーションが実行されます。
Ramping Arrival Rateramping-arrival-rate指定された時間内で可変数のイテレーションが実行されます。
Externally Controlledexternally-controlledk6のREST APIまたはCLIを介して、実行時に制御およびスケーリングを行います。

各エグゼキューターは異なるテストのニーズに合わせて設計されており、どのエグゼキューターを選択するかは、テストの目的とモデル化したいトラフィックの種類に依存します。それぞれのエグゼキューターのドキュメントにアクセスして、詳細な情報を確認できます。

特定のシナリオにおいて、特定のVUが特定のイテレーションを実行できることを保証することはできません。

SharedArrayと実行コンテキスト変数を使用すると、特定のVUをテストデータ内の特定の値にマッピングすることができます。つまり、10番目のVUは10番目の配列アイテム(または6番目のイテレーションに6番目のアイテム)を使用できます。

ただし、例えば10番目のVUを10番目のイテレーションに信頼性を持ってマッピングすることはできません。特定のVUが特定のイテレーションを実行することは、k6の仕組み上、一貫して保証されないためです。

おわりに

今日は、k6 の Executors についてご紹介しました。

よっしー
よっしー

何か質問や相談があれば、コメントをお願いします。また、エンジニア案件の相談にも随時対応していますので、お気軽にお問い合わせください。

それでは、また明日お会いしましょう(^^)

コメント

タイトルとURLをコピーしました