うさぎ組

kyon_mm with software

このエントリーをはてなブックマークに追加

Webアプリ性能テストツールGatling-環境構築編- #SWTestAdvent

はじめに

このエントリはソフトウェアテストAdventCalendar2014の3日目の記事です。

http://connpass.com/event/4544/

3回にわけて、GatlingというWebアプリケーションの性能テスティングフレームワークについて解説します。

Gatlingとはなにか

http://gatling-tool.org/

GatlingはHTTPリクエストとレスポンスを高速かつ並列に送受信して記録をグラフ化してくれるいわゆる「性能テストツール」と言われているものです。JMeterにとってかわるものとして開発をされていて、非常に優秀かつ採用事例が増えています。制約がないのであればJMeterよりはGatlingを使うことをオススメします。理由は次の3つになります。

  • より軽量に動作する
  • よりスケールアウトする
  • 簡易なスクリプトでテストをつくることが出来る

Gatlingが採用している技術要素としては次のものになります。

  • JVM
  • Scala
  • AsyncHttpClient

なお、今回説明するGatlingのバージョンは1.5.xになります。開発中の2.0.0-m3はまた別の機会に説明します。

Gatlingの環境構築

Gatlingを使うにはJDKのインストールが必要になります。Oracle JDKやOpen JDKをインストールしましょう。JDKがインストールされているかはターミナルやコマンドプロンプトから”javac –version”と入力してJDK1.7以上が表示されれば大丈夫です。javacが見つからない、1.6以下のJDKの場合は可能であれば1.7以上にしましょう。(1.6以下はサポートが切れています。)

JDKのインストールが完了すればGatlingプロジェクトをつくれば始められます。Scalaのインストールは不要です。(Gatlingプロジェクトを作成するときにScalaがプロジェクトのパスに一緒に入ります。)

Gatlingプロジェクトの作成方法はいくつかありますが、僕がよく使う3つの方法を紹介します。

  • サンプルプロジェクトをコピーしてくる
  • Mavenのarchitypeを使う

サンプルプロジェクトをコピーしてくる

ScalaやGatlingへパスが通っているサンプルプロジェクトを使う方法です。次の手順になります。

  1. GatlingのWebサイトからgatling-bundleをダウンロードする。http://gatling-tool.org/ 。例(gatling-charts-highcharts-1.5.3-bundle.zip)
  2. プロジェクトルートにしたいディレクトリにダウンロードしたファイルを解凍する。

ファイル構成は次のようになっています。

apps/gatling-charts-highcharts-1.5.3 # 解凍したディレクトリ
├── bin # テスト実行スクリプトがあるディレクトリ
│   ├── gatling.bat
│   ├── gatling.sh
│   ├── recorder.bat
│   └── recorder.sh
├── conf # 設定ファイルがあるディレクトリ
│   ├── application.conf
│   ├── gatling.conf
│   └── logback.xml
├── lib # Gatlingで使うライブラリが入っているディレクトリ
│   ├── akka-actor-2.0.4.jar
│   ├── async-http-client-1.7.21.jar
│   ├── commons-io-2.4.jar
│   ├── commons-math3-3.1.1.jar
│   ├── commons-pool-1.6.jar
│   ├── compiler-interface-0.12.3-sources.jar
│   ├── config-1.0.2.jar
│   ├── gatling-app-1.5.3.jar
│   ├── gatling-charts-1.5.3.jar
│   ├── gatling-charts-highcharts-1.5.3.jar
│   ├── gatling-core-1.5.3.jar
│   ├── gatling-http-1.5.3.jar
│   ├── gatling-jdbc-1.5.3.jar
│   ├── gatling-metrics-1.5.3.jar
│   ├── gatling-recorder-1.5.3.jar
│   ├── gatling-redis-1.5.3.jar
│   ├── grizzled-slf4j_2.9.2-0.6.10.jar
│   ├── incremental-compiler-0.12.3.jar
│   ├── jaxen-1.1.6.jar
│   ├── joda-convert-1.5.jar
│   ├── joda-time-2.3.jar
│   ├── jodd-core-3.4.8.jar
│   ├── jodd-lagarto-3.4.8.jar
│   ├── json-path-0.9.1.jar
│   ├── json-smart-1.2.jar
│   ├── jsoup-1.7.3.jar
│   ├── logback-classic-1.0.13.jar
│   ├── logback-core-1.0.13.jar
│   ├── netty-3.8.0.Final.jar
│   ├── opencsv-2.3.jar
│   ├── redisclient_2.9.2-2.10.jar
│   ├── scala-compiler-2.9.3.jar
│   ├── scala-library-2.9.3.jar
│   ├── scalate-core_2.9-1.6.1.jar
│   ├── scalate-util_2.9-1.6.1.jar
│   ├── scopt_2.9.2-2.1.0.jar
│   ├── slf4j-api-1.7.5.jar
│   ├── xercesImpl-2.11.0.jar
│   ├── xml-apis-1.4.01.jar
│   ├── xstream-1.4.3.jar
│   └── zinc-0.2.5.jar
├── results # テストの実行結果が生成されるディレクトリ
└── user-files # テストを配置するディレクトリ
    ├── data # パラメタライズで使いたいファイルを配置するディレクトリ
    │   ├── user_credentials.csv
    │   └── user_information.csv
    ├── request-bodies # アップロードで使いたいファイルを配置するディレクトリ
    └── simulations # テストスクリプトを配置するディレクトリ
        ├── advanced
        │   ├── AdvancedExampleSimulation.scala
        │   ├── Headers.scala
        │   ├── SomeOtherScenario.scala
        │   └── SomeScenario.scala
        └── basic
            └── BasicExampleSimulation.scala

