Run massively scalable performance tests on web, mobile, and APIs

Request a Demo
May. 7th, 2016

JMeter GUI を使用せずに JMeter テストを開始する 5 つの方法

JMeter のパフォーマンスとチューニングに関するヒントですでに説明したとおり、JMeter GUI の使用はテスト開発とデバッグに限定される必要があります。JMeter 3.1 および 3.2 バージョンの最新の GUI を使用している場合でも、実際のロード テストを開始するときには、JMeter を GUI モードで使用することはお勧めしません。この記事では、ブラウザを開かずに 1,000 人のユーザのロード テストを開始するための単純な JMeter コマンド ライン モードや BlazeMeter API の使用など、テストの自動実行に最もよく使用されているオプションに注目します。

 

1. コマンド ラインの使用

 

コマンド ラインから JMeter テストを実行できます。これは次のように単純です。

 

jmeter -n -t your_script.jmx

 

説明

 

  • -n - JMeter に 非 GUI モードでの実行を指示します。
  • -t - 実行するソース .jmx スクリプトへのパスを指定します。

 

これら最小限のオプションを -l スイッチと組み合わせて使用することがよくあります。-l スイッチは JMeter にテスト結果の保存場所を指示します。結果ファイルがすでに存在する場合は、それが追加されます。テストの実行後に、リスナ、Excel、またはその他の分析ソフトウェアで生成された CSV ファイルを開くことができます。

 

詳細いついては、「How do I run JMeter in non-GUI mode? (JMeter を非 GUI モードで実行する方法)」を参照してください。あるいは、使用可能なすべてのコマンド ライン オプションをすぐに表示するには、-h パラメータを使用してください。

 

2. APACHE ANT の使用

 

JMeter Ant タスクを利用して、JMeter と Apache Ant を統合できます。Ant ビルドの XML 設定ファイルを適切に構成したら、Ant を使用して JMeter スクリプトを開始することができます。(JMeter テスト計画のサンプルを見るには、JMeter インストールの /extras フォルダを確認します。このファイルの名前は Test.jmx です。サンプル build.xml Ant 設定ファイルが同じ場所にあります。)

 

Apache Ant が正しくインストールされているとして、/extras フォルダに移動して、そこで Ant コマンドを呼び出します。Ant は、現在のディレクトリにある build.xml ファイルを探して処理します。

 

 

上述のように、Ant は Test.jmx ファイルをピックアップして、それを実行してから、読みやすい HTML レポートを生成します。

 

 

3. APACHE MAVEN の使用

 

JMeter Maven プラグインを使用して、Apache Maven と JMeter を統合できます。Maven は、pom.xml ファイルを使用します。POM は、実行する作業の基本単位としての「Project Object Model」を表します。JMeter の統合を有効にするには、pom.xml イベントを追加する必要があります。Maven プロジェクトの構造は、以下のようになります。

 

JMeter Maven プラグインを使用して、JMeter を Apache Maven と統合することができます。Maven は、pom.xml ファイルを使用します。POM は、実行する作業の基本単位としての「Project Object Model」を表します。JMeter の統合を有効にするには、pom.xml に  イベントを追加する必要があります。Maven プロジェクトの構造は、以下のようになります。

 

フォルダ構造

 

  • ルート フォルダ
    • src
      • test
        • jmeter
          • Test.jmx
    • pom.xml

 

説明:

 

  • Test.jmx - jmeter/extras からコピーできます。
  • pom.xml - 以下の最小リストを参照してください。

         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
    4.0.0
    com.blazemeter
    mvn-jmeter
    jar
    1.0-SNAPSHOT
    maven jmeter-demo
    http://maven.apache.org
   
       
           
                com.lazerycode.jmeter
                jmeter-maven-plugin
                1.4.1
               
                   
                        jmeter-tests
                        verify
                       
                            jmeter
                       

                   

               

           

       

   

 

テストを開始するには、ルート フォルダに「mvn verify」または「mvn install」と入力します。コマンド プロンプトに Maven 出力が表示されます。

 

 

