JMeter、Maven、Jenkins、Eclipseによる自動化テストプラットフォームの構築

このチュートリアルでは、JMeter、Maven、Jenkins、Eclipseを連携させ、自動化されたパフォーマンステストプラットフォームを構築する方法を説明します。このプラットフォームにより、コードの変更がトリガーとなり、パフォーマンステストが自動実行され、結果が通知される、効率的なテストプロセスを実現します。

1. 環境構築

  • JDK および Eclipse のインストール
  • Jenkins のインストール
  • Maven のダウンロードと解凍
  • JMeter のダウンロードと解凍

2. パフォーマンステストスクリプトの準備

JMeter を起動し、テストケースを作成または録画します。作成したスクリプトは、後で利用しやすいようにエクスポートしてください。

  • JMeter を起動し、bin ディレクトリ内の jmeter.bat を実行します。
  • テストケースを作成または録画し、エクスポートします。(Badboy や Chrome プラグイン BlazeMeter も利用可能です)

3. Maven プロジェクトの作成

Eclipse で Maven プロジェクトを作成し、JMeter スクリプトとテストレポート生成に必要なファイルを配置します。

  • Eclipse で新しい Maven プロジェクトを作成します。
  • 作成したプロジェクトの src/test/ ディレクトリ下に jmeter フォルダを作成し、JMeter スクリプトをコピーします。
  • src/test/resources/ ディレクトリに JMeter のレポートテンプレートファイルをコピーします。
  • src/test/jmeter/ ディレクトリに JMeter の実行に必要なファイルをコピーします。
  • pom.xml ファイルに jmeter-maven-plugin の依存関係を追加します。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.performance.test</groupId>
    <artifactId>PushNotificationPerformanceTest</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>PushNotificationPerformanceTest</name>
    <url>http://maven.apache.org</url>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
        <jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
        <jmeter.result.html.dir1>${project.build.directory}\jmeter\html1</jmeter.result.html.dir1>
        <ReportName>TestReport</ReportName>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.3.0</version>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>xml-maven-plugin</artifactId>
                <version>1.0-beta-3</version>
                <executions>
                    <execution>
                        <phase>verify</phase>
                        <goals>
                            <goal>transform</goal>
                        </goals>
                    </execution>
                </executions>
                <configuration>
                    <transformationSets>
                        <transformationSet>
                            <dir>${jmeter.result.jtl.dir}</dir>
                            <stylesheet>src\test\resources\jmeter-results-detail-report_21.xsl</stylesheet>
                            <outputDir>${jmeter.result.html.dir}</outputDir>
                            <fileMappers>
                                <fileMapper
                                    implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                    <targetExtension>html</targetExtension>
                                </fileMapper>
                            </fileMappers>
                        </transformationSet>
                        <transformationSet>
                            <dir>${jmeter.result.jtl.dir}</dir>
                            <stylesheet>src\test\resources\jmeter-results-report_21.xsl</stylesheet>
                            <outputDir>${jmeter.result.html.dir1}</outputDir>
                            <fileMappers>
                                <fileMapper
                                    implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
                                    <targetExtension>html</targetExtension>
                                </fileMapper>
                            </fileMappers>
                        </transformationSet>
                    </transformationSets>
                </configuration>
                 <!-- XSLT 2.0 を使用 -->
                 <dependencies>
                   <dependency>
                   <groupId>net.sf.saxon</groupId>
                   <artifactId>saxon</artifactId>
                   <version>8.7</version>
                   </dependency>
               </dependencies>
            </plugin>
        </plugins>
    </build>
</project>

4. Eclipse でのテスト実行

Eclipse で Maven プロジェクトを右クリックし、「Run As」->「Maven build」を選択します。「Goals」に verify と入力して実行します。

実行後、テスト結果ファイルが生成されます。

5. Jenkins でのテスト実行と結果の表示

Jenkins に以下のプラグインをインストールします。

  • Maven Integration plugin: Jenkins で Maven ジョブを作成するために必要です。
  • Git plugin: GitHub からテストコードをダウンロードするために必要です。
  • Performance plugin: テストレポートを表示するために使用します。
  • HTML Publisher plugin: テスト結果レポートを表示するために使用します。

5.1. Jenkins 環境設定

システム管理 > グローバルツール設定 で JDK と Maven のパスを設定します。

5.2. Maven プロジェクトのジョブ設定

  1. Jenkins で Maven ジョブを作成します。
  2. ソースコード管理で Git リポジトリを設定し、テストコードの URL を指定します。
  3. ビルドトリガーで、開発ジョブの完了後に自動実行するように設定します(ダウンストリームジョブとして設定)。
  4. ビルド手順で、mvn verify コマンドを実行するように設定します。
  5. ビルド後の処理で、HTML Publisher プラグインを使用して生成されたレポートファイルを指定します。

5.3. テスト結果の確認

設定完了後、「Build Now」をクリックしてジョブを実行します。実行結果からテストレポートを確認できます。

注記:

  • Jenkins で HTML レポートが見栄え良く表示されない場合、Jenkins のスクリプトコンソールで System.setProperty("hudson.model.DirectoryBrowserSupport.CSP", "") を実行してみてください。
  • テスト結果に空の項目が多い場合は、jmeter.properties ファイル内の該当する設定を true に変更してください。

# テストレポート情報表示設定
jmeter.save.saveservice.data_type=true
jmeter.save.saveservice.label=true
jmeter.save.saveservice.response_code=true
jmeter.save.saveservice.response_data=true
jmeter.save.saveservice.response_data.on_error=true
jmeter.save.saveservice.response_message=true
jmeter.save.saveservice.successful=true
jmeter.save.saveservice.thread_name=true
jmeter.save.saveservice.time=true
jmeter.save.saveservice.subresults=true
jmeter.save.saveservice.assertions=true
jmeter.save.saveservice.latency=true
jmeter.save.saveservice.connect_time=true
jmeter.save.saveservice.samplerData=true
jmeter.save.saveservice.responseHeaders=true
jmeter.save.saveservice.requestHeaders=true
jmeter.save.saveservice.encoding=false
jmeter.save.saveservice.bytes=true
jmeter.save.saveservice.sent_bytes=true
jmeter.save.saveservice.url=true
jmeter.save.saveservice.filename=true
jmeter.save.saveservice.hostname=true
jmeter.save.saveservice.thread_counts=true
jmeter.save.saveservice.sample_count=true
jmeter.save.saveservice.idle_time=true

タグ: JMeter Maven Jenkins Eclipse 自動化テスト

7月26日 00:20 投稿