Webサービスを導入する上で、システムトラブルを防ぐことが重要です。テストの段階で負荷テストを行うことにより、システムトラブルが発生するリスクを減らせます。
この記事では、負荷テストの重要性やおすすめの負荷テストツールを紹介します。
負荷テストの重要性とは?
近年ではインターネットバンキングや電子取引、チケット予約など様々な場面においてWebサービスが導入されています。そのため、システムトラブルが起こると、生活やビジネスなどに大きな影響をあたえるのです。
システムトラブルにはアクセス集中や事前に見つからなかった不具合などさまざまなケースがあります。このようなトラブルがあると顧客満足度が下がり、企業の信頼を落としたり損害賠償につながったりするリスクが高まるでしょう。
おすすめの負荷テストツール9選
負荷テストツールにはさまざまな種類があり、それぞれ特徴が異なります。この章ではおすすめの負荷テストツールを9種類紹介します。
負荷テストツール | 特徴 |
Apache Bench | 単一のエンドポイントを計測するのに便利 |
Gatling | シナリオ作成ができる |
Apache JMeter | 20年近く使われている |
Locust | Pythonの知識がある人に向いている |
k6 | JSでシナリオを記述 |
Vegeta | シンプルでありながら多様なユースケースに対応 |
Tsung | さまざまなプロトコルに対応 |
Taurus | 使い方がシンプル |
LoadRunner | クラウドかオンプレミスを選択可能 |
1.Apache Bench
引用:ab – Apache HTTP server benchmarking tool
Apache Benchは、単一のエンドポイントを計測するのに便利な負荷テストツールです。しかし、大きな負担のある場合は、CPUの問題で利用できないケースがあります。Apacheに同梱されており、Webサーバの性能テストに利用されるのが一般的です。しかし、シナリオベースのテストには向いていません。
2.Gatling
引用:Gatling
Gatlingとは、Scalaといった実装言語に対応しており、シナリオ作成ができる負荷テストツールです。単純なシナリオであればScalaに関する知識は不要ですが、複雑なシナリオに対応する場合はScalaを理解している必要があります。
使い勝手は決してシンプルとはいえず、Scalaを使いたい人以外にはあまりおすすめできません。有料のクラウド版を利用することも可能です。
3.Apache JMeter
Apache JMeterは、Java言語を実装している20年近く使われている負荷テストツールです。プラグインを活用することで拡張ができます。レスポンスを再利用したりWeb上に豊富な情報が揃っているなど負荷テストに必要な機能は揃っています。しかし、Javaの実行環境が用意できない人には向いていません。
4.Locust
引用:Locust
Locustは、Pythonで実装しておりPythonの知識がある人に向いている負荷テストツールです。phthonでシナリオを記述し、実行したあとリアルタイムに確認できます。
大きな負荷を生成するためには、他のツールと比べて、複数サーバで連携しているLocustがおすすめです。継続的なバージョンアップにより便利な部分が増えている点も魅力です。
5. k6
k6はGoを実装言語としており、JSでシナリオを記述する負荷テストツールです。IDEやCI、監視ツールなどといったツール連携ができるほか、クラウド版の利用も可能です。
年々機能がよくなっており、数年前にOSS版リリース時にk6と名前を変更したのですが、利用者が増え続けています。JSでシナリオを記述するため、JSが書けない人にはおすすめできません。
6.Vegeta
VegetaはGo言語で開発しており、CLIとしても利用可能な負荷テストツールです。シンプルな作りであり、attackコマンドで負荷をかけるだけです。vegeta reportコマンドで結果の確認も可能です。
さらに、シンプルでありながら多様なユースケースに対応していることも特徴であり、さまざまな使い方ができます。
7.Tsung
Tsungは、Erlangと呼ばれる言語で実装できるXMPP向きの負荷テストツールです。現在ではXMPPだけでなく、さまざまなプロトコルに対応しています。
TCP/UDPレイヤーであれば対応可能であることから、ゲームのテストにも向いています。しかし、HTTPを初めとして使いづらいプロトコルがあるので注意が必要です。
8.Taurus
TaurusはGatlingやJmeterと比べて使い方がDSLによってシンプルになっている負荷テストツールです。インストールやキャプチャの取得が不要で、GUIから編集する必要もありません。もともと実行されているJmeter以外にVegataやLocust、Gatlingなどのツールを活用して作ったスクリプトの流用が可能です。
9.LoadRunner
LoadRunnerは、テスト要件によってクラウドかオンプレミスから稼働環境を選べる負荷テストツールです。そのため、アクセス集中時にはクラウドを使うなどさまざまな活用法があります。
1994年にリリースしてから30年近くの実績があり、ユーザビリティの高いツールです。この他にも、WebのほかにERPやCitrixなどさまざまな環境に対応しています。
無償の負荷テストツールを利用するメリットとデメリット
無償の負荷テストツールを利用するメリットやデメリットを説明します。
メリット
無料のオープンソースソフトウェアを使うメリットとして、コストがかからないことが挙げられます。資金の面で負担がないことから、コスト面において厳しい企業であっても負荷テストを進めることが可能です。
さらに、有料のソフトウェアよりもアップグレードが早く、スムーズなセキュリティでのアップデートや新しい機能などの受け取りが可能です。
このほかにも、オープンソースであれば利用者のレビューをいち早く確認できます。また。ソフトウェアによってはアドオンを活用できます。
デメリット
無料のオープンソースソフトウェアでは、ユーザビリティを重要視していません。つまり、使いこなすためには高度な開発知識が求められます。
さらに、大容量の負荷テストをする場合はメモリーの面で問題が発生します。このほか、トラブルがあった場合に十分なサポートがないなど知識がないと対応できない理由があるのです。
有償の負荷テストツールを利用するメリットとデメリット
有償の負荷テストツールを利用するメリットとデメリットを説明します。
メリット
有償の負荷テストツールやユーザビリティが高くカスタマーサポートが充実しているため、十分な開発知識がなくても利用できる場合があります。
所有している負荷試験機の仕様に関連する知識をもった担当者がサポートしてくれるので、安心してテストができます。トラブルがあった場合24時間365日対応しているケースもあるのです。
ダウンタイムが発生した際におり、顧客満足度や収益に大きな影響を受けないように支援しているツールもあります。
デメリット
有償の負荷テストツールは生成している仮想ユーザー数によってコストが変動するため、高額になる可能性があります。最終的には費用対効果を考える必要がありますが、初期費用において負担が大きいことには違いありません。
ユーザビリティの高いツールであっても、学習曲線(ラーニングカーブ)はどうしてもあります。このため、最大限にツールを活かすためには時間が必要になります。
まとめ
負荷テストルールには企業向け(有償)と無償のタイプがあります。それぞれにメリット、デメリットが異なり、導入者にあったツールを選ぶことが重要です。
さらに、企業向けにおいてもさまざまな特徴があるため、導入目的を達成できるツールを選ぶようにしましょう。