シェア
//Apache JMeter: パフォーマンスと負荷テストツール

Apache JMeter: パフォーマンスと負荷テストツール

I. Apache JMeterの紹介

Apache JMeterは、Apache Software Foundationによって開発されたオープンソースのツールで、ウェブアプリケーション、API、データベース、その他多くのプロトコルのパフォーマンステストと負荷テストに使用されます。

当初、JMeterはウェブアプリケーションのテスト用に設計されましたが、その後、さまざまなサービスをサポートする無料ツールとして、ソフトウェアテストコミュニティで広く普及しました。

II. Apache JMeterの主な機能

1. 負荷テスト(Load Testing)
同時に数千人の仮想ユーザーをシステムにシミュレートして、システムの負荷耐性をテストします。

2. 多くのプロトコルのサポート
JMeterは、異なる条件下でのレスポンスタイム、スループット、リソース使用率、その他の指標を測定します。サポートされているプロトコルには以下が含まれます:

  • HTTP, HTTPS(ウェブとモバイル)
  • SOAP, REST(API)
  • FTP, TCP, SMTP, IMAP(メール)
  • JDBC(データベース)、WebSocket, JMS, LDAP など

3. マルチスレッド(Multithreading)
異なるテストシナリオを個別のスレッドで並行して実行できます。

4. 詳細なレポート
レスポンスタイム、スループット、エラー数、その他重要な統計情報をグラフィカルなレポートとして提供します。

5. 拡張性
機能を強化するためのプラグインを追加でき、DevOpsやCI/CDツールと良好に統合できます。

III. Apache JMeterのアーキテクチャ

1. テストプラン
JMeterのテスト構成を定義するもので、Thread Group、Samplers、Listeners、およびその他の設定要素を含みます。

2. スレッドグループ(Thread Group)
仮想ユーザー数(スレッド)をシミュレートし、テストシナリオを実行します。

3. サンプラー(Samplers)
テスト中にサーバーへリクエストを送信するために使用され、HTTP、FTP、JDBCなど、さまざまなプロトコルをサポートします。

4. タイマー(Timers)
リクエスト間に待機時間を追加し、ユーザーの実際の行動をシミュレートします。

5. アサーション(Assertions)
サーバーからのレスポンスが正しいことを保証し、レスポンスデータの正確性を検証します。

6. リスナー(Listeners)
テスト結果をデータ収集し、グラフやレポートで表示します。

IV. Apache JMeterの制限

1. ユーザーインターフェース(UI)
UIは使いやすいものの、複雑なテストシナリオを視覚的に管理する際に限界があります。

2. 大規模テスト時のパフォーマンス制限
数百万人のユーザーをシミュレートする大規模テストでは、CPUやRAMリソースを大量に消費し、性能に影響が出る可能性があります。

3. UIテストの非対応
JMeterは主にバックエンドのテストを対象としており、ユーザーインターフェースを伴うアプリケーションのテストには適していません。

V. Apache JMeterの実際の使用例

ウェブサイトの負荷テスト: 数千人のユーザーが同時にウェブサイトにアクセスし、システムのレスポンスタイムと負荷耐性を評価します。

APIの評価: APIに多数のリクエストを送信し、安定性とレスポンスタイムをチェックします。

データベースのテスト: SQLクエリやデータベース操作のパフォーマンスを評価します。

VI. Apache JMeterのインストール

Apache JMeterはJavaで書かれているため、JMeterを実行する前にJREまたはJDKをインストールする必要があります。
公式ウェブサイトにアクセスして、Apache JMeterをダウンロードしてください。

ダウンロードしたZIPファイルを解凍します。

binフォルダにアクセスし、ApacheJMeter.jarファイルをダブルクリックしてJMeterを起動します。

アプリケーションのインターフェース。

VII. Googleの負荷テストのガイド

1. スレッドグループの作成
Test Planを右クリックし、「Add → Threads (Users) → Thread Group」を選択します。

Thread Group内のパラメータ:
Number of Threads (users)
仮想ユーザーの数を設定し、同時にサーバーにリクエストを送信します。

Ramp-Up Period (seconds)
全てのスレッドが完全に起動するまでの時間(秒)を設定します。
例:スレッドが10個、Ramp-Up時間が100秒の場合、10秒ごとに1スレッドが起動します。

Loop Count
各スレッドがThread Group内の全サンプラーを実行する回数を設定します。
「Forever」を選択すると、テストが終了するまで無限にループします。

Scheduler
スケジューラを有効にし、Thread Groupの開始および終了時間を設定します。

Duration (seconds)
スケジューラを有効にした場合、Thread Groupが実行される時間を設定します。

Startup Delay (seconds)
テスト開始後、Thread Groupが開始するまでの遅延時間を設定します。

