1. 概要

このチュートリアルでは、 Gatling を使用して、Jenkinsパイプライン内に負荷テストを統合します。 まず、の概念に精通していることを確認しましょう ガトリング。 

2. Mavenでガトリングプロジェクトを作成する

私たちの目標は、Gatlingを使用した負荷テストをJenkins CI/CDパイプラインに挿入することです。 この検証ステップを自動化するために、Mavenを使用してツールをパックできます。

2.1. 依存関係

Gatlingはプラグイン(Gatling Mavenプラグイン)を提供します。これにより、プロジェクトのMavenビルドフェーズ中にGatlingで負荷テストを開始できます。 このようにして、負荷テストを任意の継続的インテグレーションツールに統合することができます。

それでは、GatlingをサンプルのMavenプロジェクトに統合しましょう。 まず、pom.xmlファイルに次の依存関係が必要です。

<dependency>
    <groupId>io.gatling.highcharts</groupId>
    <artifactId>gatling-charts-highcharts</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-app</artifactId>
    <version>3.3.1</version>
</dependency>
<dependency>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-recorder</artifactId>
    <version>3.3.1</version>
</dependency>

以前の依存関係に加えて、pom.xmlのプラグインセクションでgatling-maven-pluginを指定する必要があります。

<plugin>
    <groupId>io.gatling</groupId>
    <artifactId>gatling-maven-plugin</artifactId>
    <version>3.0.5</version>
    <configuration>
        <simulationClass>org.baeldung.${SimulationClass}</simulationClass>
    </configuration>
</plugin>

SimulationClass 値は、負荷テストの実行に使用されるシミュレーションクラスを表します。 GatlingバージョンとGatlingMavenプラグインバージョンは同じである必要はありません。 ここでは、最新バージョンのGatling を見つけることができますが、次のリンクで最新バージョンのGatlingMavenプラグインを見つけることができます。

2.2. シナリオの作成

シミュレーションは、複数のリクエストの実行を含むことができるシナリオで構成されます。

シミュレーションはScalaで記述されており、GatlingのDSLを使用しています。これはシンプルで直感的です。

2.3. シナリオの実行

負荷テストの実行に必要なコードを記述したら、プロジェクトをビルドしてシミュレーションを実行できます:

mvn clean package
mvn gatling:test

生成されたターゲットフォルダ内に、Gatlingによって実行された負荷テストのレポートがあります。

3. GatlingをJenkinsと統合する

GatlingをJenkinsパイプラインに統合すると、実行中に負荷テストを実行できます

このようにして、リリースするコードに加えられた変更によってパフォーマンスが大幅に低下しないことを確認できます。

これにより、発行される新しいコードの信頼性と信頼性が向上します

3.1. Jenkinsfileを作成します

プロジェクト内で、Gatlingの実行方法を指示するJenkinsfileを作成します。

pipeline {
    agent any
    stages {
        stage("Build Maven") {
            steps {
                sh 'mvn -B clean package'
            }
        }
        stage("Run Gatling") {
            steps {
                sh 'mvn gatling:test'
            }
            post {
                always {
                    gatlingArchive()
                }
            }
        }
    }
}

スクリプトは2つの段階に分かれています。

  • プロジェクトをビルドする(Maven)
  • シナリオの実行とアーカイブ(ガトリング)

次に、テストコードをコミットしてソース管理システムにプッシュします。 構成が完了すると、Jenkinsは新しく作成されたスクリプトを読み取って実行できるようになります。

3.2. パイプラインを作成する

このJenkinsFile、を使用して、独自のパイプラインを作成します。 Jenkinsでパイプラインを作成するのは簡単です。

まず、Jenkinsのホームページに移動し、新しいアイテムをクリックして、パイプラインを選択し、意味のある名前を付けます。 Jenkinsでパイプラインを作成する方法の詳細については、トピック専用のチュートリアルにアクセスしてください。

新しく作成したパイプラインを構成しましょう。 Pipeline セクションで、スクリプトのソースを選択します。

特に、ドロップダウンメニューから SCM からパイプラインスクリプトを選択し、リポジトリのURLを設定し、ソースコードを取得するために必要な資格情報を設定し、スクリプトを受信するブランチを提供します。最後に、新しく作成したJenkinsfileを見つけるパスを示します。

ウィンドウは次のように表示されます。

3.3. GatlingJenkinsプラグイン

新しく作成されたパイプラインを実行する前に、GatlingJenkinsプラグインをインストールする必要があります。 

プラグインにより、次のことが可能になります。

  • パイプラインの実行ごとに詳細なレポートを取得して公開する
  • 各シミュレーションを追跡し、トレンドグラフを提供します

パイプラインに挿入されたgatlingArchive()コマンドは、このプラグインの一部であり、上記のレポートを有効にすることができます。

プラグインをインストールして、Jenkinsを再起動しましょう。 

この時点で、負荷テストを含むパイプラインを実行する準備ができています

3.4. 負荷生成を分離する

テストを実行するために大量の呼び出しを生成することは、リソースの点で非常にコストのかかる操作です。 このため、パイプラインを実行しているマスターJenkinsノードでこれらの操作を実行することはお勧めできません。

Jenkinsスレーブノードを使用して、パイプラインのいくつかのステップを実行します。 

Jenkinsで1つ以上のスレーブノードを正しく構成したとします。 新しく作成されたパイプラインに挿入されたagentany コマンドを使用すると、エグゼキュータノードを割り当て、そのノードで指定されたコードを実行できます。

4. パイプラインを実行する

パイプラインを実行する時が来ました。

Jenkinsのホームから、新しく作成したパイプラインを選択し、今すぐビルドをクリックします。 次に、パイプラインが実行されるのを待ちます。 実行の最後に、次のようなグラフが表示されます。

5. 結果を見る

パイプラインの実行ページでは、グラフがどのように生成されたかを確認できます。これは、負荷テストによって生成された平均応答時間を示しています。 グラフは、GatlingJenkinsプラグインによって生成されます。 これには、リリースのパフォーマンストレンドの即時の証拠を提供するために、最新の15ビルドのデータが含まれます。

パイプラインの実行ページ内の左側のメニューでGatlingボタンをクリックすると、過去15回のビルドの傾向を示すグラフが表示されます。

特に、以下に関する情報があります。

  • 平均応答時間
  • 応答時間の95パーセンタイル、および
  • 「KO」(つまり、「大丈夫ではない」)でのリクエストの割合

ページの下部に、上記のグラフの後に、作成されたビルドごとに生成されたガトリングレポートへのリンクがあります。

リンクをクリックすると、生成されたガトリングレポートをJenkins内で直接表示できます。

6. 結論

このチュートリアルでは、Gatlingで実行された負荷テストをJenkinsパイプラインに挿入する方法を見てきました。 まず、Gatlingを使用して負荷テストを生成する方法、それを実行するための Jenkinsfile を作成する方法、およびJenkinsパイプラインに統合する方法について説明しました。

最後に、Gatling Jenkinsプラグインが、Jenkinsデプロイメント内で直接Gatlingレポートを生成するのにどのように役立つかを示しました。

Webサイトのパフォーマンスを監視するためのテストシナリオを構築する方法の詳細については、別のガトリングチュートリアルにアクセスしてください。

いつものように、チュートリアルの完全なソースコードは、GitHubから入手できます。