基本および高度な設定オプションについては、Maven JMeter プラグインのプロジェクト Wiki を参照してください。

 

生成される HTML レポートは、Apache Ant によって生成されるものと同じです。

 

4. (JAVA コードから)プログラムによる JMETER テストの実行

 

別のオプションは、Java コードから JMeter スクリプトを実行することです。Java コードから既存の JMeter テストを実行する場合、またはプログラミングで JMeter テストを作成する場合は、Java の基本的な知識が必須であり、以下の条件は必須です。

 

  1. JMeter がどこかにインストールされていること
  2. /lib (特に、プロジェクトまたはモジュール クラス パスの JMeter インストールの /lib/ext フォルダ)からの必須 JMeter jar があること

 

4.2 Java コードからの既存の JMeter テストの実行

 

JMeter の「中心」であるメイン クラスは、StandardJMeterEngine です。Java コードから JMeter テストを実行する必要がある場合は、これが最適なオプションです。または、このクラスを拡張するか、JMeterEngine インターフェースの独自のバージョンを実装することができます。

 

既存の .jmx ファイル(これも JMeter 標準インストールの /extras フォルダからの Test.jmx のことです)を読み取って実行する絶対最小限のコードファイルは次のようになります。

 

package com.blazemeter.demo;

import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.save.SaveService;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;
import java.io.FileInputStream;

public class JMeterFromExistingJMX {

    public static void main(String[] argv) throws Exception {
        // JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();


        // Initialize Properties, logging, locale, etc.
        JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
        JMeterUtils.setJMeterHome("/path/to/your/jmeter");
        JMeterUtils.initLogging();// この行にコメントして、たとえば次のような追加ログメッセージを表示することができます: DEBUG level
        JMeterUtils.initLocale();

        // Initialize JMeter SaveService
        SaveService.loadProperties();

        // Load existing .jmx Test Plan
        FileInputStream in = new FileInputStream("/path/to/your/jmeter/extras/Test.jmx");
        HashTree testPlanTree = SaveService.loadTree(in);
        in.close();

        // Run JMeter Test
        jmeter.configure(testPlanTree);
        jmeter.run();
    }
}

 

とても簡単ですね。

 

4.3 Java のみを使用した新しい JMeter テストの作成

 

Java コードのみを使用して、JMeter テスト計画を一から作成する方法を次に説明します。以下の主要なクラスに注目します。

 

  1. StandardJMeterEngine - テスト計画を設定して実行するメイン クラス。
  2. HashTree - テスト計画の要素を保持する特別なコレクション。
  3. テストを実行するために必要な最小限の JMeter コントローラ

 

○      TestPlan - 以下のすべてのクラスのルート コンテナであり、すべてのテスト プロパティを指定することができる場所。

○      ThreadGroup - テストを実行するユーザのプール。テストには、少なくとも 1 つのスレッドと 1 つのループ含むスレッド グループが少なくとも 1 つ必要です。

○      LoopController - 少なくとも 1 つのループが必要なため、スレッド グループのメイン サンプラ コントローラとしてループ コントローラ インスタンス セットが不可欠です。

○      実際の作業を実行するサンプラ

 

このデモでは、HTTPSampler を使用して 1 つのループの 1 人のユーザの 1 つの GET 要求を example.com ドメインに送信するために、上記のすべてを使用します。

 

この例は最小限であり、追加機能は何もありません。これは単に開始方法を説明することを目的としています。コードは説明不要でしょう。

 

package com.blazemeter.demo;


import org.apache.jmeter.control.LoopController;
import org.apache.jmeter.engine.StandardJMeterEngine;
import org.apache.jmeter.protocol.http.sampler.HTTPSampler;
import org.apache.jmeter.testelement.TestPlan;
import org.apache.jmeter.threads.ThreadGroup;
import org.apache.jmeter.util.JMeterUtils;
import org.apache.jorphan.collections.HashTree;


public class JMeterFromScratch {

