📘

【負荷テスト】負荷テストツールってどんなのがあるの?

2023/10/28に公開

※ 個人ブログを閉鎖するので個人ブログに書いていたものを転載

仕事で負荷テストツール選定も含めて負荷テストを扱うことになったのでまずは負荷テストツールを比較しどのツールを使うか参考にしようと思います!
ちなみにOSS版の比較でクラウド版については書きません。

負荷テストツール

良さげな負荷テストツールを4つ記載します!

k6

実装言語: golang
シナリオ実装言語: javascript(Typescriptでも書けるみたい)
特徴

  • 高パフォーマンス
  • テスト実装が容易にできそう
    • ツールのインストールとテストケースのファイルさえ用意すればどこでも実行できる
    • シナリオ実装言語がjavascriptなのでフロントエンドのエンジニアもバックエンドのエンジニアも比較的コードが読みやすい
    • 別のツールを使う必要はあるけど負荷テスト結果をグラフで表示できる
    • クラウド版もある

他のツールの前ですが、こいつが一番良さそう!!

Locust

実装言語: python
シナリオ実装言語: python
特徴

  • 結果をグラフで表示できる
  • 分散実行をサポートしている(サーバが同梱されていてそれが結構便利らしい)
    • master・slave構成でworkerを並列で実行できる
  • pythonでシナリオ記述できるので比較的読める人が多そう
    • 拡張が豊富でpython以外の言語でもシナリオ記載できる(boomerという拡張でgolangでシナリオ実装できる)
  • 他のツールに比べるとパフォーマンスが悪い

Gatling

実装言語: scala
シナリオ実装言語: scala
特徴

  • 結果をグラフで表示できる
  • パフォーマンスは良いらしい
  • 分散実行をサポートしている(Locustに比べると構築が少し難しいらしい)
  • JVM上で動くのでJVMの環境と高負荷のテスト行う際はJVMのチューニングが必要なこともある
  • scalaでシナリオ実装するので書ける人が少ないかも。scalaを使用している現場であれば採用しても良さそう
  • クラウド版もある

Vegeta

実装言語: golang
シナリオ実装言語: CLI引数を使うらしい
特徴

  • githubの画像がベジータw
  • 高パフォーマンス
  • 一番シンプルなツール
  • 実行が容易でツールのインストールのみで使用できる
  • CLI引数で負荷をかけるAPIやパラメータを指定するらしい
  • 複雑なシナリオを実装する場合はシェルとかで自前で実装しないといけなさそう
    • 自前実装なら自由度が高いので複雑なテストを作りたいなら良いかも?

結論

良さげな4つのツールを比較しましたが、結論k6が良さそう!!
ツールのインストールだけで使えて高機能・高パフォーマンスが魅力的

参考

Discussion