kakakakakku blog

Weekly Tech Blog: Keep Learning!

Hurl で負荷テストを実行する

Hurl では API のテストシナリオを使って負荷テストを実行することができる.今回は Hurl ファイルに指定する repeat と CLI のオプション --repeat の違いを確認しつつ,さらに CLI のオプション --delay も試す👌Hurl のドキュメント「Running Tests」にも「Stress and Performance Tests」というセクションがある.

hurl.dev

準備

まずはローカル環境に適当な 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 ファイルで repeatdelay を組み合わせる

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 ファイル自体を並列で実行できる💡

hurl.dev

以下のように実行できる.実行時間が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)

関連記事

kakakakakku.hatenablog.com

kakakakakku.hatenablog.com