    public static void main(String[] argv) throws Exception {

        //JMeter Engine
        StandardJMeterEngine jmeter = new StandardJMeterEngine();

        //JMeter initialization (properties, log levels, locale, etc)
        JMeterUtils.loadJMeterProperties("/path/to/your/jmeter/bin/jmeter.properties");
        JMeterUtils.initLogging();// この行にコメントして、たとえば次のような追加ログメッセージを表示することができます: DEBUG level
        JMeterUtils.initLocale();

        // JMeter Test Plan, basic all u JOrphan HashTree
        HashTree testPlanTree = new HashTree();

        // HTTP Sampler
        HTTPSampler httpSampler = new HTTPSampler();
        httpSampler.setDomain("example.com");
        httpSampler.setPort(80);
        httpSampler.setPath("/");
        httpSampler.setMethod("GET");

        // Loop Controller
        LoopController loopController = new LoopController();
        loopController.setLoops(1);
        loopController.addTestElement(httpSampler);
        loopController.setFirst(true);
        loopController.initialize();


        // Thread Group
        ThreadGroup threadGroup = new ThreadGroup();
        threadGroup.setNumThreads(1);
        threadGroup.setRampUp(1);
        threadGroup.setSamplerController(loopController);

        // Test Plan
        TestPlan testPlan = new TestPlan("Create JMeter Script From Java Code");

        // Construct Test Plan from previously initialized elements
        testPlanTree.add("testPlan", testPlan);
        testPlanTree.add("loopController", loopController);
        testPlanTree.add("threadGroup", threadGroup);
        testPlanTree.add("httpSampler", httpSampler);

        // Run Test Plan
        jmeter.configure(testPlanTree);
        jmeter.run();

    }
}

コードが GET 要求を example.com に実際に送信するかどうかを確認するには、Wireshark などのスニファ ツールを使用できます。

 

 

同様に、JMeter GUI リスナまたはサード パーティ ツールの出力を確認するために、テストにリスナを追加できます。

 

5. プログラムによる BLAZEMETER テストの実行

 

BlazeMeter は REST API を提供するため、HTTP 要求を送信できるツール、ライブラリ、またはソフトウェアを使用して、さまざまなタスクを自動的に実行できます。つまり、1 つの BlazeMeter API エンドポイントに 1 つの要求を送信することにより、以下のアクションを実行できます。

 

  • テストの作成
  • 新規スクリプト ファイルのアップロード、または既存のスクリプト ファイルの更新
  • テストの開始
  • テスト ステータスの取得
  • テストの停止

 

これらのすべてのタスクは、user_key 必須パラメータを前提とします。ユーザ API キーは[Profile]ページにあります。[Profile]ページにアクセスするには、画面右上隅の[Logout]リンクの左側にあるユーザ名をクリックし、[Profile]ページで[User Key]セクションを展開します。

 

このデモでは、curl コマンド ライン ユーティリティ(URL 構文を使用したエンドポイントとのデータ送受信のためのフリー、オープン ソース、クロスプラットフォーム、およびマルチプロトコルのユーティリティ)を使用します。

 

テストの作成

 

新しい BlazeMeter テストの作成は、REST URL への GET 要求の送信と同じくらい簡単です。以下の詳細を参照してください。

 

パラメータ

 

URL

https://a.blazemeter.com/api/rest/blazemeter/testCreate

メソッド

GET

user_key

[Profile]ページにある API ユーザ キー

test_name

意味のある文字列

 

 

:~>curl "https://a.blazemeter.com/api/rest/blazemeter/testCreate?user_key=blazemeter_demo_key&test_name=MyFirstTest"

---

response_code: 200

error: null

test_id: 525901

test_name: null

 

要求は 3 つのダッシュ(「---」)の前に送信されます。応答は 3 つのダッシュの後に受信されます。見てのとおり、応答コードは HTTP 200 であり、これは OK です。テストの ID が返されます。テストの開始と停止、およびテストのステータスとレポート リンクの取得には、ID を記述する必要があります。

 

JMeter .jmx テスト スクリプトのアップロード

 

既存のテストへの新しい .jmx ファイルの追加や、古いバージョンから新しいバージョンへの置換は、以下のように実行できます。

 

