REST AssuredとJMeter:RESTテストツールの比較

公開: 2022-03-11

自動テストは、ソフトウェア品質保証プロセスの重要なコンポーネントです。 ただし、Representational State Transfer(REST)APIのテストは、難しい作業になる可能性があります。 REST APIを手動でテストすることに頼る多くの人は、詳細を見落とし、時間を節約できる方法を見逃しています。

適切にテストされているRESTAPIサービスには、次の領域が含まれます。

  • APIサービスがREST標準に準拠しているかどうかのテスト
  • APIサービス応答コードのテスト
  • APIサービス応答コンテンツのアサーション
  • APIサービスのパフォーマンスベンチマーク

RESTテスト用のツール

このためには、適切なツールが必要です。 ApacheJMeterとRESTAssuredは、RESTAPIサービスをテストするための2つの一般的なRESTテストツールです。 こことここから、実際にそれらをどのように使用できるかについて詳しく知ることができます。

この記事では、これらのツールの両方の長所と短所、およびそれらが既存のRESTAPIプロジェクトに最適な場所について学習します。

セットアップのしやすさ

前提条件が1つあります。JMeterとRESTAssuredの両方にJavaが必要なため、JMeterまたはRESTAssuredを実行するにはコンピューターにJavaをインストールする必要があります。

Apache JMeterのインストールは非常に簡単です。ダウンロードページに移動し、ZIPまたはTARを選択し、アーカイブをダウンロードして解凍すると、準備が整います。

アーカイブを解凍したフォルダーに移動し、 binサブフォルダーに移動して、 jmeter.bat (または、Windows以外の場合はオペレーティングシステムの場合は同様)を実行します。 Apache JMeterのセットアップ方法の詳細については、このページを参照してください。

REST Assuredのインストールは、少し異なる経験です。 RESTAssuredはスタンドアロンツールではありません。 これはJavaライブラリです。 これを使用するには、新しいJavaプロジェクトをセットアップし、プロジェクトのライブラリとして含める必要があります。 もちろん、多くのビルドツールがサポートされているため、依存関係リゾルバーをパブリック(Maven)リポジトリにポイントするだけで済みます。 REST Assuredの設定方法の詳細については、こちらをご覧ください。

ドキュメンテーション

Apache JMeterのドキュメントは、JMeterの公式Webサイトにあります。 開始からリスナーなどの複雑な機能まで、かなり完全なドキュメントを提供します。 また、公式のJMeter Webサイトには、ビデオチュートリアルなどの非常に豊富なリソースへのリンクがあります。 あなたが読書にあまり興味がなく、見ることにもっと興味があるなら、これは間違いなくあなたにとってプラスです。

ツール/ライブラリ自体としてのRESTAssuredドキュメントは、Githubリポジトリ内にあります。 オンラインドキュメントにリストされている機能の大きなリストと、何かを達成する方法の非常に詳細な説明があります。 ただし、ドキュメント全体が1つの巨大なWebページであり、ツールを探索するための最もユーザーフレンドリーな方法ではありません。

自動化されたRESTテストの作成と保守

Apache JMeterは、グラフィカルユーザーインターフェイス(GUI)を備えたスタンドアロンアプリケーションとして、GUIからテストを作成できます。 これは、特にJMeterから導入されたエンティティ階層があるため便利です。テスト内で作成したものはすべて、JMeterGUIでツリーのような表現で表示されます。

テストを作成するために、コーディングスキルは必要ありません。 ただし、GUIは、テスト計画に関する可能性を制限するものではありません。 それでもカスタムプログラミング/フローを追加したい場合は、BeanShellコンポーネントを使用して追加できます。

JMeterGUIスクリーンショット

JMeterプロジェクトを保存すると、作成したものはすべて1つの巨大なXMLファイル( .jmx拡張子付き)に保存されます。 一般に、テストの1つに小さな変更があったとしても、変更を加えるには、(ほとんどの場合)GUIでプロジェクトを再度開く必要があります。

同じJMeterプロジェクトファイルで他のユーザーと共同作業を行う必要がある場合、この巨大なXMLファイルは、ソース管理(SCM)システム(Git、SVN、Perforceなど)を使用して維持するのは簡単ではありません。