Action to be taken after a sampler error
サンプラーのエラー時に取るアクション:

  • Continue: スレッドを継続して実行。
  • Start Next Thread Loop: サンプラーをスキップして、次のスレッドループを開始。
  • Stop Thread, Test, Test Now: スレッドを停止し、テスト全体を中止。

この例では、10人のユーザーが1秒でリクエストを実行し、1回のみ実行されます。

2. リクエストの作成
GoogleにHTTPリクエストを送信するためのHTTPリクエストを作成します。データベースの場合はJDBCリクエスト、メールの場合はSMTPリクエストなどを使用します。

HTTPリクエストのパラメータ:
Server Name or IP
リクエストを送信するウェブサーバーのホスト名またはIPアドレス。
例:www.example.comまたは192.168.1.1

Port Number
ウェブサーバーがHTTPリクエストをリッスンするポート番号。入力しない場合、デフォルトはHTTPは80、HTTPSは443です。

Protocol
HTTPリクエストに使用するプロトコル。デフォルトはHTTPです。SSL接続の場合はHTTPSを使用できます。

Method
HTTPリクエストに使用するメソッド:

  • GET: サーバーからリソースを取得します。
  • POST: データをサーバーに送信します。
  • PUT: 新しいリソースをアップロードまたは既存のリソースを置き換えます。
  • DELETE: リソースを削除します。
  • HEAD, OPTIONS, PATCH,…

Path
サーバー上のリソースのパス。
例:/api/v1/userまたは/login

Content Encoding
コンテンツのエンコーディングタイプ。通常はUTF-8を使用します。

Parameters
HTTPリクエストに含めるパラメータのリスト。通常、GETまたはPOSTメソッドに使用されます。

Body Data
HTTPリクエストのボディに送信するデータ。通常はPOSTで使用されます。

Files Upload
HTTPリクエスト内でファイルをアップロードする場合に使用します。

3. Listenerを追加して結果を表示

全スレッドの結果を表示
Thread Groupを右クリック → Add → Listener → Summary Reportを選択します。

各スレッドの結果を表示

テストを実行

結果:

例:

  • リクエスト数:10。
  • 平均:Googleが応答するのにかかる平均時間は325msです。
  • 最小:Googleが応答するのにかかる最短時間は283msです。
  • 最大:Googleが応答するのにかかる最長時間は379msです。
  • エラー率:エラーのあるリクエストは0%です。

結果を削除し、Number of Threads (Users) = 100で再実行します。つまり、100人のユーザーが同時にGoogleページを読み込みます。

結果:
100人のユーザーが同時にリクエストを送信すると、10人のユーザーで実行した場合よりも応答にかかる時間が長くなります。

VIII. 結論

Apache JMeterは、さまざまなアプリケーションのパフォーマンスと負荷テストを行うための優れたツールです。システムの能力を評価するための高コストをかけることなく使用できるため、多くの組織にとって最適な選択肢です。

いくつかの制限はありますが、JMeterは拡張性があり、サポートコミュニティも活発なため、多くのテストプロジェクトで優先的に使用されています。

Apache JMeterについてさらに詳しく知りたい場合は、公式サイトを参照するか、ChatGPTで学習することができます。

Nguyễn Đặng Nhật Minh
Developer

今すぐ応募







    福利厚生

    給料・ボーナス制度

    社員の感情・願望を理解しているので、リバークレーンベトナムは特に年2回の定期昇給制度を設けています。毎年6月と12月に評価を行い、毎年1月と7月に給与が変更されます。また、社員は月次と年次の優秀な個人には定期的な業績賞与が別で支給されます。

    日本研修制度

    世界中の新しい技術分野に触れるために、社員を日本にオンサイトさせる方針があります。さらに、技術分野か管理分野かのキャリアパスは社員の決定次第です。

    毎年社員旅行

    リバークレイン・ベトナムは、スタッフに挑戦の機会を提供するだけでなく、年に一度の魅力的な旅行で彼らを楽しませています。エキサイティングなガラディナーやチームビルディングゲームは、リバークレインのメンバー同士の絆をさらに深める手助けをします。

    リバークレイン イベント

    チームビルディング・ファミリーデー・お夏休み・中秋節などのイベントはチーム内のメンバーが接続出来るしお互いに自分のことを共有出来る機会です。ご家族員に連携する際にはそれも誇りに言われています。

    社会保険制度

    リバークレーンベトナムは従業員に社会保険、医療保険、失業手当などの社会保険制度があります。当社は、これらの保険に関するあらゆる手続きをスタッフに必ずサポートしています。さらに、他の保険契約も考慮され、検討されています。

    他福利

    社員向けの活動をサポートすることもあります。 ・文化・芸術・スポーツクラブの運営費用 ・技術研究の教科書を購入する金額 ・エンジニア試験・言語能力試験を受験料 ・ソフトスキルのセミナー・コースの参加費 ・等 また会社政策通り、他のベネフィットもあります。

    © 2012 RiverCrane Vietnam. All rights reserved.

    Close