見出し画像

【負荷テスト入門編】6つの負荷テストツール(サービス)を解説!

はじめに

こんにちは。SHIFT DAAE(ダーエ)開発グループ所属のNogamiです。

皆さんは、負荷テストを行う際に、普段どんなツールを使われていますか?

今回は、システム開発に欠かせない「負荷テスト」に使用する、6つの負荷テストツール(サービス)について解説させていただきます!

6つの負荷テストツール(サービス)

1.「JMeter」

「JMeter」は負荷テストツールを検討する際に、必ずといっていいほど名前が挙がるオープンソースのテストツールです。

ローカル環境にインストールすることができ、テストシナリオの作成やテスト実行を行うことができます。

引用:Apache 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」を用いて作成します。

引用:k6_http-requests

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」を用いて作成します。

引用:Locust_HTTPリクエスト

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」の使い方については、こちらをご参考にしてください。

【APIの性能テストにLocustを使ってみた】


4.「Distributed Load Testing on AWS」

「Distributed Load Testing on AWS」は、負荷テストツールの実行環境を提供するPaaSのサービスです。

1つ目に紹介した、「JMeter」で作成したテストシナリオを利用し、クラウド上でテスト実行することができます。

引用:AWS Load testing

AWSの「CloudFormation」で、該当の「AWS CloudFormation テンプレート」を読込むことで、クラウド上にテスト実行環境を構築することができます。

負荷テストの用のテンプレートを利用すると下記の構成で、AWS上に自動でデプロイが行われます。

引用:分散負荷テストのアーキテクチャ

複数のAWSリージョンにまたがってテストをすることができ、同時接続数が数万の大規模な負荷テストが可能です。

※1Gbpsを超える負荷をかける場合は、事前にフォームへ申請が必要になります。

引用:AWS グローバルインフラストラクチャ

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/


執筆者プロフィール: Nogami
SIerで数年のキャリアを経て、SHIFT入社。「売れるサービスづくり」を手掛けるDAAE部に所属。
技術・サービスをキャッチアップして、発信していきたいと思います!

お問合せはお気軽に
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/