Dmitri Tikhanski is a Contributing Writer to the BlazeMeter blog.

Learn JMeter in 5 Hours

Start Learning
Slack

Test Your Website Performance NOW!

arrow Please enter a valid URL

オープン ソース ロード テスト ツール: どのツールを使用する必要がありますか

お使いのアプリケーション、サーバ、またはサービスは、適切な必要速度を提供していますか。どうしたらわかるでしょうか。最新機能がパフォーマンス劣化やメモリ リークをトリガしていないことを 100% 確信していますか。検証する唯一の方法があります。それは、アプリのパフォーマンスを定期的に確認することです。

 

ただし、これに対してどのツールを使用する必要があるのでしょうか。このブログ投稿では、ロードおよびパフォーマンス テストに対する主要なオープン ソース ソリューションの長所と短所を確認します。

 

多くの場合、読者は、この最も一般的に使用されるオープン ソース パフォーマンス テスト ツールの 53 の優れたリストをすでに確認している可能性があります。ただし、これらのツールの多くは、必ずしも当社のニーズに適していないのが事実です。一部は、HTTP プロトコルに制限されます。一部は、何年も更新されていません。ほとんどのツールには、パラメータ化、相関、アサーションおよび分散テスト機能を提供できるだけの十分な柔軟性がありません。ほとんどの人が現在直面する課題を考慮すると、これは、この投稿で確認する以下の 4 つのオプションの短いリストまでに減らせます。

 

  • The Grinder
  • Gatling
  • Tsung
  • JMeter

 

ここでは、各ツールの主な機能を説明し、簡単なロード テスト シナリオとサンプル レポートを示します。最後に、プロジェクトに最適なツールを決定するのに役立つ比較マトリックスを示します。

 

短い注記として、これらのオープン ソース ツールを自動化する方法を探している場合は、BlazeMeter が作成した Taurus という当社のオープン ソース テスト自動化ツールが上記のツール(および Selenium)のほとんどを拡張および抽象化するため、さまざまな課題を克服するのに役立ちます。Taurus は、パフォーマンス テストを作成、実行および分析するための簡単な方法を提供します。必ず確認してください。

 

テスト シナリオおよびインフラストラクチャ

 

比較について、100,000 イテレーションで 20 スレッドからの簡単な HTTP GET 要求を使用します。各ツールは、できるだけ速く要求を送信します。

 

サーバ側(テスト中のアプリケーション):

 

  • CPU: 4x Xeon L5520 @ 2.27 GHz

  • RAM: 8GB

  • OS: Microsoft Windows Server 2008 R2 x64

  • アプリケーション サーバ: IIS 7.5.7600.16385

 

クライアント側(ロード ジェネレータ):

 

  • CPU: 4x Xeon L5520 @ 2.27 GHz

  • RAM: 4GB

  • OS: Ubuntu Server 12.04 64-bit

 

ロード テスト ツール:

 

  • The Grinder 3.11

  • Gatling 2.0.0.M3a

  • Tsung 1.51

  • JMeter 2.11


 

1. THE GRINDER

 

The Grinder は、BSD スタイルのオープン ソース ライセンスで入手できる無料の Java ベース ロード テスト フレームワークです。これは、Paco Gomez が開発したもので、Philip Aston が保守しています。長年にわたって、コミュニティも多くの改善、修正、および変換に貢献しています。The Grinder は、以下で構成されます。

 

  • The Grinder Console - この GUI アプリケーションは、さまざまな Grinder エージェントを制御し、リアルタイムで結果を監視します。このコンソールは、テスト スイートを編集または開発するための基本的な IDE (Interactive Development Environment、対話型開発環境)として使用できます。
  • Grinder Agents - これらのそれぞれがヘッドレス ロード ジェネレータであり、ロードを作成するための多数のワーカーを持つことができます。

 

The Grinder の主な機能:

 

  1. Grinder テスト スクリプトにネットワーク アクティビティを記録するための TCP プロキシ
  2. 増え続ける多数のエージェント インスタンスに合わせて拡張する分散テスト
  3. テスト スクリプトの作成または変更のために、任意の Java API と組み合わせた Python または Closure の機能
  4. その場でテスト データを作成し、ファイルおよびデータベースなどの外部データ ソースを使用する機能を含む柔軟なパラメータ化
  5. 相関およびコンテンツ検証のテスト結果へのフル アクセス権を持つ後処理およびアサーション
  6. 複数のプロトコルのサポート

 

サンプル テストを実行する The Grinder Console

 

 

 

Grinder のテスト結果:

 

 

GATLING

 

Gatling Project は、別の無料のオープン ソース パフォーマンス テスト ツールであり、Stephane Landelle が主に開発および保守しています。Gatling には、テスト レコーダにのみ限定される基本的な GUI があります。ただし、テストは、簡単に読み取り/書き込み可能な DSL (domain-specific language、ドメイン固有言語)で開発できます。

 

