前回の便利すぎる負荷試験テストツールGatlingの使い方~自力ソース編~に続き、今回はブラウザで操作した内容をそのままソースに落としてテストする方法です。
これを使えば自分でソース書かないでも、ブラウザ操作がそのままソースになるのでテスト作る時にも楽ですね!!
まずはRecoderと呼ばれるGUIを呼び出しましょう
#Gatlingのインスールされたディレクトリに移動
sh bin/recorder.sh
ブラウザ操作を記憶するにはプロキシ設定が必要なので、macのプロキシ設定画面を開きます。
wifiアイコンのとこから "ネットワーク"環境設定を開く>詳細>プロキシタブ
ここで、Webプロキシ(HTTP)にチェックを入れてWebプロキシサーバに
localhost:8000
を入力しましょう
これで準備はOKです!
この後は
Recoder GUIのStart!ボタン押した後の操作が記憶されるので、まずは余計なタブとか全部閉じましょう。
その上でブラウザのシークレットモードでやったほうが確実です。
今回は以下のgatlingのテスト用に用意されているサイトを使ってみたいと思います。
http://computer-database.gatling.io/computers
まずStartボタン押してから上記のサイトにアクセス
次は「ASUS」とFilterのテキストボックスに入れてFilter by nameボタンをクリックしましょう。
今回はここでrecoderGUIのSTOPボタンを押すと今までのコードがソース化されます。
ソースは以下の場所に出来てるはず。
GATLING_HOME/user-files/simulations/RecordedSimulation.scala
中身ができてますね
import scala.concurrent.duration._
import io.gatling.core.Predef._
import io.gatling.http.Predef._
import io.gatling.jdbc.Predef._
class RecordedSimulation extends Simulation {
val httpProtocol = http
.baseURL("http://computer-database.gatling.io")
.inferHtmlResources()
val headers_0 = Map("Upgrade-Insecure-Requests" -> "1")
val uri1 = "http://computer-database.gatling.io"
val scn = scenario("RecordedSimulation")
.exec(http("request_0")
.get("/")
.headers(headers_0))
.pause(8)
.exec(http("request_1")
.get("/computers?f=ASUS")
.headers(headers_0))
.pause(2)
.exec(http("request_2")
.get("/computers/20607")
.headers(headers_0))
setUp(scn.inject(atOnceUsers(1))).protocols(httpProtocol)
}
実行方法は
sh bin/gatling.sh
とすると、先ほど記録したRecodedSimulationが選択肢に出てきます
Choose a simulation number:
[0] RecordedSimulation
[1] computerdatabase.BasicSimulation
[2] computerdatabase.advanced.AdvancedSimulationStep01
[3] computerdatabase.advanced.AdvancedSimulationStep02
[4] computerdatabase.advanced.AdvancedSimulationStep03
[5] computerdatabase.advanced.AdvancedSimulationStep04
[6] computerdatabase.advanced.AdvancedSimulationStep05
なので、0を選択して実行すると先ほど記憶した操作が実行されました!!
APIのテストや、WEB画面のテストもこれ使えばすぐテスト行えますね!!
次回は戻り値のチェックなど行ってみたいと思います。