10ステップAPIテストを効果的に自動化する方法〜

この投稿を読む前に、次の問題の少なくとも1つがあることを確認してください。

  1. 問題がありますか、それとも手動でAPIテストを行っていますか?
  2. エンドポイントを自動的にテストする方法が正確にわからないため、REST APIエンドポイントをテストするためにPostman / Insomnia / Pawを頻繁に使用してQA / QE / TE / SETとして作業していますか?
  3. アプリからテストを分離したいQA / QE / TE / SETとして働いていますか?

この投稿の主な目的は、APIテストを自動化し、Jenkins CIと統合することにより、上記のすべての問題を解決することです。その仕事に適したツールとテクニックを選択すれば、思っているよりも簡単です。

前提条件

  1. Node.js:Node.jsは、ChromeのV8 JavaScriptエンジン上に構築されたJavaScriptランタイムです。 Node.jsは、イベント駆動型のノンブロッキングI / Oモデルを使用しており、軽量で効率的です。 Node.jsのパッケージエコシステムであるnpmは、世界最大のオープンソースライブラリのエコシステムです。
  2. Mocha:Mochaは、非同期テストを容易にするJavaScriptテストフレームワークです。
  3. Chai:Jasmineとは異なり、Mochaを補うために追加のアサーションライブラリを使用する必要があります。 Chaiは、「assert」、「expect」、「should」など、最も好きなアサーションインターフェイスを選択できるアサーションライブラリです。
  4. SuperTest:SuperTestは、軽量HTTP AJAXリクエストライブラリであるSuperAgentの拡張です。 SuperTestは、わかりやすいアサーションでnode.js APIエンドポイント応答をテストするための高レベルの抽象化を提供します。
  5. Docker:Dockerは、開発者とシステム管理者が、ラップトップ、データセンターVM、またはクラウド上で分散アプリケーションを構築、出荷、実行するためのオープンプラットフォームです。
  6. Jenkins CI:Jenkinsは、Javaで書かれたオープンソースの自動化サーバーです。 Jenkinsは、継続的インテグレーションなどの一般的なことで、ソフトウェア開発プロセス全体の非人間的部分を自動化するのに役立ちますが、継続的デリバリの技術的部分を実装するチームをさらに強化します。

このチュートリアルでは、次のものがあることを前提としています。

  1. Node.jsとマシンにインストールされたdocker。
  2. テストするAPIが既に実行されているアプリ。 (サンプルアプリはhttps://github.com/rifkyalikiki/example-api-appです)
  3. Jenkins CIはすでにインストールされています。

始めましょう

  1. テストプロジェクトフォルダーを作成します。例:example-api-testing
  2. package.jsonファイルを作成して、すべての依存関係を追加します。

3.これらのコマンドを実行して、すべての依存関係をインストールします。

cd your_test_project_folder
npm install -g mocha
npmインストール

node_modulesフォルダーをテストプロジェクトフォルダーに追加し、すべての依存関係を正常にインストールする必要があります。

4.テストプロジェクトフォルダーにテストフォルダーを作成します。

cd your_test_project_folder
mkdirテスト

実行するテストファイルを見つけるには、Mochaのディレクトリをtestと呼ぶ必要があります。

5.最初のAPIテストファイルを作成する

mochaファイルには任意の名前を付けることができます。ただし、モデルのセットに関連付けられている複数のエンドポイントをテストする場合は、「yourModel_test.js」という名前を付けることをお勧めします。この例では、テストディレクトリ内にuser_test.jsファイルを作成します。 APIのURLもグローバル変数に設定することを忘れないでください。 SuperTestを使用してRESTfulリクエストを行うときに、この変数を呼び出します。

6.これらのコマンドを実行して、最初のAPIテストを実行しましょう

cd your_test_project_folder
npm start
または
cd your_test_project_folder
JUNIT_REPORT_PATH = test-result / result.xml JUNIT_REPORT_STACK = 1 mocha --timeout 25000 --colors --reporter mocha-jenkins-reporter

テスト結果はこちら

ターミナルからのテスト結果result.xml

7. entrypoint.shを作成して、テストランナーコマンドを配置します。

8. Jenkins CIで使用されるdockerfileを作成します。

9. Jenkinsジョブアイテムを作成する

新しいJenkinsジョブアイテムジェンキンズジョブアイテム(1)ジェンキンズジョブアイテム(2)ジェンキンズジョブアイテム(3)

最初にテスト結果の警告を無視できますが、ジョブを実行すると消えます。

その後、[保存]ボタンをクリックしてジョブを作成します。

10. Jenkinsジョブを実行して、テスト結果を確認します。

再生ボタンをクリックして、ジェンキンスジョブを実行しますジェンキンスジョブのテスト結果

私はこの投稿を書いている間にすでに仕事をしていたので、私のテスト結果はあなたとは異なります。

おめでとうございます。APIテストの自動化が正常に完了しました。次の投稿では、独自のテストフレームワークを作成するという私の考えについて洞察を提供します。

ハッピーテスト!

ソース:http://developmentnow.com/2015/02/05/make-your-node-js-api-bulletproof-how-to-test-with-mocha-chai-and-supertest/