Amarengo

Articles and news

Humble Bits

Postman,Newman and Jenkinsを使用したAPIテスト

APIテストは、エンジニアが機能だけでなく、パフォーマ Apiは、アプリケーションの機能の中核であるため、アプリケーションが期待どおりに動作するかどうかを調べるためにテストされます。

開発中のAPIテストでは、API、サーバー、その他のサービス、ネットワークなどの問題が明らかになり、デプロイ後に簡単に発見または解決できない可能性があ

しかし、Apiのテストは困難です。 エンドポイントの応答を検証するだけではなく、Postmanとの統合テストを使用して、応答を調べて検証することができます。 最近のチームは、展開が完了したらすぐにこれらのテストの実行を自動化することもできます。 私たちが取ることができる一つのアプローチは、開発者がレポにコードをチェックインするたびに統合テストを実行することです。

この品質チェック層を追加すると、既存の機能が期待どおりに動作することを保証することができ、開発者はコードが意図したとおりに動作していることを検証することができる追加の利点があります。

CIにおけるAPIテスト自動化のためのツール

CIは継続的な統合を指します。 テストスクリプトとテストツールを継続的なビルドシステムと統合し、テストスクリプトを新しい展開ごとに、または定期的に(毎日、毎週、または隔週)実)

  1. 郵便配達員: Postmanとの統合テスト。
  2. Newman:コマンドラインを介してこれらの統合テストを実行するPowerShellファイルを作成します。
  3. Jenkins:ビルドが開始されるたびにPowerShellスクリプトを実行するために、Jenkinsにビルド後のステップを追加します。

API Selection

GPS Apiを使用してこの手順をプロジェクトに実装しましたが、ここでインスタンス化するために、次のApiを取り上げましょう。

Open Weather Map:Free public Api。

これは、誰もが購読して操作する独自のAPIキーを持つことができるApiの無料コレクションであるため、これを選択しました。

統合テストの作成

最初のテストでは、IDで天気を取得するための簡単なGETリクエストを取り上げましょう。 Apiを介して対話するには、OWMサービスのサブスクライブ時に受信したAPIキーを使用してください。

最初の統合テストへのステップ

Postmanの環境を’Weather Map’と言い、その中に環境変数を定義します。 .

テストを設定するには、Pre-Reqタブに前提条件を追加します。

var cityIds=;//0-9var randomCityId=Mathの間の乱数を取得します。床((数学.ランダム() * 9) + 1);// 環境変数をarraypostmanからのtherandom city idの値に設定します。setEnvironmentVariable("CITYID",cityIds)

次に、テストタブに次のようにテストスクリプトを追加します:

var jsonData=JSON.parse(responseBody);//response"name"値を環境に保存するvariablepostman.setEnvironmentVariable("CITYNAME",jsonData.name);pm.test("ステータスコードは200です",function(){pm.response.to.have.status(200);});

上記のテストスクリプトは応答を取得し、スクリプトは’jsonData’という変数で応答をラップします。 これで、nameプロパティの値が環境変数に保存されます。

したがって、HTTPステータスコードが200以外の場合に失敗する最初のテストが作成されます。

コレクション

上記のAPIテストと同様に、複数のエンドポイントに対して複数のテストスクリプトを持つことができます。 また、これらの複数のテストスクリプトを順番に実行して、エンドツーエンドのテストスイートを作成できます。 テストスイートを作成する方法は、Postmanのコレクションとして呼ばれるプレースホルダに複数のテストスクリプトを保持することです。

これらのコレクションは、ツールのコレクションランナーを介してさらに実行できます。

Collection Runner

collection runnerを使用すると、テストスクリプトを持つAPIエンドポイントのコレクションを一箇所に持つことができるため、それらを順次実行できます。 ユーザーは、必要なすべてのテストデータ、テストスクリプト、および必要な回数の反復でコレクションを一度だけ実行するだけです。 コレクションの実行の結果は、Apiのパフォーマンスを監視し、失敗したテストスクリプトの実行を再試行するのに十分な包括的なテストレポートです。

コレクションランナーの詳細な研究については、リンクを参照してください。

