O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
はじめての Gatling
Naoya Nakazawa @n0ts
2016/02/16
目次
• Gatling とは
• Gatling のインストール方法
• Gatling レコーダー
• Gatling の使い方
• Gatling のレポート
• Gatling の実例 Tips
Gatling とは
• http://gatling.io
• Scala ベースの高負荷テストフレームワーク
• ab や wrk のようなベンチマークに近いが、Scala でロ
ジックを記述することができる
• ab (Apache Be...
特長
• HTML レポートで出力することができる
• HTTP GET 以外にも POST にも対応している
• リファラー、クッキーの付与はデフォルトで対応してい
る!
• Scala 力が低くても以外と簡単に設定を書くことが出来
る(自験...
インストール
1. JDK7u6 以降が必要なので、インストール
2. 公式ホームページから zip ファイルをダウンロード
http://gatling.io/#/download
3. Linux / OS X なら bin/gatling...
レコーダー
• Gatling のテストシナリオを自動的に生成するツール
• bin/recorder.sh で実行する
• レコーダーで開始すると、プロキシ経由のリクエスト
が自動的に Gatling のシミュレーションファイルとし
て保存さ...
レコーダー画面
レコーダーで生成されるシナリオの例
package computerdatabase // パッケージ名
import io.gatling.core.Predef._ // 必要なインポートたち
import io.gatling.http....
実行例
$	bin/gatling.sh

GATLING_HOME	is	set	to	$GATLING_ROOT

Choose	a	simulation	number:

					[0]	test.BasicSimulation

		...
実行結果
• あわせて results 以下に HTML ファイルとして出力され
る
http://gatling.io/docs/2.1.1/general/reports.html
Gatling の実例
同じリクエストを繰り返す
• 5 回連続で繰り返す
val scn = scenario("RepeatBenchmark")
.repeat(5, "n") {
exec(http("top").get("/"))
}
ある条件のときのみリクエストをする
• scenarioProperty が pv のときリクエストをする
val scenarioProperty = System.getProperty("scenario",
"").toString

...
ある割合ごとにリクエストをする
• / を 50%、/foo を 20%、/bar を 30% ずつリクエスト
する
val scn = scenario("RandomBenchmark")

.randomSwitch(
50.0 -> e...
リクエストに動的にクッキーを付与する
• / のクッキー uid を /cookie へ付与する
val scn = scenario("CookieBenchmark")

.exec(http("top")
.get("/")
.check...
リクエストに動的にクッキーを付与する
• /baz へのリクエストは "bar UA" にする
val userAgent = Map("User-Agent" -> "bar UA")
val scn = scenario("UABenchm...
ステータスコード 303 はステータス OK とする
• /redirect は 303 を返して、リダイレクトはしない
val scn = scenario("RedirectBenchmark")

.exec(http("top")
.g...
この他は公式ドキュメントをどうぞ

http://gatling.io/docs/2.0.0-RC5/general/
index.html
Enjoy!!!
Próximos SlideShares
Carregando em…5
×

はじめての Gatling

8.625 visualizações

Publicada em

Gatling 入門です

Publicada em: Tecnologia
  • Dating direct: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui
  • Dating for everyone is here: ❤❤❤ http://bit.ly/36cXjBY ❤❤❤
       Responder 
    Tem certeza que deseja  Sim  Não
    Insira sua mensagem aqui

はじめての Gatling

  1. 1. はじめての Gatling Naoya Nakazawa @n0ts 2016/02/16
  2. 2. 目次 • Gatling とは • Gatling のインストール方法 • Gatling レコーダー • Gatling の使い方 • Gatling のレポート • Gatling の実例 Tips
  3. 3. Gatling とは • http://gatling.io • Scala ベースの高負荷テストフレームワーク • ab や wrk のようなベンチマークに近いが、Scala でロ ジックを記述することができる • ab (Apache Bench): • https://httpd.apache.org/docs/2.4/programs/ ab.html • wrk: • https://github.com/wg/wrk
  4. 4. 特長 • HTML レポートで出力することができる • HTTP GET 以外にも POST にも対応している • リファラー、クッキーの付与はデフォルトで対応してい る! • Scala 力が低くても以外と簡単に設定を書くことが出来 る(自験!)
  5. 5. インストール 1. JDK7u6 以降が必要なので、インストール 2. 公式ホームページから zip ファイルをダウンロード http://gatling.io/#/download 3. Linux / OS X なら bin/gatling.sh あるいは、Windows なら bin/gatling.bat で実行するだけ
  6. 6. レコーダー • Gatling のテストシナリオを自動的に生成するツール • bin/recorder.sh で実行する • レコーダーで開始すると、プロキシ経由のリクエスト が自動的に Gatling のシミュレーションファイルとし て保存される
  7. 7. レコーダー画面
  8. 8. レコーダーで生成されるシナリオの例 package computerdatabase // パッケージ名 import io.gatling.core.Predef._ // 必要なインポートたち import io.gatling.http.Predef._ import scala.concurrent.duration._ class BasicSimulation extends Simulation { // クラス定義、Simulation を敬称しないといけない val httpConf = http // HTTP リクエストの共通設定 .baseURL("http://computer-database.gatling.io") // リクエスト対象の URL .acceptHeader("text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8") // 共通の HTTP ヘッダー .doNotTrackHeader("1") // DNT ヘッダーの送信 .acceptLanguageHeader("en-US,en;q=0.5") // 受け入れる言語ヘッダーの送信 .acceptEncodingHeader("gzip, deflate") // エンコーディングヘッダーの送信 .userAgentHeader("Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0") // ユーザエージェントの送信 val scn = scenario("BasicSimulation") // テストシナリオの定義 .exec(http("request_1") // HTTP リクエスト名、"request_1" は最終レポートに表示される .get("/")) // URI / へ GET リクエストする .pause(5) // 一時スリープタイム setUp( // このシミュレーションで実行するシナリオのセットアップ scn.inject(atOnceUsers(1)) // scn という名前で 1 シングルユーザでリクエストする ).protocols(httpConf) // 最初の HTTP リクエストの共通設定を付与する }
  9. 9. 実行例 $ bin/gatling.sh GATLING_HOME is set to $GATLING_ROOT Choose a simulation number: [0] test.BasicSimulation [1] test.FooSimulation ※番号を入力 1 ... ---- Global Information -------------------------------------------------------- > request count 10 (OK=10 KO=0 ) > min response time 5 (OK=5 KO=- ) > max response time 58 (OK=58 KO=- ) > mean response time 16 (OK=16 KO=- ) > std deviation 14 (OK=14 KO=- ) > response time 50th percentile 12 (OK=12 KO=- ) > response time 75th percentile 17 (OK=17 KO=- ) > mean requests/sec 5.141 (OK=5.141 KO=- ) *1 ---- Response Time Distribution ------------------------------------------------ > t < 800 ms 10 (100%) > 800 ms < t < 1200 ms 0 ( 0%) > t > 1200 ms 0 ( 0%) > failed 0 ( 0%) ================================================================================ Reports generated in 0s. Please open the following file: results/scenariosimulation-xxx/index.html *1: 秒間あたりの処理したりクエスト数、KO は NG という意味
  10. 10. 実行結果 • あわせて results 以下に HTML ファイルとして出力され る http://gatling.io/docs/2.1.1/general/reports.html
  11. 11. Gatling の実例
  12. 12. 同じリクエストを繰り返す • 5 回連続で繰り返す val scn = scenario("RepeatBenchmark") .repeat(5, "n") { exec(http("top").get("/")) }
  13. 13. ある条件のときのみリクエストをする • scenarioProperty が pv のときリクエストをする val scenarioProperty = System.getProperty("scenario", "").toString
 val scn = scenario("DoIfBenchmark") .doIf(scenarioProperty, "pv") { exec(http("pv").get("/pv")) }
  14. 14. ある割合ごとにリクエストをする • / を 50%、/foo を 20%、/bar を 30% ずつリクエスト する val scn = scenario("RandomBenchmark")
 .randomSwitch( 50.0 -> exec(http("top").get("/")), 20.0 -> exec(http("foo").get("/foo")), 30.0 -> exec(http("bar").get("/bar")) )
  15. 15. リクエストに動的にクッキーを付与する • / のクッキー uid を /cookie へ付与する val scn = scenario("CookieBenchmark")
 .exec(http("top") .get("/") .check(headerRegex("Set-Cookie", "uid=(.*); Expires=.*; Domain=.*; Path=.*").saveAs("uid"))) .exec(addCookie(Cookie("uid", "${uid}"))) .exec(http("cookie").get("/"))
  16. 16. リクエストに動的にクッキーを付与する • /baz へのリクエストは "bar UA" にする val userAgent = Map("User-Agent" -> "bar UA") val scn = scenario("UABenchmark")
 .exec(http("baz") .get("/baz") .headers(userAgent) )
  17. 17. ステータスコード 303 はステータス OK とする • /redirect は 303 を返して、リダイレクトはしない val scn = scenario("RedirectBenchmark")
 .exec(http("top") .get("/redirect") .disableFollowRedirect .check(status.is(303)) )
  18. 18. この他は公式ドキュメントをどうぞ
 http://gatling.io/docs/2.0.0-RC5/general/ index.html
  19. 19. Enjoy!!!

×