一方、REST Assuredは、テストを作成するためにJavaコーディングスキルを必要とします。 テストを作成するための使いやすいGUIはありません。 ただし、REST Assuredを使用すると、Gherkin言語(Given-When-Then構文)を使用してテストを記述できるため、Javaコーディングのスキルが必要な場合でも、テストはかなり人間が読める形式になります。

 given(http://via.placeholder.com/2000x200?text=image+placeholder). config(RestAssured.config(http://via.placeholder.com/2000x200?text=image+placeholder).jsonConfig(jsonConfig(http://via.placeholder.com/2000x200?text=image+placeholder).numberReturnType(BIG_DECIMAL))). when(http://via.placeholder.com/2000x200?text=image+placeholder). get(“/price”). then(http://via.placeholder.com/2000x200?text=image+placeholder). body(“price”, is(new BigDecimal(12.12)));

REST Assuredはライブラリであり、テストは実際にはJavaで記述されているため、テストを個別のJavaファイルに整理できるため、1つのテストを変更する必要がある場合は、1つのファイルを開くだけで済みます。 GUIは必要ないので、SSH端末からでも簡単にテストを編集できます。 SCMを使用してJavaファイルを保守するのは簡単なので、他の人とのコラボレーションはかなり簡単です。

RESTテストの種類

JMeterは、Webアプリやサービスをテストするためのパフォーマンステストツールとしてよく知られています。 すぐに使用できる、パフォーマンステストのメトリックを表示するために使用できるさまざまなグラフタイプの優れたレポートオプションがあります。

JMeterの応答時間のスクリーンショット

一方で、それはJMeterの主要な使用シナリオでもありません。 応答アサーションを含む、JMeterを使用したRESTAPIの機能テストを作成できます。

REST Assuredの主な使用シナリオは、RESTAPIサービスの機能テストです。 独自の応答アサーションメカニズム(Gherkin構文)も付属しています。 REST AssuredはJavaライブラリであるため、単体テストと簡単に統合できます。

パフォーマンステストに関しては、RESTAssuredはそのままのパフォーマンステストをサポートしていません。 ただし、パフォーマンステストに使用する場合は、RESTAssuredを中心としたパフォーマンステスト用の独自のカスタムフレームワークを開発する必要があります。

テストの実行

JMeterテストは2つの方法で呼び出すことができます。

ユーザーインターフェイスから[実行]ボタンをクリックして:

JMeter実行ボタンのスクリーンショット

コマンドラインから:

 jmeter -n -t your_script.jmx

JMeterからの公式の推奨事項は、GUIを使用してパフォーマンステストを実行しないことです。テストは、コマンドラインから実行する場合に比べて実行速度が遅くなります(1秒あたりのリクエスト数の点で)。

一方、REST Assuredには、jUnitやTestNG(またはJavaコードを実行するための他の方法)などの別個のテストランナーが必要です。

TestNGを使用したEclipseから:

RESTAssuredEclipseのスクリーンショット

たとえば、Antビルドツールを使用したコマンドラインから:

 ant run-tests

レポートの種類

Apache JMeterには、その主な目的のために、テストの結果から作成できる多数のレポートタイプがあります。 JMeterからパフォーマンステストを実行できるため、パフォーマンスメトリックは通常、次のようなグラフを使用して表示されます。

JMeterパフォーマンスレポート

JMeterレポートと、作成できるレポートの種類について詳しくは、こちらをご覧ください。

REST Assured自体はレポートを作成しないため、ユーザーと選択したテストフレームワークに依存します。 ただし、いくつかの単体テストフレームワークと統合すると、HTML、テキスト、またはXML形式で非常に使いやすいレポートを取得できます。

RESTAssuredHTMLレポート

Jenkinsとの統合

テスト対象の製品の継続的インテグレーションに関しては、テストの実行と結果のレポートの両方で、テスト自動化フレームワークをCIツールと統合することが非常に重要です。

JMeterの自動テストは、パフォーマンスプラグインを使用して、Jenkinsと簡単に統合できます。このプラグインを使用すると、ビルド後のアクションを設定し、Jenkinsのジョブページから見栄えの良いダッシュボードページを取得できます。

JMeterJenkinsスクリーンショット

Jenkinsにはほとんどすべてのテストフレームワーク用のプラグインがあるため、RESTAssuredはJenkinsと簡単に統合することもできます。 たとえば、TestNGプラグインは、テスト結果の堅実なトレンドチャートを作成できます。

RESTAssuredJenkinsスクリーンショット

コミュニティ活動

これは簡単に測定できないカテゴリです。 コミュニティの活動は、ツールの成熟度や貢献者の数など、いくつかの要因によって異なります。

今日、ApacheJMeterにはより大きなコミュニティがあります。 これは主に、JMeterがずっと前に市場に登場し、Webアプリやサービスのパフォーマンステストに関して業界標準と見なされているという事実によるものです。 JMeterは、5〜6か月ごとに公式リリースを公開します。 そのGitHubリポジトリは非常にアクティブであり、毎日新しいコミットがあります。 JMeterはBugzillaを課題追跡システムとして使用し、頻繁に変更される未解決の課題のリストを持っています。 StackOverflow検索でのJMeterの結果は23000以上あります。 ソーシャルネットワーキングサイトから、JMeterは公式のTwitterアカウントを持っています。 FacebookとLinkedInには、JMeterの公式アカウントはありませんが、いくつかのグループがあり、そのうちの大きい方がこのFacebookグループとこのLinkedInグループです。

REST Assuredはメインステージへの道を切り開いており、REST APIサービスの機能テストの自動化に関して、複数のソースからの推奨事項である最初の選択肢になっています。 REST Assuredは、過去2年間、6か月に1回公式リリースを公開しています。 GitHubリポジトリには多くの貢献者がいて、JMeterよりも少しアクティブではありませんが、非常にアクティブでもあります。 REST AssuredはGitHubリポジトリの問題を追跡しているため、すべてが1か所にあります。 StackOverflowには、REST Assuredの検索結果が2000以上あるため、JMeterの検索結果と比較して大幅に低いと言えます。 ソーシャルネットワーキンググループに関しては、JMeterと比較してメンバー数が大幅に少ないLinkedInグループのみが見つかりました。 REST AssuredコミュニティはJMeterコミュニティほど大きくないかもしれませんが、非常に活発です。

概要

JMeterとRESTAssuredは、どちらも互いに利点があります。 ただし、作業中のプロジェクトに基づいて、RESTAPIテストの自動化には一方が他方よりも適しています。 どちらも非常に堅牢で、便利なテストオプションがあり、優れたレポート機能を備えており、カスタムテストフレームワークと簡単に統合できます。

これら2つの一般的なRESTテストツールについて、この記事で検討したすべての比較基準の概要を次に示します。

Apache JMeter 安心してください
コーディングスキルが必要番号はい(Java)
徹底したドキュメントはいはい
機能テストはい(しかしやり過ぎ) はい
性能試験はいいいえ(箱から出して)
SCMに適しています(Git、P4 ...) 番号はい
テストレポートはい番号
CIツールとの統合はいはい
ユニットテストとの統合番号はい
並列化をテストするはいはい
コミュニティ活動はいはい