不動の鳥の勉強記録

時間があるときに勉強したことをメモします。

とりあえずJMeterを触ってみたい人向けの記事

■はじめに

夏バテ気味でけだるさなのなか働いているひよです。久々の投稿はJMeterにかかわるものとなります。
これからJMeterを使ってみたいという方向けに、JMeterのインストール、テスト環境の構築、そしてJMeterの実行まで簡単に記載します。勉強の手助けになれば幸いです。

■実行環境

  • OS: Windows 10 Home 64bit
  • Java: 1.8.0_221
  • JMeter: 5.1.1
  • Node: 10.15.0
  • npm: 6.4.1
  • express: 4.16.0

1. JMeterのインストール

JMeterのインストールはいろいろな方が用意してくださっているので簡略化します。

まず、Apache JMeter - Download Apache JMeterから対象のプログラムをダウンロードします。
私は「apache-jmeter-5.1.1.zip」をダウンロードしました。

今回ダウンロードしたapache-jmeter-5.1.1はページに記載されている通りJava 8+が必要になるので、Javaをインストールしていない環境ではJavaをインストールしないと動かないので注意が必要です。

ダウンロードしたフォルダ内の、「\bin\ApacheJMeter.jar」をダブルクリックで起動して画面が起動できたらインストールは完了です。

f:id:hiyo-ac:20190830211034p:plain
JMeterの画面

2. テスト環境の準備

JMeterの使い方の試験のため公開されているURLへアクセスを試みるのは迷惑行為なので、ローカル環境にテスト環境を構築します。

以前作成した下記記事にもとづいて、nodeでwebサーバを用意します。nodeの環境は上述の実行環境のもので実施しています。

hiyo-ac.hatenablog.com

今回はテスト用に、GETを受け付けられるように準備します。 デフォルトのindex.jsを下記の通り変更します。

var express = require('express');
var router = express.Router();

/* GET REQUEST. */
router.get('/', function(req, res, next) {
  res.send('GET request');
});

module.exports = router;

3. JMeterの設定と実行

最後にJMeterの設定と実行をしてみます。

下記図のようにJMeter左側のウィンドウにある「テスト計画」を右クリックし、 「追加」>「Threads(Users)」>「スレッドグループ」を選択します。

f:id:hiyo-ac:20190830233305p:plain
スレッドグループの作成

次にリクエストを行うHTTPリクエストの設定をしていきます。
作成したスレッドグループの名前を右クリックし、「追加」>「サンプラー」>「HTTP リクエスト」を選択します。そうするとスレッドグループの下に「HTTPリクエスト」という設定が追加されます。

f:id:hiyo-ac:20190830233211p:plain
HTTPリクエストの設定

HTTPリクエストを選択し、下記図の赤枠の項目をそれぞれ設定します。

  • Webサーバ
    • プロトコル:http
      今回はhttpのGETリクエストを送信したいためhttpを設定します。
    • サーバ名またはIP: localhost
      nodeで実行しているWebサーバ向けにリクエストを出したいのでlocalhostとします。
    • ポート番号:3000
      nodeで実行しているWebサーバのポート番号を設定します。
  • HTTPリクエス
    • メソッド:GET
      GETリクエストを送りたいのでGETを設定します。
    • パス:/
      nodeで実行しているWebサーバのパスを設定します。

f:id:hiyo-ac:20190830233141p:plain
GETスレッドの設定

ここで作成したHTTPリクエストをどの程度実行するかを設定します。 左側メニューのスレッドグループを選択し、スレッドプロパティを設定します。
各設定した内容で総テスト回数や1秒当たりのリクエスト数が決まります。

項目 計算式
総テスト回数 スレッド数xループ回数
1秒あたりのリクエスト数 総テスト回数 / Ramp-UP期間(秒)

※引用元はこちら

負荷ツールのスレッド数・Ramp-Up期間・ループ回数の関係 - Carpe Diem

今回は、スレッド数を10、Ramp-Up期間(秒)を10、ループ回数を10と試しに設定してみました。 この設定では、総テスト数が100回、1秒当たりのリクエスト数が10回となります。 ※今回は小さな値に設定していますが、大きな値にした場合、クライアントマシンの性能等により予定通り実行できないことがあるため注意が必要です。

f:id:hiyo-ac:20190830233117p:plain
スレッドの設定

ここまで設定できたら画面上部の開始ボタン(緑の三角)を押下し実行します。 実行するとWebサーバ側を見ていると次々に来ていることがわかります。

f:id:hiyo-ac:20190830223432p:plain
Webサーバのアクセスログ

4. 実行結果をわかりやすく表示するために

3まででJMeterからWebサーバに対しアクセスを実行できたことは確認できました。 ただ、実行結果の解析がしづらいので、JMeterに実行した統計などの情報を記録する設定を行います。

画面左側のスレッドグループを右クリックし、「追加」>「リスナー」>「統計レポート」を選択します。この設定だけで実行した統計が見れるようになります。そのほかにも「結果を表で表示」などを設定するとわかりやすくなります。

f:id:hiyo-ac:20190830233348p:plain
統計の設定

統計レポートの設定が終わったので、再度開始ボタンを押下しJMeterからリクエストを出してみます。 すると、下記図のように結果がわかりやすく表示されました。

f:id:hiyo-ac:20190830235332p:plain
統計レポートの結果

■おわりに

よく負荷試験を行ったりするときに登場するのがJMeterです。世間一般に浸透しているツールであるために、少しITかじっている人からは、簡単にできるでしょというイメージを持たれがちです。しっかり使い方を勉強し、どや顔してやりましょう。