Gatling の主な機能:

 

  1. HTTP レコーダ

  2. テスト開発用の表出型の自明な DSL

  3. Scala ベース

  4. 非同期の非ブロッキング アプローチによる、より高いロードの生成

  5. HTTP(S) プロトコルのフル サポート。これは、JDBC および JMS ロード テストにも使用できます。

  6. データ駆動テスト用の複数の入力ソース

  7. 強力かつ柔軟な検証およびアサーション システム

  8. 包括的でわかりやすいロード レポート

 

[Gatling Recorder]ウィンドウ:

 

 

 

 

ロード シナリオの Gatling レポートの例

 

 

 

Gatling の詳細については、オンデマンド Web キャスト「Load Testing at Scale Using Gatling and Taurus (Gatling および Taurus を使用したスケールでのロード テスト)」を視聴してください。

 

 

TSUNG

 

Tsung (旧名 IDX-Tsunami)は、このレビューでは唯一の非 Java ベース オープン ソース パフォーマンス テスト ツールです。Tsung は Erlang に依存しているため、これをインストールする必要があります(Debian/Ubuntu の場合は、「apt-get install erlang」と同様に単純です)。Tsung は、Nicolas Niclausse が 2001 年に立ち上げ、Jabber (XMPP)用の分散ロード テスト ソリューションを最初に実装しました。数か月後、複数プロトコルのサポートが追加されました。2003 年に、Tsung は HTTP プロトコルのロード テストを実行できるようになりました。現在は、websocket のような最新プロトコル、認証システム、およびデータベースのサポートを伴った完全な機能パフォーマンス テスト ソリューションです。

 

Tsung の主な機能:

 

  • 本質的に分散型の設計
  • 基盤となるマルチスレッド指向 Erlang アーキテクチャによる、ミッドレンジ開発マシン上での数千の仮想ユーザのシミュレート
  • 複数のプロトコルのサポート
  • HTTP および Postgres をサポートするテスト レコーダ
  • テスト中のロード ジェネレータとアプリケーションの両方に対するオペレーティング システムのメトリックは、複数プロトコルを介して収集できます。
  • 動的なシナリオおよび混合動作。柔軟なロード シナリオにより、単一テストで任意の数のロード パターンを定義して結合できます。
  • 後処理および相関
  • データ駆動テスト用の外部データ ソース
  • ロード中に収集および視覚化できる組み込みの簡単に読み取り可能なロード レポート

 

Tsung は、テスト開発または実行用の GUI を提供していません。そのため、以下のようなシェル スクリプトを活用する必要があります。

 

  • Tsung-recorder。HTTP および Postgres 要求をキャプチャできるユーティリティを記録し、それらから Tsung 設定ファイルを作成する bash スクリプト
  • Tsung。開始/停止/デバッグおよびテスト ステータスを確認するための主要な bash 制御スクリプト
  • Tsung_stats.pl。HTML の統計的かつグラフィカルなレポートを生成するための Perl スクリプト。gnuplot および Perl のテンプレート ライブラリが必要です。Debian/Ubuntu の場合、コマンドは以下のとおりです。
    • apt-get install gnuplo
    • apt-get install libtemplate-perl


主要な tsung スクリプトの呼び出しにより、以下の出力が生成されます。

 

 

 

テストを実行します。

 

 

 

 

現在のテスト ステータスを照会します。

 

 

 

グラフを使用した統計レポートの生成は、tsung_stats.pl スクリプトを介して実行できます。

 

 

 

 

ロード レポートを取得するには、好きなブラウザで report.html を開きます。以下に、デモ シナリオのサンプル レポートを示します。




 

Tsung 統計レポート

 

 

 

 

Tsung グラフ レポート

 

 

 

 

APACHE JMETER

 

Apache JMeter は、このレビューでは唯一のデスクトップ アプリケーションです。これには、テスト開発とデバッグをずっと簡単にする、使いやすい GUI が備えられています。ダウンロード可能な JMeter の初期バージョンは、2001 年 3 月 9 日付けです。その後、JMeter は広く採用され、Silk Performer、LoadRunner のような独自のソリューションに代わる一般的なオープン ソースになりました。JMeter にはモジュラ構造があり、プラグインによりコアが拡張されています。これは、すべての実装されたプロトコルと機能が、Apache Software Foundation やオンライン コントリビュータにより開発されたプラグインであることを意味します。

 

JMeter の主な機能:

 

  1. クロスプラット フォーム。JMeter は Java と共に任意のオペレーティング システム上で実行できます。

  2. 拡張性。単一マシンで作成できる以上の高いロードが必要になる場合、JMeter は分散モードで実行できます。これは、1 つのマスタ JMeter マシンが多数のリモート ホストを制御することを意味します。

  3. マルチプロトコルのサポート。次のプロトコルはすべて追加設定なしでサポートされます。HTTP、SMTP、POP3、LDAP、JDBC、FTP、JMS、SOAP、TCP

  4. サンプラ周りのプリプロセッサとポストプロセッサの複数の実装。これにより、高度な設定、分解パラメータ化、および相関機能が提供されます。

  5. 条件を定義するためのさまざまなアサーション

  6. パフォーマンス テスト結果を可視化して分析するための複数の組み込みおよび外部リスナ

  7. 主要なビルドおよび継続的な統合システムとの統合。これにより、JMeter パフォーマンス テストは完全なソフトウェア開発ライフ サイクルの一部となります。

 

