🙆

k6でrpsを指定して試験を実施したい場合のExecutor選定

2023/12/23に公開

こんにちは、kudomaです。
最近、弊社ではオンプレミスからAWSへの移行を進めています。
移行後に「パフォーマンスが劣化しているのでオンプレミスに切り戻します」なんてことがないように、リリース前にパフォーマンス試験を実施し、合格する必要があります。

今回はOpen ModelとExecutorの選定について話していこうと思います。
Executorを適当に採用してた方の参考になると嬉しいです。
実装はk6公式ドキュメントにサンプルがあるので、そちらを参考にしてみてください。

Closed Model vs Open Model

Closed Model

Closed Modelは、掛ける負荷がターゲットシステムの応答時間に依存する。
例えば、以下のようにシステムの応答時間が2倍遅くなると、掛かる負荷が半分になるのです。
このmodelは、ユーザーのスループットをテストするのに適しています。

ユーザ数 負荷を掛ける時間 システムの応答時間 負荷
1 1m 1s 60rpm
1 1m 2s 30rpm

Open Model

Open Modelは、掛ける負荷がターゲットシステムの応答時間に依存しない。
例えば、以下のようにシステムの応答速度が2倍遅くなっても、掛かる負荷は変わりません。
このmodelは、アプリケーションの同時アクセス時の挙動をテストするのに適しています。

ユーザ数 負荷を掛ける時間 システムの応答時間 負荷
1 1m 1s 60rpm
1 1m 2s 60rpm

Open Modelを実装したExecutor

2023/12/21日時点では全部で7つExecutorがあります。

https://k6.io/docs/using-k6/scenarios/executors/#all-executors

この中でOpen modelが実装されたExecutorは2つあります。

Executorの選定

最近、平均負荷テスト, ストレステスト, スパイクテストの3つを実装したので、その時に採用したExecutorと採用理由も書いておきます。

試験の種別 試験のイメージ(色) 採用したExecutor 採用理由
平均負荷テスト Constant arrival rate 一定の負荷を掛けるだけだから
ストレステスト Ramping arrival rate 負荷を増加・維持・減少させたいから
スパイクテスト Ramping arrival rate 負荷を急激に増加・減少させたいから

各テストのイメージはこんな感じです。


引用: Load test types | k6

最後に

最後まで読んでくださって、ありがとうございました。
僕は今年でアドカレ3年目になりました。(あー早い...
他の記事も興味あったら、是非見てみてください!

https://techblog.istyle.co.jp/archives/8568

https://qiita.com/kudoma/items/bbf2af3f86cfa691e8bf

株式会社アイスタイル

Discussion