JMeterとは何か

Apache JMeter は、Apache Software Foundation が開発・公開しているオープンソースの負荷テストツールです。 Java で実装されており、Windows・macOS・Linux いずれの環境でも動作します。 元々は Web アプリケーションの負荷テストを目的として開発されましたが、現在では FTP・SMTP・JDBC・LDAP・JMS など多様なプロトコルに対応しており、さまざまな種類のシステムテストに活用されています。

JMeter の最大の特徴は、GUI でテストシナリオを直感的に組み立てられる点です。 ツリー形式のコンポーネントを並べることでテストシナリオを定義でき、専門的なプログラミング知識がなくても基本的な負荷テストを実施できます。 さらに、GUI で設計したシナリオを CLI(コマンドラインインターフェース)から実行することで、高い負荷をかける本番規模の性能テストにも対応します。

💡 「負荷テスト」と「パフォーマンステスト」の違い

負荷テスト(Load Test)は、実際の想定ユーザー数に近い負荷をシステムにかけ、スループット・レスポンスタイムなどの性能指標を測定するテストです。 パフォーマンステストは、負荷テストを含む性能全般に関するテストの総称として使われることが多く、スパイクテスト(瞬間的な急増負荷)・ストレステスト(限界負荷)・耐久テスト(長時間負荷)なども含みます。 JMeter は、これらすべてのテストシナリオに対応しています。

主な用途

JMeter が実際の現場でよく使われるユースケースを紹介します。

Webシステムの負荷テスト
HTTP / HTTPS リクエストを仮想ユーザーとして大量に発行し、レスポンスタイムやスループットを計測する。サービスリリース前の性能確認で最もよく使われる用途。
REST API のテスト
GET・POST・PUT・DELETE などの HTTP メソッドを使った API の動作確認・負荷テストに使用。認証トークンを動的に取得してヘッダーに付与するような複雑なシナリオも構築可能。
データベース接続テスト
JDBC サンプラーを使い、SQL クエリを直接 DB に対して発行する負荷テスト。DB の性能ボトルネック調査に有効。
CI/CD パイプラインへの組込み
CLI モードで JMeter を実行し、JTL ファイルや HTML レポートを CI ツール(Jenkins・GitHub Actions 等)の成果物として保存する構成。デプロイのたびに自動性能チェックを行える。

主要な特徴・機能

JMeter が多くの現場で採用される理由となっている主要機能をまとめます。

機能カテゴリ 説明
マルチプロトコル対応 HTTP/HTTPS・FTP・SMTP・LDAP・JDBC・JMS・WebSocket(プラグイン)など多数のプロトコルをサポート
GUI テストプランエディタ ツリー形式の GUI でテストシナリオを視覚的に組み立て可能。ドラッグ&ドロップでコンポーネントを追加できる
CSV データ駆動テスト CSV ファイルからユーザー名・パスワード・URLなどを動的に読み込み、テストデータを可変化できる
アサーション レスポンスコード・レスポンスボディ・レスポンスサイズなどを検証し、テストの合否を判定
リスナー(結果集計) Summary Report・Aggregate Report・グラフ表示など、多彩な集計・可視化機能を内蔵
分散負荷テスト 複数のマシンにエージェント(Slave)を配置し、コントローラーから統合制御する分散テストが可能
プラグインエコシステム JMeter Plugins Manager から多数の拡張プラグインを追加可能。WebSocket・Selenium 連携なども対応
HTMLレポート生成 CLI 実行後に -e -o オプションを指定するだけで見やすい HTML レポートを自動生成

類似ツールとの比較

JMeter と同様の目的で使われる主要な負荷テストツールを比較します。ツール選定の参考にしてください。

ツール 言語 学習コスト GUI 分散テスト 特徴・向いている用途
JMeter Java 低〜中 多機能・豊富なプラグイン。非エンジニアでも扱いやすい。エンタープライズ環境での採用実績が多い
Gatling Scala / Java コードでシナリオを記述する設計。CI/CD との親和性が高く、テスト結果の再現性が高い
k6 JavaScript △(Web UI あり) JavaScript で手軽にシナリオを書ける。Grafana との連携が容易。クラウドネイティブ環境に向く
Locust Python ○(Web UI) Python で柔軟なシナリオ記述が可能。Pythonエンジニアに親しみやすい
Artillery Node.js ×(CLI中心) YAML でシナリオを定義。クラウド実行に対応。軽量でシンプルなテストに向く

どのツールを選べばよいか

チームにプログラマーが多く、コードで管理したい場合は k6 / Gatling / Locust が向いています。 一方、テスト担当者が主体となり GUI で直感的にシナリオを作りたい場合や、大規模なエンタープライズシステムで豊富なプロトコルへの対応が必要な場合は JMeter が適しています。 このシリーズでは JMeter を採用し、導入から実施までをハンズオン形式で学びます。

JMeterを選ぶ判断基準

次のような状況では JMeter が特に有力な選択肢になります。

  • チームにプログラミング経験が少ないメンバーがいて、GUI 操作でテストを組み立てたい
  • HTTP 以外のプロトコル(JDBC・SMTP・FTP など)もまとめて負荷テストしたい
  • 既存の JMeter スクリプト(.jmx ファイル)の資産が社内にある
  • 分散テストを自前インフラで実施したい(ライセンスコストを抑えたい)
  • Jenkins などの CI ツールとの連携実績がチーム内にすでにある

⚠️ JMeter の注意点

JMeter は GUI 上でテストを実行する際にツール自体のリソース消費が大きくなるため、大規模な負荷テストには CLI モードでの実行が必須です。 また、JMeter は仮想ユーザーをスレッドとして実装しているため、同等のリクエスト数を出すために他ツールより多くのメモリを消費することがあります。 数千〜数万ユーザーの大規模テストでは分散構成を検討してください。

このシリーズで扱う範囲

本シリーズは全 8 パートで構成されます。導入から実際に負荷テストを完遂するまでの流れを、ハンズオン形式で学べます。

PART テーマ 内容
01JMeterとは(本記事)概要・用途・ツール比較
02環境準備JDK・JMeter インストール・起動確認
03GUIの基本操作画面構成・主要コンポーネントの役割
04テストシナリオ作成スレッドグループ・HTTPリクエスト・アサーション設定
05リスナー設定結果の収集・Summary Report・ツリー表示
06テスト実行GUI / CLI 実行手順・JTL ファイルの保存
07結果の読み方スループット・レスポンスタイム・エラー率・HTMLレポート
08まとめと次のステップよくあるつまずきポイント・応用トピックへのポインタ

次の章では…

PART 02 では JMeter の実行に必要な Java(JDK) のインストール確認から、JMeter 本体のダウンロード・ディレクトリ構成・起動方法まで手順を解説します。

→ PART 02 — 環境準備へ