
Hurl では API のテストシナリオを使って負荷テストを実行することができる.今回は Hurl ファイルに指定する repeat と CLI のオプション --repeat の違いを確認しつつ,さらに CLI のオプション --delay も試す👌Hurl のドキュメント「Running Tests」にも「Stress and Performance Tests」というセクションがある.
準備
まずはローカル環境に適当な API を起動しておく.今回は httpbin を使った.
Hurl ファイルで repeat を指定する
まず Hurl ファイルの [Options] セクションに repeat を指定すると同じリクエストを繰り返し実行できる.Hurl ファイルに指定する repeat は1つずつ順番に実行するため,あくまで逐次実行になる.
GET http://localhost:8080/status/200 [Options] repeat: 10 HTTP 200
以下のように実行できる.
$ hurl --test 1-repeat.hurl Success 1-repeat.hurl (10 request(s) in 13 ms) -------------------------------------------------------------------------------- Executed files: 1 Executed requests: 10 (714.3/s) Succeeded files: 1 (100.0%) Failed files: 0 (0.0%) Duration: 14 ms (0h:0m:0s:14ms)
Hurl ファイルで repeat と delay を組み合わせる
Hurl ファイルには repeat 以外に delay を指定することもできる.リクエストとリクエストの間の待機時間(ミリ秒)を指定することができて,負荷テストの間隔を調整できる.
GET http://localhost:8080/status/200 [Options] repeat: 10 delay: 1000 HTTP 200
以下のように実行できる.実行時間が10秒になっていて,合計10回のリクエストが1秒待機しながら1つずつ順番に実行されていることがわかる.
$ hurl --test 2-repeat-delay.hurl Success 2-repeat-delay.hurl (10 request(s) in 10076 ms) -------------------------------------------------------------------------------- Executed files: 1 Executed requests: 10 (1.0/s) Succeeded files: 1 (100.0%) Failed files: 0 (0.0%) Duration: 10079 ms (0h:0m:10s:79ms)
CLI のオプションで --repeat を指定する
同じ repeat だけど Hurl ファイルではなくて CLI のオプションで --repeat を指定すると,今度は Hurl ファイル自体を並列で実行できる💡
以下のように実行できる.実行時間が10秒になっていて,並列で合計50回のリクエストが実行されていることがわかる.
$ hurl --test --repeat 5 2-repeat-delay.hurl Success 2-repeat-delay.hurl (10 request(s) in 10091 ms) Success 2-repeat-delay.hurl (10 request(s) in 10109 ms) Success 2-repeat-delay.hurl (10 request(s) in 10112 ms) Success 2-repeat-delay.hurl (10 request(s) in 10113 ms) Success 2-repeat-delay.hurl (10 request(s) in 10113 ms) -------------------------------------------------------------------------------- Executed files: 5 Executed requests: 50 (4.9/s) Succeeded files: 5 (100.0%) Failed files: 0 (0.0%) Duration: 10118 ms (0h:0m:10s:118ms)