負荷テストにおけるテストツール9選と選定方法のご紹介
先日、負荷テストの計画の記事にて、負荷テストで使用される代表的なツールの名前をいくつか挙げました。
記事の中で紹介したツールはごく一部で、世の中には無料のものから有料のものまで、数多くの負荷テストツールが存在しております。
当然、それぞれのツールごとに特徴があるため、負荷テストで利用するツールを選定する際に、どれを選んだらいいか頭を悩ます方も多いのはないかと思います。
そこで本日は、負荷テスト時のツール選定方法と、各種ツールの特徴について紹介したいと思います。
ツールの選定基準
まず、テストツールを選定する必要があります。
ツール選定の基準としては「秒間10,000アクセスさせたい」「複雑なテストシナリオを実現させたい」などのように「どういう作業をツールに担って欲しいか」によって選定するツールが異なります。
プロジェクトによって、さまざまな負荷テストが計画がされますが、多くの場合、以下の視点でプロコン(pros and cons)を整理することで、ツールを選定できることが多いです。
- テストシナリオの実現可否
- 作業負荷(設定の難易度、ヘルプの充実)
- テスト結果の期待値
- ツール自体のコスト
それぞれについて説明していきます。
テストシナリオの実現可否
単純に「特定の1ページにアクセスするだけ」というテストシナリオであればどのツールでも実現できます。
ところが、会員サイトであればログイン処理を、またECサイトであれば商品の購入・決済処理のフローを実行させたいかと思います。
さらに、cookieやsessionを利用して画面表示や遷移先を変えていれば、その挙動に合わせたテストを実施したい、など多くのニーズが存在します。
そのため「想定しているテストシナリオが実現できるかどうか」という選定基準は設けておく必要があります。
作業者の負荷(設定の難易度、ヘルプの充実)
シナリオの設定やテスト結果が、GUIで操作できるような直感的にわかりやすいものもあれば、すべてコマンドラインで命令を書かなければ行けないもの、また、実行したいテストシナリオを独特の記述方法で設定ファイルに書かなければならないものなど、ツールによって作業者の作業負荷が異なります。
また、利用者が多いツールの場合は、不明点や使い方を調べたいことがあってもインターネットで容易に探すことが可能ですが、利用者が少なかったり、日本以外で開発されているツールなどは、英語のドキュメントを読み解くなどする必要があります。
作業者の負荷が高くなれば、当然テスト期間も長くなるため、場合によっては作業者の追加アサインを検討する必要があります。
これらの理由は、プロジェクトの工数、及び作業にかかるスケジュールに影響をあたえるため、選定基準として「作業者の負荷がどの程度か、課題・リスクはないか」を考えておくべきです。
テスト結果の期待値
負荷テストが終了したら、テスト結果を分析を行います。何か問題があれば原因を特定し、その解決案を検討します。
そのため、テスト結果がわかりやすければ、分析・解析も早いですし、最終的にテスト結果報告書を作成することになるので、そのまま貼り付けられると都合がよいです。
テストツールによっては、実行結果が画面上にグラフィカルに表示されたり、また結果データをCSVでダウンロードできるようになっていれものもあれば、単純のテキストで項目ごとに表示されるだけのものなどがあります。
仮にテキストだけの結果であっても、Excelなどで加工すれば良いだけなので問題ないのですが、そもそも欲しい項目が取れているかはとても重要です。
そこで、「テスト結果のわかりやすさ、また分析・解析に必要な値が値が取得できること」は選定条件となります。
ツールのコスト
有料のものは100万円以上する、いわゆるベンダー製品になるため、問い合わせれば営業が飛んできます(笑)
もちろん、高額なので画面はGUI化され、複雑なシナリオテストも可能ですし、プロトコルやアクセス元IPの複数指定など、多機能です。
当然、サポートやヘルプも手厚いです。
そういった高額なテストツールは、金融系のシステムや大規模なPOSシステムなど、100%に近い品質保証を求められるようなものに採用されたりしますが、Web案件ではそこまで求められることはないため、「ツールにコストをかけずに行いたい」というケースが多いです。
(基幹系システムとのつなぎ込みがある場合など、特殊な条件下では話が変わりますが、、、)
本ブログはWeb屋がターゲットということもあるので、ここでは「無料のテストツールであること」を条件として話を進めていきます。
テストツールの紹介
選定基準について理解できたところで、各種テストツールの特徴を紹介していきます。
(先に述べたとおり、無料であることを条件としています)
ここでは、市場に出回っている負荷テストツールはのうち、ここ数ヶ月の間でエンジニアにヒアリングをかけて耳にしたことがあるもののなかで、現在も開発・保守がされているテストツールをピックアップしています。
(複数転職した、またフリーランスで複数企業で業務を経験したエンジニア30人くらいにヒアリングしています)
では早速見ていきましょう。
Load Impact
- https://loadimpact.com/
- GUI(Webブラウザ)で操作可能
- 特定URLの指定しかできない( シナリオベースでのテストはできない)
- テスト結果はグラフ表示も可能(一部有料)
- また、月5回まで無料使用可能
CAT-MDES(2017/3/31 サービス終了)
- https://catmdes.com/features/performance-test/
- GUI(Webブラウザ)で操作可能
- 特定URLの指定しかできない( シナリオベースでのテストはできない)
- テスト結果はグラフ表示可能
- Load Impact とは異なり完全無料
Apache JMeter
- http://jmeter.apache.org/
-
GUI(インストール不要のWebアプリ)で操作可能
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果はグラフ表示も可能
-
利用者が多いため、ナレッジやコミュニティが存在する。
Gatling
- http://gatling.io/
-
GUI(インストール不要のWebアプリ)で操作可能
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果はグラフ表示も可能
-
JMeterと比べると、軽く、レポートも見やすく、シナリオが作成しやすいが、まだ日本での利用者が少ないため、わからないことがあると公式ドキュメント(英語)を解読する必要がある。
Tsung
- http://tsung.erlang-projects.org/
-
コマンドラインで操作
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果は、グラフ化されたHTMLファイルが吐き出される
-
他CUIツールと比べると、オプションが充実しているがすべて設定ファイルで行う必要があり、 設定ファイルの書式の理解が必要になる。
Locust
- http://locust.io/
-
GUI(Webブラウザ)で操作可能
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果はテキスト(GUIだけどグラフなどはない)
- シナリオは、すべて設定ファイルに記述して読み込ませる必要がある。また、テスト結果が全リクエストの統計になるため、各リクエストの結果が表示されない。
curl-loader
- http://curl-loader.sourceforge.net/
-
コマンドラインで利用する負荷テストツール
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果はテキストのみだが、 セッション情報やネットワークエラーなどもログとして残してくれる。
- シナリオは、すべて設定ファイルに記述して読み込ませる必要がある。
Siege
- https://www.joedog.org/siege-home/
-
コマンドラインで操作
-
複数URLの指定が可能。また、ヘッダやFormの値の指定が可能なため、ログインや商品購入などの処理もテスト可能
-
テスト結果はテキストのみ
-
ほとんどすべての設定をコマンドライン引数で行うが、各オプションにわかりやすい名前が付いているのでさほどハードルは高くない
ab – Apache HTTP server benchmarking tool (Apache Bench)
- http://httpd.apache.org/docs/2.2/programs/ab.html
-
コマンドラインで操作する
-
特定URLの指定しかできない( シナリオベースでのテストはできない)
-
テスト結果はテキストのみ
-
設定はコマンド上でオプション指定させる必要があり、拡張するとヘッダ情報を送信できたり、複数URLに対して負荷をかけることが可能
まとめ
テストツールを先ほど説明した選定基準に則って評価をすると以下のとおりです。
テストツール | シナリオテスト | 作業負荷 | テスト結果 |
---|---|---|---|
Load Impact | ☓ | ○ | ○ |
CAT-MDES | ☓ | ○ | ○ |
Apache JMeter | ○ | △ | ○ |
Gatling | ○ | △ | ○ |
Tsung | ○ | ☓ | ○ |
Locust | ○ | △ | ☓ |
curl-loader | △ | △ | ☓ |
Siege | ○ | △ | △ |
Apache Bench | △ | ○ | △ |
結果、Apache JMeterとGatlingが良さそうです。
どちらも甲乙つけがたいですが、それぞれの各ツールの特徴から、実績豊富で相談相手も多そうなApache JMeterが一番良いのではないかと思われます。
ただ、GatlingはJMeterより性能が良いため、今後日本でも流行しナレッジが増えてくればGatlingが主流になる可能性はおおいにありそうです。
最後に
僕は、過去の実績から、クライアントから特に指定がなければApache JMeterを利用した負荷テストを提案することが多いです。
そのため、JMeterに関するナレッジは結構あります。
JMeter利用して負荷テストを実施することになった場合は、下の記事も参考いただくとお役に立てる情報もあるかと思います。
コメント一覧
CAT-MDESは、サービスを終了するようです。
K.maltaさん
情報ありがとうございます。反映させていただきました。