a little background
今日、CIパイプラインは開発日の仕事に欠かせないものであり、配信サイクルを短縮し、高品質のソフトウェアをもたらすのに役立
バックエンド開発者として、Apiは私のアプリケーションのほとんどでコーンストーンになったので、それらをテストする必要がありました。
CIパイプラインにAPIテストステージを用意することで、製品の品質に自信を持ち、何かが壊れた場合に警告します。
Postman
Postmanは、APIライフサイクルのすべての段階で開発者を支援する素晴らしいツールです。 それは偉大なドキュメントとそれを使用する開発者のますますコミュニティを持っているので、クールなヒントやトリックを説明する記事を見つ
コレクション
郵便配達員は、コレクションに私たちの異なる要求を整理することが容易になります。 個人的に私はテストしたいすべてのプロジェクトのコレクションを作成します。 次に、コレクション内で、プロジェクト上のすべてのエンティティのフォルダを作成し、APIのすべてのエンドポイントをカバーしようとします。
環境
Postmanは、リクエストを実行するために異なる環境を作成することができます。 実際の例を挙げると、ローカル環境、ステージング環境、本番環境の3つの異なる環境で作業しているので、環境間の変化するデータを表す変数を使用して3つの異なる環境を作成します(API要求のベースパスなど)。 このようにして、私は単一の要求を定義することができますが、3つの異なる環境に簡単にターゲットを設定することができます。 新しい環境を変更したり、追加したりするのがいかに簡単かを考えてみてください!
テスト要求
Postmanの最大の特徴の一つは、要求が実行されるたびに実行されるテストをコーディングできることです。 それらはJSで書かれており、応答コード、応答本文o応答ヘッダーのようなものをチェックするためのクールなアサーションセットを持っています。
甘い! APIをカバーするテストスイートを作成したら、Postmanが提供する組み込みツールであるCollection Runnerを使用して、コレクションのすべての要求を実行し、テスト結果のレポー
ボーナス: 時には、私たちは特定の順序で私たちの要求を実行し、何を推測したいですか? 郵便配達員は、私たちはそれを行うことができます! >
これまでに何があったのかな?
この時点で、私たちはすべての環境でAPIをターゲットにすることができるリクエストの束を持つPostmanコレクションを構築しました。 それに加えて、すべての要求には、それが正常に動作しているかどうかを確認するためのいくつかのテストがあります。 生きているためにどのような時間!
ニューマン
先ほど言ったコレクションランナーを覚えていますか? それは簡単なクリックで私たちのコレクション内のすべての要求を実行することができます。 しかし、同じことをするコマンドラインツールはどうですか? ニューマンがやってる NewmanはPostmanのコマンドラインコレクションランナーで、コマンドラインから直接Postmanコレクションを実行してテストし、CIサーバーに簡単に統合できるため、jenkinsでAPIテストを自動化するのに最適なツールになります。
コレクションの実行
Newmanでコレクションを実行するには、まずPostmanからエクスポートする必要があります。 私たちのリクエストの中にはいくつかの変数が遊んでいるので、適切な環境もエクスポートする必要があります。 両方のファイルを取得したら、コレクションを次のように実行できます:
$ newman run our.postman_collection.json -e our.postman_environment.json
そして、我々は他のテストフレームワークと同様に、コレクションの実行のレポートが表示されます。
出力の書式設定
レポートは、さまざまな方法で書式設定できます。 これを実現するために、NEWMANはJSON、XUNIT、HTMLなどのさまざまな出力形式をサポートする一連のレポーターを提供しています。 それに加えて、あなたが望む任意の形式でレポートをフォーマットするために、独自のレポーターを作成することができます。
Jenkins
クール、私たちはPostmanでAPIテストスイートを定義しており、コマンドラインから実行し、Newmanでこれまでの結果の素敵なレポートを得ることができます。 しかし、今、私たちはCIパイプラインに素晴らしい新しいスキルを含めたいと思っています。
免責事項:JENKINSを自動化サーバーとして使用してCI/CDパイプラインを構築しており、必要なすべてのツール(Newmanなど)がインストールされているDockerコンテナでCI
物事を混合する
基本的に、APIテストをCIパイプライン内に含めるには三つのファイルが必要です:
- jenkinsfile、パイプラインを定義します
- Postmanコレクション、リクエストとテストのセットを定義します
- Postman環境、ターゲット環境の変数を定義します
十分な話、コードしましょう!
APIテストを実行するには、パイプラインに新しいステージを作成する必要があります。 私たちは通常、インターフェイスをテストする前に、すべてが期待どおりに実行されていることを確認するために、単体テストと統合テストの後に
pipeline { ... stage('Test API Rest') { steps { sh 'newman run tests/Newman/our.postman_collection.json -e tests/Newman/env/test.postman_environment.json -r junit,html --reporter-junit-export var/reports/newman/junit/newman.xml --reporter-html-export var/reports/newman/html/index.html' publishHTML() } } ...}
ご覧のように、Newmanのrunコマンドを呼び出し、コレクションにテスト環境ファイルをパラメータとして提供します。 それに加えて、使用するレポーター(JUNIT、HTML)と出力がどこに格納されるかも通知します。
ボーナスとして、HTML PUblisher Jenkinsプラグインを使用してHTMLレポートをビルドにリンクします。
私はあなたが私がそれを書いたのと同じくらいこの旅を楽しんで、いつものように、フィードバックが歓迎されることを願っています!