Webサービスを導入する上で、システムトラブルを防ぐことが重要です。テストの段階で負荷テストを行うことにより、システムトラブルが発生するリスクを減らせます。

この記事では、負荷テストの重要性やおすすめの負荷テストツールを紹介します。

負荷テストの重要性とは?

負荷テストの重要性とは?

近年ではインターネットバンキングや電子取引、チケット予約など様々な場面においてWebサービスが導入されています。そのため、システムトラブルが起こると、生活やビジネスなどに大きな影響をあたえるのです。

システムトラブルにはアクセス集中や事前に見つからなかった不具合などさまざまなケースがあります。このようなトラブルがあると顧客満足度が下がり、企業の信頼を落としたり損害賠償につながったりするリスクが高まるでしょう。

おすすめの負荷テストツール9選

負荷テストツールにはさまざまな種類があり、それぞれ特徴が異なります。この章ではおすすめの負荷テストツールを9種類紹介します。

負荷テストツール特徴
Apache Bench単一のエンドポイントを計測するのに便利
Gatlingシナリオ作成ができる
Apache JMeter20年近く使われている
LocustPythonの知識がある人に向いている
k6JSでシナリオを記述
Vegetaシンプルでありながら多様なユースケースに対応
Tsungさまざまなプロトコルに対応
Taurus使い方がシンプル
LoadRunnerクラウドかオンプレミスを選択可能

1.Apache Bench

Apache Bench

引用:ab – Apache HTTP server benchmarking tool

Apache Benchは、単一のエンドポイントを計測するのに便利な負荷テストツールです。しかし、大きな負担のある場合は、CPUの問題で利用できないケースがあります。Apacheに同梱されており、Webサーバの性能テストに利用されるのが一般的です。しかし、シナリオベースのテストには向いていません。

2.Gatling

Gatling

引用:Gatling

Gatlingとは、Scalaといった実装言語に対応しており、シナリオ作成ができる負荷テストツールです。単純なシナリオであればScalaに関する知識は不要ですが、複雑なシナリオに対応する場合はScalaを理解している必要があります。

使い勝手は決してシンプルとはいえず、Scalaを使いたい人以外にはあまりおすすめできません。有料のクラウド版を利用することも可能です。

3.Apache JMeter

Apache JMeter

引用:Apache-Apache JMeter

Apache JMeterは、Java言語を実装している20年近く使われている負荷テストツールです。プラグインを活用することで拡張ができます。レスポンスを再利用したりWeb上に豊富な情報が揃っているなど負荷テストに必要な機能は揃っています。しかし、Javaの実行環境が用意できない人には向いていません。

4.Locust

Locust

引用:Locust

Locustは、Pythonで実装しておりPythonの知識がある人に向いている負荷テストツールです。phthonでシナリオを記述し、実行したあとリアルタイムに確認できます。

大きな負荷を生成するためには、他のツールと比べて、複数サーバで連携しているLocustがおすすめです。継続的なバージョンアップにより便利な部分が増えている点も魅力です。

5. k6

k6

引用:k6-Grafana Labs

k6はGoを実装言語としており、JSでシナリオを記述する負荷テストツールです。IDEやCI、監視ツールなどといったツール連携ができるほか、クラウド版の利用も可能です。

年々機能がよくなっており、数年前にOSS版リリース時にk6と名前を変更したのですが、利用者が増え続けています。JSでシナリオを記述するため、JSが書けない人にはおすすめできません。

6.Vegeta

Vegeta

引用:tsenart-Vegeta

VegetaはGo言語で開発しており、CLIとしても利用可能な負荷テストツールです。シンプルな作りであり、attackコマンドで負荷をかけるだけです。vegeta reportコマンドで結果の確認も可能です。

さらに、シンプルでありながら多様なユースケースに対応していることも特徴であり、さまざまな使い方ができます。

7.Tsung

Tsung

引用:erlangproject-Tsung

Tsungは、Erlangと呼ばれる言語で実装できるXMPP向きの負荷テストツールです。現在ではXMPPだけでなく、さまざまなプロトコルに対応しています。

TCP/UDPレイヤーであれば対応可能であることから、ゲームのテストにも向いています。しかし、HTTPを初めとして使いづらいプロトコルがあるので注意が必要です。

8.Taurus

Taurus

引用:BlazeMeter-Taurus

TaurusはGatlingやJmeterと比べて使い方がDSLによってシンプルになっている負荷テストツールです。インストールやキャプチャの取得が不要で、GUIから編集する必要もありません。もともと実行されているJmeter以外にVegataやLocust、Gatlingなどのツールを活用して作ったスクリプトの流用が可能です。

9.LoadRunner

LoadRunner

引用:アシスト-LoadRunner

LoadRunnerは、テスト要件によってクラウドかオンプレミスから稼働環境を選べる負荷テストツールです。そのため、アクセス集中時にはクラウドを使うなどさまざまな活用法があります。

1994年にリリースしてから30年近くの実績があり、ユーザビリティの高いツールです。この他にも、WebのほかにERPやCitrixなどさまざまな環境に対応しています。

無償の負荷テストツールを利用するメリットとデメリット

無償の負荷テストツールを利用するメリットとデメリット

無償の負荷テストツールを利用するメリットやデメリットを説明します。

メリット

無料のオープンソースソフトウェアを使うメリットとして、コストがかからないことが挙げられます。資金の面で負担がないことから、コスト面において厳しい企業であっても負荷テストを進めることが可能です。

さらに、有料のソフトウェアよりもアップグレードが早く、スムーズなセキュリティでのアップデートや新しい機能などの受け取りが可能です。

このほかにも、オープンソースであれば利用者のレビューをいち早く確認できます。また。ソフトウェアによってはアドオンを活用できます。

デメリット

無料のオープンソースソフトウェアでは、ユーザビリティを重要視していません。つまり、使いこなすためには高度な開発知識が求められます。

さらに、大容量の負荷テストをする場合はメモリーの面で問題が発生します。このほか、トラブルがあった場合に十分なサポートがないなど知識がないと対応できない理由があるのです。

有償の負荷テストツールを利用するメリットとデメリット

有償の負荷テストツールを利用するメリットとデメリット

有償の負荷テストツールを利用するメリットとデメリットを説明します。

メリット

有償の負荷テストツールやユーザビリティが高くカスタマーサポートが充実しているため、十分な開発知識がなくても利用できる場合があります。

所有している負荷試験機の仕様に関連する知識をもった担当者がサポートしてくれるので、安心してテストができます。トラブルがあった場合24時間365日対応しているケースもあるのです。

ダウンタイムが発生した際におり、顧客満足度や収益に大きな影響を受けないように支援しているツールもあります。

デメリット

有償の負荷テストツールは生成している仮想ユーザー数によってコストが変動するため、高額になる可能性があります。最終的には費用対効果を考える必要がありますが、初期費用において負担が大きいことには違いありません。

ユーザビリティの高いツールであっても、学習曲線(ラーニングカーブ)はどうしてもあります。このため、最大限にツールを活かすためには時間が必要になります。

まとめ

まとめ

負荷テストルールには企業向け(有償)と無償のタイプがあります。それぞれにメリット、デメリットが異なり、導入者にあったツールを選ぶことが重要です。

さらに、企業向けにおいてもさまざまな特徴があるため、導入目的を達成できるツールを選ぶようにしましょう。