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

2022年12月23日

仕事で負荷テストツール選定も含めて負荷テストを扱うことになったのでまずは負荷テストツールを比較しどのツールを使うか参考にしようと思います!

ちなみに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が良さそう!!

ツールのインストールだけで使えて高機能・高パフォーマンスが魅力的

 

参考

  • DMM.go 負荷試験基盤の初期リリースについて
    • https://inside.dmm.com/entry/2022/06/20/dmm-go-4-load-testing
  • 開発会社のプロが負荷テストツール7つをレビュー
    • https://pr.hedgehog-loader.io/blog/3r5ta4m94hnb46nssjjqnw