Postman’s collection runnerのユーザーインターフェイスは十分ですが、システムをJenkinsと統合するには、コマンドラインを介してコレクションを実行する必要があります。 そのため、コマンドラインを介してコレクションを実行する方法はNewmanを使用する方法です。

Newman

Newmanは、コマンドラインから直接コレクションを実行してテストすることを可能にするノードパッケージマネージャ(NPM)パッケージです。

:

  • NodeJSと
  • NPMは既にインストールされています。

Windows Powershellで実行するコマンド

  • node-v
  • npm-v
  • $npm install-g newman

必要なインストールが完了したら、コレクションと環境をローカルシステムのJSONファイルにエクスポートする必要があります。 これらのファイルは、Newmanに引数として渡すことができます。

ローカルシステム上の環境とコレクションを取得する手順:

  • 郵便配達員のダウンロードとエクスポートボタンをクリックします。
  • コレクションをダウンロード
  • 環境をダウンロード
  • コマンドプロンプトを開き、権限を上げます。 これは、スクリプトを実行するために重要です。 次のコマンドを実行します:
Set-ExecutionPolicy-Scope CurrentUserExecutionポリシー:この変更をUnrestrictedconfirm: Y

別のコマンドプロンプトを開き、次のコマンドを実行します:

newman run-e

JenkinsへのPostmanテストの追加

まず、Postmanファイル(環境とコレクション)をエクスポートし、それらをGITに追加し、Jenkinsビルドを介してテストを実行す

“Postmanファイルをプロジェクトのルートに追加します。”

Jenkinsにnewmanを実行するように指示する

このために、Newmanを呼び出し、環境とコレクションJSONファイルを渡すスクリプトを作成します。

#-------exe-executionpolicy bypass-command"&'%WORKSPACE%\Jenkins_Postmandemo.ps1'"Echo"Powershellスクリプト内"Powershell SourceFilePath=$env:WORKSPACE$FilenamePostfix="*.ポストマン_コレクション。-----------postman_environment.json"#すべてのPostmanテストファイルを取得します$JsonFiles=Get-ChildItem-Path$SourceFilePath-name-Filter$FilenamePostfix|Sort-Object-Property CreationTime-Descending#NodeJsがインストールされているディレクトリに変更します。 それ以外の場合、'newman'コマンドは認識されません。#NPMとNewmanをユーザーとしてインストールし、~Roaming\npmディレクトリをtheC:\ドライブにコピーできます。#cd C:\Users\\AppData\Roaming\npm\node_modules\newman\bincd C:\npm\node_modules\newman\bin#ループを通じて、jsonファイルや実行ニューマンのPostman testsforeach($ァ$JsonFiles){$collectionfilepath="$SourceFilePath\$File"$environmentfilepath="$SourceFilePath\$EnvironmentFile"ノードニューマン走$collectionfilepath-e$environmentfilepath--disable-unicode}口$LASTEXITCODE

– ‘口$LASTEXITCODE’: このコマンドを入力すると、最後のコマンドの結果が表示されます。 これは、すべてのループでNewmanコマンドが成功することを確認するために行います。 いずれかのテストが失敗した場合は、スクリプトを停止して1を終了する必要があります。 Jenkinsでのビルドが失敗します。

Jenkinsへのスクリプトの追加

ステップ:

  • Jenkinsにログインし、Freestyleプロジェクトを作成します。
  • まず、Gitからレポコードをプルするようにこのプロジェクトを設定します。
  • 一般タブで、ビルドセクションに移動し、次のコマンドを追加します:
-------exe-executionpolicy bypass-command"&'%WORKSPACE%\Jenkins_Postmandemo.ps1'

**電子メール通知セクションを構成して、ビルドの失敗に関する電子メールアラートを構成することもできます。

ビルドの実行と結果の監視

プロジェクトを実行し、結果を調べてみてください。

jenkins出力のステートメント’Inside Powershell script’を使用すると、powershellスクリプトに正常に入ることができます。

結論

Postman、Newman、Jenkinsを利用した継続的な統合の改善により、開発ライフサイクルに品質保証の別の層が追加されます。 これは自動化の大きなステップですが、テストカバレッジはテストスクリプトの品質に依存するという事実を強調する必要があります。

コメントを残す

メールアドレスが公開されることはありません。