URL

https://a.blazemeter.com/api/rest/blazemeter/testScriptUpload

メソッド

POST

user_key

[Profile]ページにある API ユーザ キー

test_id

createTest の応答として返されるか、[Test]ページの[Test Name]の後に表示されるテスト ID

 

アップロードする JMeter .jmx ファイルへのパス

 

:~>curl -X POST "https://a.blazemeter.com/api/rest/blazemeter/testScriptUpload?user_key=blazemeter_demo_key&test_id=525901" -H "Content-Type: application/json" --data-binary "/path/to/your/jmeter/script/Test.jmx"

---

response_code: 200

error: null

 

BlazeMeter でのテストの開始

 

Blazemeter テストを開始するには、以下の構造で要求を発行します。

 

URL

http://blazemeter.com/api/rest/blazemeter/testStart/

user_key

[Profile]ページにある API ユーザ キー

test_id

createTest の応答として返されるか、[Test]ページの[Test Name]の後に表示されるテスト ID

 

:~>curl "https://a.blazemeter.com/api/rest/blazemeter/testStart?user_key=blazemeter_demo_key&test_id=525901"

---

response_code: 200

error: null

test_id: 525901

type: null

test_name: MyFirstTest

session_id: r-ec53490fab83a51

:~>

 

BlazeMeter でのテスト ステータスの取得

 

テスト ステータスを取得するには、適切な GET 要求を GetTestStatus エンドポイントに送信します。

 

URL

https://a.blazemeter.com/api/rest/blazemeter/testGetStatus

user_key

[Profile]ページにある API ユーザ キー

test_id

createTest の応答として返されるか、[Test]ページの[Test Name]の後に表示されるテスト ID

 

:~>curl "https://a.blazemeter.com/api/rest/blazemeter/testGetStatus?user_key=blazemeter_demo_key&test_id=525901"

---

response_code: 200

error: null

test_id: 525901

session_id: r-ec534910ae2407d

status: Running

test_name: MyFirstTest

:~>

 

テストを開始したばかりなので、現在の状態は「Running」です。

 

BlazeMeter でのテストの停止

 

テストの開始と同じように、テストの実行を停止するコマンドを発行することもできます。

 

URL

https://a.blazemeter.com/api/rest/blazemeter/testStop

user_key

[Profile]ページにある API ユーザ キー

test_id

createTest の応答として返されるか、[Test]ページの[Test Name]の後に表示されるテスト ID

 

:~>curl "https://a.blazemeter.com/api/rest/blazemeter/testStop?user_key=blazemeter_demo_key&test_id=525901"

---

response_code: 200

error: null

session_id: r-ec53490fab83a51

:~>

 

再度テスト ステータスのクエリを送信することにより、テストが実際に停止されたことを確認することができます。

 

:~>curl "https://a.blazemeter.com/api/rest/blazemeter/testGetStatus?user_key=blazemeter_demo_key&test_id=525901"

---

response_code: 200

error: null

test_id: 525901

session_id:

status: Not Running

test_name: MyFirstTest

:~>

 

テストの状態は「Not Running」であることが確認できます。

 

サマリ/リソース

 

この記事では、JMeter テストの実行に最もよく使用されているオプションに注目しました。追加情報やその他の方法については、以下を検討してください。

 

 

環境とインフラストラクチャを適合させるためにどの方法を採用しても、テスト開発とデバッグ以外には JMeter GUI を絶対に使用しないでください。

 

JMeter とロード テストの詳細


JMeter を使ったことがなく、詳細を知りたい場合は、無料のオンライン JMeter トレーニング コースにサインアップしてください。

 

JMeter の経験が豊富なユーザは、オンデマンド Web キャスト「How to Create Advanced Load Testing Scenarios with JMeter (JMeter を利用して高度なロード テスト シナリオを作成する方法)」を視聴してください。

 

一対一のデモセッションを予約いただくと、BlazeMeter の機能について説明を受けることができます。 

Interested in writing for our Blog? Send us a pitch!