|
継続的インテグレーションやデリバリーといった、よりアジャイルでレフトシフト型のソフトウェア開発プロセスへと移行するにつれ、開発者に迅速にテストのフィードバックを提供する必要性が高まっています。UIテストの欠点の一つは、その速度の遅さです。開発者のコードがデフォルトのビルドを壊した場合、開発者はすぐにそれを知ることが困難です。一方、APIテストはUIテストよりも高速で信頼性が高い傾向があります。
API テスト ツールを詳しく検討する前に、API について同じ理解を共有していることを確認する必要があります。 APIとは何ですか? アプリケーションプログラミングインターフェース(API)は、ソフトウェアコンポーネント間のインターフェース仕様です。ほとんどの機能テストにはWebページのテストや.NETフォームクラスのユーザーインターフェーステストが含まれますが、APIテストではユーザーインターフェースを経由せず、APIインターフェースを呼び出すことでアプリケーションと直接通信します。 APIテストでは、JMS、HTTP、データ、Webサービスなどのヘッドレステクノロジーをテストできます。APIテストは「ヘッドレス」テストと呼ばれることもあります。ほとんどのヘッドレステスト手法では、「UI操作をバイパスし、アプリケーションのバックエンドまたはサービスに直接リクエストを送信してレスポンスを受け取り、レスポンスの正確性を検証することで、システムが期待どおりに動作することを確認します。」 簡単な例として、クライアントとサーバー間の通信が挙げられます。クライアントはリソースへのリクエストを送信し、そのリクエストはサーバーに送信され、リクエストに応答できるサーバーが検索されます。サーバーはクライアントが要求したリソースを見つけ、そのレスポンスをクライアントに返します。 API テストを自動化するために使用できるツールは何ですか? Seleniumはブラウザベースのテストツールです。RESTまたはSOAPベースのサービスをテストするためにどのようなツールが利用できるか知りたい方もいるかもしれません。以下は、RESTおよびSOAP仕様に準拠したWebサービスをテストするために使用できる、一般的なAPIテストツールです。 郵便配達員 Postmanは、当初はChromeブラウザの拡張機能として動作していたRESTクライアントですが、最近MacとWindows向けのネイティブバージョンがリリースされました。Postmanを使うと、ウェブサーバーにPOSTリクエストを送信し、サーバーからのレスポンスを解析することができます。APIに必要なすべてのヘッダーとCookieを構築し、サーバーのレスポンスを検査することができます。Postmanには以下の機能があります。 1. 探索的テストだけでなく自動テストにも使用できます。 2. Mac、Windows、Linux、Chrome アプリで実行できます。 3. Swagger や RAML 形式のサポートなど、多くの統合機能があります。 4. 実行、テスト、ドキュメント化、監視などの機能があります。 5. 新しい言語を学ぶ必要がない 空手DSL Karateを使用すると、あらゆる種類のネットワークサービスを呼び出し、受信したレスポンスを期待値と比較するテストを作成できます。以下の機能があります。 1: Cucumber-JVM上に構築 2: 標準の Java プロジェクトと同様にテストを実行し、レポートを生成できます。 3. テスト コードの開発には Java の知識は必要ありません。 4. プログラマーでなくてもテストコードを簡単に記述できます。 空手の概要を簡単に説明するための簡単な例を示します。 ソープUI SoapUIはSmartBearが開発した機能テストツールです。無料のオープンソース版とプロフェッショナル版の2つのバージョンがあります。無料版は完全にオープンソースなので、必要に応じてソースコードを変更することができます。プロフェッショナル版はより使いやすく、フォームエディター、XPathベースのアサーションウィザード、SQLクエリジェネレーターなど、より多くの機能を備えています。無料版には以下の機能が含まれています。 1: Groovy を使用すると、カスタム コードを簡単に作成できます。 2: ドラッグアンドドロップによるテスト作成 3: 複雑なシナリオのテストを作成できます。 4: 非同期テスト 5. SoapUI のモック サービスを使用すると、Web サービスを実装する前にシミュレートできます。 HTTPマスターエクスプレス HttpMasterは、ウェブサイトやサービスのテストを自動化するウェブ開発・テストツールです。RESTfulウェブサービスやAPIアプリケーションのテストに使用できます。また、APIレスポンスの監視も可能です。主に以下の機能を備えています。 1. HttpMaster は、API リクエストをカスタマイズするためのグローバル オプションを提供します。 2: パラメータ機能を使用すると、リクエストに動的なデータを含めることができます。 3. リクエスト チェーン機能を使用すると、以前のリクエストのデータをリクエストに含め、そのデータを後続のリクエストに提供できます。 安心してください Rest-Assuredは、RESTサービスのテストを簡素化するオープンソースのJavaドメイン固有言語(DSL)です。複雑なレスポンスのテストと検証に定型コードを使用する必要がないため、RESTサービスのテストが簡素化されます。また、XMLおよびJSON形式のリクエストとレスポンスもサポートしています。主な機能は以下のとおりです。 1. REST サービスと対話するための定型コードを作成する必要はありません。 2: BDD Given/When/Then構文をサポート 3. Javaプロジェクトとのシームレスな統合 レストシャープ RestSharpは、.NETアプリケーション用のシンプルなRESTful HTTPクライアントです。以下の機能を備えています。 1: .NET 3.5+、Silverlight 5、Windows Phone 8、Mono、MonoTouch、Mono for Android をサポート 2. ほとんどの .NET 対応プラットフォームでは、NuGet を使用して RestSharp を簡単にインストールできます。 3. GET、POST、PUT、PATCH、HEAD、OPTIONS、DELETE などのリクエスト メソッドをサポートします。 レストコンソール Rest Consoleは、開発者がRESTful APIの構築、デバッグ、テストを行うのに役立つHTTPリクエストの可視化および構築ツールです。以下の機能を備えています。 1. リクエストパラメータは簡単に作成できます。 2: 構文の強調表示機能を備えています。 3. 認証方法(通常、基本、OAuth+カスタム)をサポートします。 RoboHydraサーバー RoboHydraは、HTTPベースのクライアント(HTTPリクエストを発行するソフトウェア)用のテストツールです。テスト中、テスト対象クライアントは実際のサーバーではなく、RoboHydraに接続します。RoboHydraは各リクエストに必要なデータを返します。RoboHydraには以下の特徴があります。 1: さまざまな種類のクライアントをテストできます。 2. RoboHydra は JavaScript を使用して開発され、Node 環境で実行されます。 ヒッピー・スワガー Hippie-SwaggerはRESTful APIをテストするためのツールであり、自動化されたSwaggerアサーションを備えたAPIテストツールでもあります。APIの動作を検証するだけでなく、Swaggerドキュメントが不足しているか不正確な場合は実行に失敗します。以下の機能があります。 1. Swagger ファイルのあらゆる側面(パラメータ、リクエスト/レスポンス本文、パスなど)を検証できます。 2: 正確で読みやすいアサーション情報を持っています。 Weblnject WebInjectは、WebアプリケーションおよびWebサービスのテストを自動化するソリューションです。HTTPインターフェース(JSP、ASP、CGI、PHP、AJAX、サーブレット、HTMLフォーム、XML/SOAP Webサービス、RESTなど)を持つ個々のシステムコンポーネントのテストに使用できます。以下の機能を備えています。 1: コマンドラインベースのツールです 2: Perl で開発されており、MS Windows、GNU/Linux、BSD、Solaris、macOS にインストールできます。 PyRestテスト PyRestTestはPythonベースのREST APIテストツールです。以下の機能を備えています。 1. テストケースは YAML または JSON 構成ファイルに記述できます。コードは必要ありません。 2: 失敗した場合に呼び出されたコードを返します。 3: Mac および Linux 環境でのみ実行できます。 空挺 Airborneは、RubyとRSpecをベースにしたAPIテストフレームワークです。以下の機能を備えています。 1: Sinatra や Grape などのラック アプリケーションに適しています。 2: Railsで書かれたAPIに適用可能 ユニレスト Unirestは、Unmesh Gundecha氏が推奨する軽量なHTTPリクエストライブラリです。xUnitと統合でき、BDD開発者はテストツールとして利用できます。 モックビン MockbinはAugusto Mariettiによって推奨されています。Mockbinを使用すると、ライブラリ、ソケット、API間のHTTPリクエストとレスポンスをテスト、モック、トレースするためのカスタムエンドポイントを生成できます。以下の機能があります。 1: クライアントをシミュレートできる 2: クライアント側HTTPメソッドを作成できる 3: クライアントの次の通話を録音して検査できます。 上記は一般的な API テスト ツールの一部ですが、実際には API テスト ツールはどこにでもあるため、今後も上記の内容を拡張していく可能性があります。 |