ターミナルなどでbin配下のバッチ/シェルスクリプトを実行してみましょう。basicもしくはadvancedを選択して動作すれば設定完了です。 基本的にはuser-files配下を編集することで、性能テストスクリプトを書いていきます。

Mavenのarchitypeを使う

MavenというJavaのビルドツールがあります。 JVM系アプリケーションは基本的にはなんらかのビルドツールを使用してコンパイル、テスト、デプロイなどを行ないます。 またJVM系ビルドツールの重要な機能として「ライブラリの依存関係解決および、ダウンロード」があります。ということで、JVM系アプリケーションではなんらかのビルドツールを使用することをオススメします。Gradleというビルドツールがイケているのですが、Gatlingとの親和性が別段高いわけではないので、Mavenでいいかと思います。(もちろんGradleからでも実行できます。)

Mavenはarchitypeという機能をもっていてプロジェクトテンプレートを作成できます。(登録されているやつがあれば)。Gatlingも登録されているので、この機能でプロジェクトを作成することができます。

コマンドラインから行なう方法とIntelliJ IDEAなどのIDEからMavenの機能を使う方法があります。ここでは、より簡単なIntelliJ IDEAから登録する場合について説明します。

事前にインストールするもの。

  1. IntelliJ で新規プロジェクトを作成します。プロジェクトのタイプはmavenを選択します。次の画面が出るので、「Add Architype」をクリックします。
../../../_images/New_Project.png
  1. GatlingのID、バージョン、リポジトリURLをそれぞれ設定します。設定を終えたらOKをクリックします。
  • GroupId:com.excilys.ebi.gatling.highcharts
  • ArtifactId:gatling-highcharts-maven-archetype
  • Version:1.5.3
  • URL:http://repository.excilys.com/content/groups/public
../../../_images/Add_Archetype.png
  1. 追加したGatlingを選択してNextをクリックします。
../../../_images/select-gatling-architype.png
  1. Finishをクリックして、プロジェクトの新規作成を完了します。
../../../_images/New_Project.png

新規作成時に必要なライブラリをダウンロードするので時間がかかると思いますが、少しまちましょう。完了すると次のようなディレクトリ構成になっています。(gatling-settingという名前のプロジェクトにした場合)

gatling-setting
├── gatling-setting.iml
├── pom.xml
└── src
    ├── main
    │   └── scala
    └── test
        ├── resources
        │   ├── application.conf
        │   ├── data
        │   ├── gatling.conf
        │   ├── logback.xml
        │   └── request-bodies
        └── scala
            ├── Engine.scala
            ├── IDEPathHelper.scala
            └── Recorder.scala

次回

ここまでで、プロジェクトを作成する方法を示したので、次回は実際にスクリプトを書いてみて、レポートを見てみます。