このチュートリアルでは、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 プロジェクトのジョブ設定
- Jenkins で Maven ジョブを作成します。
- ソースコード管理で Git リポジトリを設定し、テストコードの URL を指定します。
- ビルドトリガーで、開発ジョブの完了後に自動実行するように設定します(ダウンストリームジョブとして設定)。
- ビルド手順で、
mvn verifyコマンドを実行するように設定します。 - ビルド後の処理で、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