【負荷テスト入門編】6つの負荷テストツール(サービス)を解説!
はじめに
こんにちは。SHIFT DAAE(ダーエ)開発グループ所属のNogamiです。
皆さんは、負荷テストを行う際に、普段どんなツールを使われていますか?
今回は、システム開発に欠かせない「負荷テスト」に使用する、6つの負荷テストツール(サービス)について解説させていただきます!
6つの負荷テストツール(サービス)
1.「JMeter」
「JMeter」は負荷テストツールを検討する際に、必ずといっていいほど名前が挙がるオープンソースのテストツールです。
ローカル環境にインストールすることができ、テストシナリオの作成やテスト実行を行うことができます。
テストシナリオは、コーディング不要で、GUI上で作成することができます。
「JMeter」は20年以上に渡り利用されているツールであり、数多くのプラグインや関連サービスが存在します。
多数のプラグインで機能を拡張
PaaSやSaaSの負荷テストツールと連携することで、実行環境を拡張
ということが手軽にできる点が魅力的です。
【JMeterのプラグイン例】
【JMeter対応のサービス例】
Distributed Load Testing on AWS
BlazeMeter
「JMeter」(ツール)×「BlazeMeter」(サービス)の使い方については、コチラの記事で解説しているので、ご参考にしてください。
【負荷テスト実践編】負荷テストサービス「BlazeMeter」の使い方を解説!
2.「k6」
k6は、Grafana Labs社とコミュニティによって開発されているオープンソースの負荷テストツールです。
2017年頃からリリースされ、今もアップデートが頻繁に行われている、比較的新しい負荷テストツールとなっています。
「JMeter」と同様に、ローカル環境にインストールすることができ、テストシナリオの作成やテスト実行を行うことができます。
一方で「JMeter」と異なる点として、テストシナリオはコーディングが必要になります。
テストシナリオは「JavaScript」を用いて作成します。
import http from 'k6/http';
export default function () {
const url = 'http://test.k6.io/login';
const payload = JSON.stringify({
email: 'aaa',
password: 'bbb',
});
const params = {
headers: {
'Content-Type': 'application/json',
},
};
http.post(url, payload, params);
}
「k6」は、「Go」で開発されており、「k6」と「JMeter」で比較した際は、「k6」の方が必要メモリは少なくなっています。
3.「Locust」
「Locust」は、オープンソースの負荷テストツールです。
「JMeter」や「k6」と同様に、ローカル環境にインストールすることができ、テストシナリオの作成やテスト実行を行うことができます。
「JMeter」と異なる点としては、「k6」と同様に、テストシナリオはコーディングが必要になります。
「k6」と異なる点としては、テストシナリオは「Python」を用いて作成します。
from locust import HttpUser, between, task
class WebsiteUser(HttpUser):
wait_time = between(5, 15)
def on_start(self):
self.client.post("/login", {
"username": "test_user",
"password": ""
})
@task
def index(self):
self.client.get("/")
self.client.get("/static/assets.js")
@task
def about(self):
self.client.get("/about/")
「JMeter」と「Locust」を比較すると、「Locust」の方がメモリ消費が少なくなっています。
「Locust」の使い方については、こちらをご参考にしてください。
4.「Distributed Load Testing on AWS」
「Distributed Load Testing on AWS」は、負荷テストツールの実行環境を提供するPaaSのサービスです。
1つ目に紹介した、「JMeter」で作成したテストシナリオを利用し、クラウド上でテスト実行することができます。
AWSの「CloudFormation」で、該当の「AWS CloudFormation テンプレート」を読込むことで、クラウド上にテスト実行環境を構築することができます。
負荷テストの用のテンプレートを利用すると下記の構成で、AWS上に自動でデプロイが行われます。
複数のAWSリージョンにまたがってテストをすることができ、同時接続数が数万の大規模な負荷テストが可能です。
※1Gbpsを超える負荷をかける場合は、事前にフォームへ申請が必要になります。
5.「BlazeMeter」
「BlazeMeter」は、負荷テストツールの実行環境を提供するSaaSのサービスです。
1つ目に紹介した「JMeter」と2つ目に紹介した「k6」のテストシナリオを利用し、クラウド上でテスト実行することができます。
100万人以上の仮想ユーザーを生成することができ、大規模な負荷テストにも対応しています。
また、AWS/Azure/GCPの3大クラウドを実行環境として指定可能で、各クラウド環境の複数のリージョンから負荷をかけられます。
実際に私がBlazeMeterを利用した際は、数Gbpsの負荷を掛けることが出来ました。
引用:BlazeMeter
GUI上で柔軟に「同時接続数」「実行時間」「リージョン」などの設定・変更が行えます。
テストのサマリーレポートも自動生成されるので、テスト実行後すぐに結果を確認し、共有することができます。
「JMeter」(ツール)×「BlazeMeter」(サービス)の使い方については、コチラの記事で解説しているので、ご参考にしてください。
【負荷テスト実践編】負荷テストサービス「BlazeMeter」の使い方を解説!
6.「k6 Cloud」
「k6 Cloud」は、負荷テストツールの実行環境を提供するPaaSのサービスです。
2つ目に紹介した、「k6」で作成したテストシナリオを利用し、クラウド上で実行することができます。
引用:k6-cloud
5つ目に紹介した「BlazeMeter」と同様に、テストのサマリーレポートも自動生成されるので、テスト実行後すぐに結果を確認し、共有することができます。
引用:k6 Cloud_Export results
おわりに
今回は、合計6つの負荷テストツール(サービス)についてご紹介させていただきました。
ツール
サービス
「チームメンバーのスキル」や「プロジェクトの特性」に応じて、適切な負荷テストツール(サービス)をご利用ください!
\もっと身近にもっとリアルに!DAAE公式Twitter/
お問合せはお気軽に
https://service.shiftinc.jp/contact/
SHIFTについて(コーポレートサイト)
https://www.shiftinc.jp/
SHIFTのサービスについて(サービスサイト)
https://service.shiftinc.jp/
SHIFTの導入事例
https://service.shiftinc.jp/case/
お役立ち資料はこちら
https://service.shiftinc.jp/resources/
SHIFTの採用情報はこちら
https://recruit.shiftinc.jp/career/