# APIの継続的テスト

継続的インテグレーション(CI)でテストを自動的に実行します。

Talend Cloud API TesterのCLI テストランナーは、ほとんどのCIソリューションと緊密に統合されているため、CIマシンにインストールされている[最新のJava JDK](http://www.oracle.com/technetwork/java/javase/downloads/index.html)および[Maven](http://maven.apache.org/)だけが必要になります。

次のソリューションはTalend Cloud API Testerと互換性があります。

* Jenkins
* Azureパイプライン
* AWS CodeBuildおよびCodePipeline
* Travis CI
* CircleCI
* Team Foundation Server
* Gitlab CI/CD

互換性を持つCI/CDソリューションは他にも存在することがあります。動作する別のソリューションをお使いの場合は、このページをアップデートしますのでご一報ください。

## CIワークフロー

APIテストは次のフローに従う必要があります:

![継続的統合ワークフローの図。](https://help.qlik.com/talend/ja-JP/api-tester-user-guide/Resources/images/ci_workflow.png)

ソースからAPIをビルドし、単体テストを実行してデプロイし、最後にTalend Cloud API Testerを使用して統合テストを実行する必要があります。

技術的には、以下で説明するとおり主に2つの方法があります。CIビルドを設定する方法の詳細は、[Talend Cloud API Testerの例](https://help.qlik.com/talend/ja-JP/api-tester-user-guide/Cloud/api-tester-examples "次のユースケースでは、Talend Cloud API Testerで提供される機能を実践できます。")を参照してください。

## 基本的なワークフロー: メインブランチを1日1回テストする

![ファイルは毎晩ソースコントロールからフェッチされ、これによって統合パイプラインがトリガーされます: ユニットテストを実行してサービス実装をパッケージ化した後、パイプラインはそれをステージング環境にデプロイします。続いて、APIが期待どおりに動作していることを検証するため、APIテストが実行されます。](https://help.qlik.com/talend/ja-JP/api-tester-user-guide/Resources/images/ci_nightly.png)

固定環境でAPIのテストを選択した場合は、オンデマンドでテストを実行するか、ジョブを毎晩実行するようにスケジュールできます。このソリューションは導入が簡単で、作業を完了できますが、次の点にご注意ください:

* 一度に実行できるテストは1つだけです。
* テストの実行時にAPIのデータは「汚染された」状態となり、別のテストを実行する前にクリーンアップするか、同じ条件で実行しないようにする必要があります。
* テストの実行中は、その環境にアクセスできる人なら誰でもAPIをリクエストでき、その結果、デバッグが困難になるテストの失敗が発生する可能性があります。

ステージング環境でテストしている場合は、夜間に1回実行されるCRONタスクを作成して以下の操作を実行できます。

* APIコードとテストファイルをGitHubから取得
* APIコードをビルドしてテスト
* 環境にデプロイ
* Mavenプラグインを使用してAPIテストを実行
* テストレポートを取得

ジョブが存在する場合、オンデマンドで実行できます。

## 高度なワークフロー: 各コミットでAPIを確認する

![ソースコントロールへのコミットごとにビルドがトリガーされます。サービス実装のデプロイには、短命のコンテナーが使われます。APIテストは、実行中のAPIに対して行われます。テストが終わると、ブランチのステータスがソースコントロールに送られます。](https://help.qlik.com/talend/ja-JP/api-tester-user-guide/Resources/images/ci_advanced.png)

より高度なソリューションは、各ジョブ実行のコンテナーにAPIをデプロイすることです。これにより、以下の操作が可能になります。

* 複数のブランチの同時テスト
* 本番環境とは分離された環境での作業
* すべてのコミットのテスト

コンテナーでAPIをテストする場合は、ソースのアップデートごとに実行されるタスクを作成して以下の操作を実行できます:

* APIコードのビルドおよび単体テスト
* コンテナーでのデプロイ
* Talend Cloud API TesterMavenプラグインを使用してAPIテストを実行
* テストレポートを取得