jenkins

Jenkinsとnewmanを組み合わせて自動APIテストを実現してみる

Postman + newman + Jenkins の組み合わせが結構便利だったので いつかの自分のために記事を残します。   Postman API テスト ツール 何かで検索するとPostmanの記事を多く見ると思います。 Windows / Linux / Mac / Chrome で動作し 多くの機能を搭載しているAPIテストツールです。 詳しいことはこちらで解説されています。 http://dev.classmethod.jp/tool/api-test-with-postman-01/   newman Postman と同じ会社が開発している Postman のCUI版とでも言うと しっくりくると思います。 Postman で作成したシナリオ(ジョブ)を実行できるツールです。 OSSとしてGithubから簡単に使うことができます。 今回は Postman で作成したテストケースを newman で実行し、Jenkins でデプロイ後に呼び出して自動APIテストをやってみます。     Postman で環境変数を作成する 今回はステージングで使う環境変数を作ってみました。 ここで作成した環境変数は{{host}}として参照できます。 詳しい解説などは先程紹介したインフラエンジニアの味方の クラスメソッドさんの記事を見てみてください。   Postman でコレクションを作成する コレクションとは Postman で作成したジョブ(シナリオ)を 1つにまとめたもののことを言います。 1つ1つのジョブにTestsに tests["Status code is 200"] = responseCode.code === 200; を記述しておきます。こうすることでテストの際に1つの目印を作ります。 今回は例として上記のようなジョブをまとめたコレクションを作ってみました。 コレクションが作成し終えたら左上にあるRunnerを開いて 動作確認をしてみます。   環境変数とコレクションをエクスポートする 上記で作成した環境変数とコレクションをJSONでエクスポートを行います。 UIは直感的なので簡単に分かるかと思います。 エクスポートした2つのファイルを Jenkins の Workspace/ジョブ名 の中に コピーしておきます。   Jenkins に newman をインストールする npmを使って簡単にインストールできます。 # npm i newman -g newman で実際に動作するか確認してみる。 newman run STG-API.postman_collection.json -e staging.postman_environment.json --delay-request 500 [crayon-5b76fc66a75db347513583/] 実際は色文字で出力されてとても見やすい形です。 Jenkins が載っているサーバーで newman の動作確認ができたので 次に Jenkins のジョブに組み込んでみたいと思います。   Jenkins のジョブの設定 デプロイの方法は色々あるかと思いますが ビルドの最後にシェルの実行を追加しこんなスクリプトを追加します。 [crayon-5b76fc66a75e7155357617/] newman のテスト終了後、正常時には0、エラー時は1がexitで返ってくるので エラーが発生した場合、ジョブが失敗するのでこれだけで大丈夫だと思います。 面倒なことをやれば失敗時はSlackでテスト結果を送信みたいなこともできますが コンソール開いても分かるので良いかなって感じです。(Jenkinsの文字コードをUTF-8にする必要有)   最後に…