APIのテストの効率をかなり高めるために、PostmanのコマンドラインツールであるNewmanを利用する必要がよくあります。本文では、Newmanの使い方を皆さんに完全に解説します。
Newmanとは
Newmanとは、PostmanはAPIのテストやドキュメント作成などに用いられるツールですが、GUIベースのアプリケーションです。一方、Newmanはコマンドラインインターフェイスを持っているため、以下のようなことができます。
- APIテストを自動化し、CI/CDパイプラインに組み込む
- テスト結果をプログラムで解析する
- 大量のリクエストをスクリプトから実行する
NewmanはNode.jsで開発されていて、Postmanで作成したコレクションや環境を入力として実行できます。レポート機能もあり、テスト結果をJSONやHTML形式で出力できます。
PostmanとNewmanを組み合わせることで、GUIの利便性とスクリプティングの柔軟性を両立できるため、APIテスト自動化に理想的なツールといえます。
Newmanをインストールして実行する
Newmanを使用し始めるために、まずはそれをパソコンにダウンロードしてインストールする必要があります。このステップにもよく知らない方は、次のチュートリアルを参照してください。
Newmanのインストール
Newmanは、Node.jsの構造で開発されたものとして、それを実行するには、Node.jsのインストールが必須なことになります。Node.jsをまだインストールしていない場合は、Nodeの公式サイトにアクセスしてダウンロードしてください。ここでNode.jsのバージョンがV4以上であることが必要です。Node.jsをパソコンにインストールすると、次のステップを参照して、Newmanをインストールして実行することを試してください。
そして、次のNPMコマンドを使用して、システム全般にNewmanをインストールします:
$ npm install -g newman
Newmanの実行
Newmanをパソコンにインストールすると、それを実行できる最も簡単な方法は、次のコマンドラインを使用して、コレクションファイルから実行することになります。
$ newman run mycollection.json
コレクションは、変数を使用している可能性がありますので、付属する環境変数のセットを提供するために、Postmanからテンプレードをエクスポートして、-e
フラグを用いて実行することができます。
$ newman run https://www.postman.com/collections/cb208e7e64056f5294e5 -e dev_environment.json
テストレポートのサンプル
NewmanでAPIコレクションを実行すると、テストの結果を表示するためのテストレポートが表示されます。テストレポートのサンプルは次のようになります:
→ Status Code Test
GET https://postman-echo.com/status/404 [404 Not Found, 534B, 1551ms]
1\. response code is 200
┌─────────────────────────┬──────────┬──────────┐
│ │ executed │ failed │
├─────────────────────────┼──────────┼──────────┤
│ iterations │ 1 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ requests │ 1 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ test-scripts │ 1 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ prerequest-scripts │ 0 │ 0 │
├─────────────────────────┼──────────┼──────────┤
│ assertions │ 1 │ 1 │
├─────────────────────────┴──────────┴──────────┤
│ total run duration: 1917ms │
├───────────────────────────────────────────────┤
│ total data received: 14B (approx) │
├───────────────────────────────────────────────┤
│ average response time: 1411ms │
└───────────────────────────────────────────────┘
# failure detail
1\. AssertionFai… response code is 200
at assertion:1 in test-script
inside "Status Code Test" of "Example Collection with
Failing Tests"
このテストレポートでは、テストの実行状況が表示されます。テストに失敗した項目があれば、その失敗の原因も詳しく表示されますので、非常に便利です。また、次のようなコマンドラインを使って、テストレポートをJSONファイルにエクスポートすることもできます:
$ newman run mycollection.json --reporters cli,json --reporter-json-export outputfile.json
CI/CDにNewmanを使用
デフォルト設定として、全てのテストが順調に実行できた場合は、Newmanはステータスコードの0でプロセスを終了します。そこで、ご利用中のCI/CDツールを使って、Newmanのステータスコードを検証することで、テストの結果を判断できます。また、エラーが発生してステータスコードが1になる場合、 --bail
フラグを使用して、Newmanを停止させることも可能です。このエラーは、ご利用中のCIツールやビルドシステムによって検出することも可能です。
Newmanで利用可能なコマンドオプション
Newmanでは、利用可能なコマンドオプションはたくさんあります。 -h
を利用することで、利用可能なオプションを確認できます。
$ newman run -h
次は、Newmanで利用可能なコマンドオプションの一覧表を皆さんに紹介します。
オプション | 説明 |
---|---|
-h, --help | 使用法の情報を出力 |
-v, --version | バージョン番号を出力 |
--folder [フォルダ名] | 実行するフォルダを指定 |
-e, --environment [ファイル|URL] | 環境設定をJSONで指定 |
-d, --iteration-data [ファイル] | データファイル(JSON/CSV)を指定 |
-g, --globals [ファイル] | グローバル変数設定をJSONで指定 |
-n, --iteration-count [数値] | 実行回数を指定 |
--working-dir [パス] | ワーキングディレクトリを指定 |
--no-insecure-file-read | ワーキングディレクトリ外ファイルの読み込み禁止 |
--export-environment [パス] | 結果の環境変数を出力 |
--export-globals [パス] | 結果のグローバル変数を出力 |
--export-collection [パス] | 結果のコレクションを出力 |
--delay-request [数値] | リクエスト遅延時間を指定 |
--timeout [数値] | 全体のタイムアウトを指定 |
--timeout-request [数値] | リクエストタイムアウトを指定 |
--timeout-script [数値] | スクリプトタイムアウトを指定 |
--bail | テスト失敗時に中止 |
--silent | 出力を抑制 |
--color off | 色付き出力のon/off |
--disable-unicode | Unicodeをプレーンテキストに変換 |
-k, --insecure | SSL証明書検証を無効化 |
-x, --suppress-exit-code | 失敗時もコード0で終了 |
--ignore-redirects | リダイレクト応答の自動フォロー無効化 |
--verbose | 詳細なログを出力 |
--cookie-jar [パス] | Cookie Jarファイルを指定 |
--export-cookie-jar [パス] | 結果のCookie Jarを出力 |
--global-var "[変数名]=[値]" | グローバル変数を指定 |
--env-var "[変数名]=[値]" | 環境変数を指定 |
より包括的なAPI管理ツール:Apidog
ApidogはAPI設計、APIデバッグ、APIモック、API自動化テストを一体化にした包括なAPI総合プラットフォームで、Postman、Swagger、APiモック、Jmeterの機能をすべて集成しています。直感的で使いやすいUIを提供し、様々なHTTPリクエスト方法、パラメータタイプ、データ形式をサポートできますし、レスポンス検証、コレクションテスト、環境変数など、豊富なテスト機能も完備しています。また、ApidogのUIは完全に日本語化され、英語がそんなに得意ではない方は、簡単にApidogを使用して、APIをテストしたり、設計したりすることができると思います。
また、Apidogは、オンラインで無料利用できるWebアプリも存在していますし、Mac、Windows、Linux向けダウンロード版も存在しています。また、PostmanのNewmanと同じように、CLIツールもありますので、どのようなデバイスでApidogを使用したくても、Apidogがそれに対応できます。
Apidog CLIのインストール
Apidog CLIは、Apidogのコマンドラインツールであり、主にAPIテスト自動化を行うために利用されます。Apidog CLIは、Node.jsに依存しています。CLIツールを利用するには、まずはNode.js V10以上のバージョンがインストールされていることを確保してください。
インストールコマンド:
npm install -g apidog-cli@latest
上記のコマンドでApidogをご利用中のシステム全般にインストールすることができます。
Apidog CLIのコマンドオプション
オプション | 説明 |
---|---|
-r, --reporters [レポーター] | テストレポートのフォーマットを指定 (デフォルト: cli) |
-n, --iteration-count |
反復実行回数を設定 |
-d, --iteration-data <パス> | 反復実行のためのデータ(JSON/CSV)を設定 |
--external-program-path <パス> | 外部プログラムのパスを指定 (デフォルト: カレントディレクトリ) |
--out-dir <ディレクトリ> | テストレポートの出力ディレクトリを指定 (デフォルト: apidog-reports) |
--out-file <ファイル> | テストレポートのファイル名を指定 (拡張子不要) |
--database-connection <パス> | データベース接続設定ファイルのパスを指定 (URLテストで必須) |
--ignore-redirects | リダイレクト応答の自動フォローを無効化 |
--silent | コンソール出力を抑制 |
--color <値> | コンソールの色出力のon/offを指定 (デフォルト: auto) |
--delay-request [n] | リクエスト間の遅延時間を指定(ミリ秒) (デフォルト: 0) |
--timeout-request [n] | リクエストのタイムアウトを指定(ミリ秒) (デフォルト: 0) |
--timeout-script [n] | スクリプトのタイムアウトを指定(ミリ秒) (デフォルト: 0) |
-k, --insecure | SSL証明書検証を無効化 |
--ssl-client-cert-list <パス> | SSLクライアント証明書リスト(JSON)のパスを指定 |
--ssl-client-cert <パス> | クライアント証明書(PEM)のパスを指定 |
--ssl-client-key <パス> | クライアント秘密鍵のパスを指定 |
--ssl-client-passphrase <パスワード> | 秘密鍵のパスフレーズを指定 |
--ssl-extra-ca-certs <パス> | 追加CA証明書(PEM)のパスを指定 |
--verbose | 詳細情報を出力 |
-h, --help | ヘルプを表示 |
また、必要に応じて、Apidog CLIツールを利用して、JenkinsなどのCI/CDツールに連携することもできます。