ロード シナリオに対する集約されたレポートを提供する JMeter アプリケーション:

 

 

 

BLAZEMETER ロード テスト クラウドによる JMETER の補完および強化方法
 

Apache JMeter はロード テストを実行するための強力かつ魅力的な方法を表しているため、BlazeMeter ロード テスト クラウドと共にそのツールを補完することをお勧めします。これにより、単一の開発者が使いやすいセルフサービス プラットフォームで最大 100 万ユーザをシミュレートできます。BlazeMeter により、10 分未満でモバイル アプリ、Web サイト、または API のパフォーマンスをテストできます。以下に、BlazeMeter/JMeter の組み合わせが開発者にとって魅力的であると考えられる理由を示します。

 

簡単な拡張性 - 大規模な JMeter テストを作成することが簡単です。自社開発のラボで実行するより BlazeMeter を使用すれば、非常により大きなロードをさらに簡単に実行できます。
展開の迅速な開始 - BlazeMeter のレコーダは JMeter をすぐに開始し、BlazeMeter は完全なチュートリアルとヒントも提供します。
Web ベースのインタラクティブなレポート - 分散したチーム間で結果を簡単に共有し、JMeter のスタンドアロン UI の制限を克服できます。
組み込みインテリジェンス - BlazeMeter クラウドは、組み込み CDN 対応テストを含む、ロード生成のオンデマンド地理的分散を提供します。

 

 

 

THE GRINDER、GATLING、TSUNG、および JMETER のテスト

 

以下のメトリックについて、これらのツールのロード テスト結果を比較してみましょう。

 

  1. 平均応答時間(ms)

  2. 平均スループット(要求/秒)

  3. 合計テスト実行時間(分)

 

最初に、平均の応答時間と合計のテスト実行時間を見てみましょう。

 

 

 

 

 

 

 

グラフで示すように、JMeter は、最も速い応答時間と、最も高い平均スループットを備えています。Tsung および Gatling がその後に続きます。The Grinder は、最も遅い時間と、最も低い平均スループットを備えています。

 

機能比較表

 

最後に、以下に、各テスト ツールによって提供される主な機能の比較表を示します。

 

 

機能 The Grinder Gatling    Tsung JMeter
OS 任意 任意 Linux/Unix 任意
GUI コンソールのみ  レコーダのみ なし フル
テスト レコーダ TCP (HTTP を含む) HTTP HTTP、Postgres HTTP
テスト言語 Python、Clojure Scala XML XML
  拡張言語 Python、Clojure Scala Erlang Java、Beanshell、Javascript、Jexl
ロード レポート コンソール HTML HTML CSV、XML、組み込みテーブル、グラフ、プラグイン
プロトコル

HTTP

SOAP

 JDBC

POP3

SMTP

 LDAP

JMS

HTTP

JDBC

JMS

HTTP

 WebDAV

Postgres

MySQL

XMPP

 WebSocket

AMQP

MQTT

LDAP

HTTP

FTP

JDBC

SOAP

LDAP

TCP

JMS

SMTP

POP3

IMAP

ホストの監視 なし なし  あり PerfMon プラグインの場合、あり
制限事項

テストの開発および編集に必要な Python の知識

レポートは非常に単純で短い 

プロトコルの制限されたサポート

Scala ベース DSL 言語の知識が必須

スケールしない

Linux システムでのみテストおよびサポートされています。 バンドルされているレポートの解釈は簡単ではありません


 

リソース

 

これらのツールの詳細を知りたいですか。以下の Web サイトにログオンするか、またはここにコメントを投稿していただければ、ベストを尽くして回答をします。

 

  1. The Grinder - http://grinder.sourceforge.net/

  2. Gatling - http://gatling.io/

  3. Tsung - http://tsung.erlang-projects.org/

  4. JMeter

 

最後のメモ...

 

最初に説明したように、読者は、Taurus の詳細について参照することをお勧めします。パフォーマンス テストについては、これらの多くが非常に優れていますが、完璧ではありません。その他のシステムとの自動化および統合は簡単なことではありませんが、ツール自体には急な学習曲線が付属します。Taurus は、パフォーマンス テストを作成、実行および分析するための簡単な方法を提供するオープン ソース テスト自動化ツールです。

 

オープン ソース ツールでのロード テストの詳細

 

オープン ソース テスト ツールに関する質問がある場合は、ウェビナー「Ask the Expert: Open Source Testing with JMeter, Gatling, Selenium, and Taurus (エキスパートに質問: JMeter、Gatling、Selenium、および Taurus を使用したオープン ソース テスト)」を視聴してください。この特別な対話型のプレゼンテーションと Q&A は、JMeter-Plugins.org の創立者である Andrey Pokhilko、主要な JMeter コントリビュータ、および Taurus プロジェクトの作成者と担当開発者がホストします。
 

     
arrow Please enter a valid URL

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

We're working on starting your first test

Testing 20 Virtual Users

Starting your test in around 2-4 minutes. Your report will appear once we've gathered the data.

0

Status: Preparing Your Test

Your email is required to complete the test. If you proceed, your test will be aborted.