CircleCI でのテストの自動化
はじめに
CircleCI を使用すると、お客様のコードを変更内容がマージされる前に自動的にテストできます。 テストツールは、Jest、Mocha、pytest、JUnit、Selenium、XCTest などのフレームワークと連携できます。
お客様がテストを CircleCI パイプラインと連携すると、ソフトウェアをユーザーに高い信頼性で効率的に配信できるだけでなく、すぐにフィードバックが得られるため、問題や失敗したテストをより迅速に解決できます。 テスト出力データは CircleCI で使用でき、失敗したテストのデバッグに役立ちます。 テストデータを CircleCI に保存すると、テストインサイトや並列実行機能を利用でき、パイプラインをさらに最適化できる機会を把握できます。
基本事項
テストスイートをプロジェクトパイプラインで自動的に実行するには、設定キーを .circleci/config.yml
ファイルに追加します。 通常これらは、ジョブ内で実行するためのステップまたはステップのコレクションとして定義されます。
パイプラインは、テストのスイートを実行環境内で実行するためのステップを含む定義済みの 1 つのジョブを持つ単一のワークフローで構成されます。
jobs:
build-and-test:
docker:
- image: cimg/node:16.10
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # context / project UI env-var reference
steps:
- checkout
- node/install-packages:
pkg-manager: npm
- run:
name: Run tests
command: npm test
run
は、シェル内でコマンドを実行する組み込みステップです。 テストやその他のコマンドを実行するための run
ステップの詳細については、 CircleCI の設定リファレンスをご覧ください。
お客様の要件によっては、複数のジョブをオーケストレーションする複雑なワークフローが必要な場合があります。 例として、プロジェクトを独立した Linux、macOS、Windows の各実行環境内で構築してテストするための複数の同時実行ジョブがある場合が挙げられます。 または、テストジョブは、先行するビルドジョブが成功した後でのみ実行することを要求したい場合があります。
ワークフロー機能に関する詳細は、 ワークフローに関するドキュメントを参照してください。 サンプル設定のページで、その他のワークフローのサンプルを参照することもできます。
テストを簡略化するための Orb の使用
Orb を使用すると、一般的なテストツールをご利用の設定と連携できます。 Cypress、LambdaTest、Sauce Labs などの CircleCI パートナーの Orb をお客様の .circleci/config.yml
ファイルで呼び出せます。 このような Orb を利用することで、組み込みジョブを実行してお客様のパイプライン内に一般的なテストタスクを組み込んだり、お客様のジョブ内に簡潔な使用状況コマンドを組み込んだりすることができます。
Orb はモバイルテスト、ブラウザーテスト、負荷テスト、コードカバレッジに使用できます。 Orb を初めてお使いの場合、 Orb の概要ドキュメントを参照してください。 Orb レジストリを表示するには、 CircleCI Developer Hub にアクセスしてください。
テストデータの保存
テストからの成果は、以下の 2 種類の方法で CircleCI に保存できます。
-
store_test_results
ステップを使用するsteps: ... # Steps to build and test your application - store_test_results: path: test-results
このステップによって、テスト結果がアップロードされて保存されます。さらに、Web アプリ内のジョブの Tests タブで、失敗したテストからの出力に直接アクセスできるようになります。
store_test_results
の詳細は、 CircleCI の設定リファレンスでご確認いただけます。 -
テスト結果をアーティファクトとして保存する
テスト結果は、
store_artifacts
ステップを使ってアーティファクトとして保存することもできます。steps: ... # Steps to build and test your application - store_artifacts: path: test-results destination: junit
成果は後でファイルとしてアクセスまたはダウンロードできます。これには、CircleCI Web アプリのジョブの Artifacts セクションを使用するか、API を使用します。
store_artifacts
の詳細は、 CircleCI の設定リファレンスでご確認いただけます。 詳細は、 ビルドアーティファクトの保存ガイドでもご確認いただけます。
異なるテストフレームワークを使用したテストデータの保存の詳細なサンプルは、 テストデータの収集ドキュメントをご覧ください。
テストインサイト
テスト結果が保存されるときに、テスト分析も Web アプリの Insights ページの Tests タブで利用できるようになります。 結果が不安定なテスト、成功率が低いテスト、遅いテストのメトリクスを使うと、パイプラインを最適化し、テスト戦略をさらに向上できる機会を把握できます。
詳しくは、 テストインサイトガイドをご覧ください。
次のステップ
- 並列実行とテストの分割によってご利用のパイプパインをさらに最適化します。
- テスト分割チュートリアルをお試しください。
- macOS アプリまたは iOS アプリのテストを連携します。
- CircleCI でブラウザーテストを実行し、デバッグするための一般的な方法について、 ブラウザーテストガイドをお読みください。
- パイプラインに関するイベントベースの通知 (ジョブがパスまたは失敗した場合など) を Slack で受け取るには、 Slack Orb チュートリアルをご確認ください。