CircleCI の AI エージェント Chunk でテストカバレッジを向上させる方法
Content Marketing Manager
テストカバレッジは重要だと誰もが理解している指標ですが、いざテストを書く段階になると後回しにされがちです。新機能のリリース、バグ修正、本番環境のトラブル対応などに追われる中で、エッジケースやエラーパスまで含めた包括的なテストは、どうしてもバックログの後方へ追いやられてしまいます。その結果、カバレッジの抜け漏れが積み重なり、技術的負債が増え、コードベースはリグレッションに弱い状態になってしまいます。
AI を活用した開発ツールの普及により、コード変更の量とスピードは加速しています。AI コーディングアシスタントなら、これまで数時間かかっていた機能実装を数分で生成できますが、テストカバレッジはそのスピードに追いつかないことが少なくありません。その結果、ひとつの課題が浮かび上がります。AI の開発スピードを維持しながら、どうやって品質を保つのかという問題です。
CircleCI の自律型 CI/CD エージェント Chunk は、AI の機能を CI パイプラインに直接組み込むことで、この課題を解決します。IDE(統合開発環境)で動作する AI コーディングアシスタントとは異なり、Chunk は CircleCI 環境内で稼働するため、ビルド履歴やテスト結果、パイプラインデータにアクセスできます。コードベースを分析してテストされていないパスを特定し、カバレッジを実質的に向上させるテストを自動生成します。このガイドでは、Chunk を活用してテストカバレッジを自動的に拡張する方法を解説します。
Chunk のセットアップ
Chunk を使い始めるには、パイプラインが稼働しているプロジェクトを持つ CircleCI アカウントが必要です。CircleCI を初めて利用する場合は、スタートガイドを参考にリポジトリを接続してください。
手元のプロジェクトで進めても構いませんし、GitHub 上のデモプロジェクトを利用することもできます。
CircleCI でプロジェクトが稼働している状態で、以下の手順を行います。
- CircleCI Web アプリのサイドバーから Chunk を選択します。
- Set up Chunk をクリックし、画面の指示に従って GitHub のアクセスを承認します。Chunk はリポジトリを分析するための読み取り権限と、変更内容をプルリクエストとして作成するための書き込み権限を必要とします。
- プロンプトが表示されたら、Anthropic または OpenAI の API キーを接続します。Chunk はユーザー自身の API 認証情報を使用するため、コードが外部プロバイダーにモデル学習目的で送信されることはなく、データはユーザーの管理下に保たれます。
Chunk は既存の CircleCI パイプラインにそのまま統合でき、設定の変更は不要です。承認が完了すると、リポジトリのコードとビルド履歴の両方を分析し、プロジェクトの構成を把握します。セットアップの詳しい手順については、Chunk のドキュメントをご参照ください。
Chunk にテストカバレッジの拡張を依頼する
Chunk を有効にしたら、サイドバーから Chunk をクリックします。プロンプト入力画面が表示されるので、Chunk に実行させたいタスクを記述します。
まずはシンプルなプロンプトから始めてみましょう。プリセットオプションをクリックすることもできます。ここでは Extend test coverage プリセットを選択します。このプリセットにより、入力欄に以下のプロンプトが自動入力されます。
Analyze my codebase and extend test coverage for untested or under-tested code. Focus on adding new tests, not modifying existing ones.
Submit をクリックすると、Chunk が作業を開始します。Chunk は CI/CD 環境内で動作するため、テスト履歴、カバレッジレポート、ビルド成果物などにアクセスできます。これらのデータを活用して、カバレッジが低い、あるいは不足しているモジュールを特定し、テストケースを生成します。その後、既存のテストスイートに対して検証を行い、レビュー可能な変更としてまとめます。
結果をレビューする
Chunk の分析が完了すると、検出内容と実施された変更のサマリーが表示されます。このページで詳細を確認し、プルリクエストを作成するかどうかを判断できます。変更内容に納得がいかない場合は、プルリクの作成をスキップし、プロンプトを調整して再度実行することも可能です。
Chunk は実施した変更内容を以下のように説明してくれます。
Changes
Batch Processor: Split generic invalid input test into specific cases
(null, non-array, object) and added test for promise-returning non-async
transforms
Pipeline Processor: Added validation tests for step name/function
requirements, added getSteps() method tests, and added promise handling
tests for null/undefined results
CSV to JSON Transformer: Added input validation tests (undefined,
non-string, object) and extensive edge case tests (empty lines,
whitespace, missing values, extra values, custom delimiters)
Normalize Transformer: Added nested object tests (uppercase, deeply
nested, null values), primitive value tests, and non-string object
value preservation tests
Currency Validator: Added null/undefined validation tests and formatting
tests for values with/without commas
Date Validator: Added null/undefined/non-string validation tests and
normalization tests for whitespace handling
Email Validator: Added null/undefined/non-string input validation tests
Phone Validator: Added null/undefined/non-string validation tests,
invalid character tests, and formatting output tests
These changes improve test coverage by adding edge case handling, input
validation, and specific error message verification.
変更内容に問題がなければ、Open Pull Request をクリックしてリポジトリにプルリクを作成します。
マージする前に、生成されたテストが意味のある振る舞いを検証しているか、アサーションがモジュールの期待される動作と一致しているかを確認してください。
より具体的なプロンプトの活用
「テストカバレッジの拡張」というシンプルなプロンプトでも全体的な改善には十分効果がありますが、生成内容をより細かくコントロールしたい場合は、具体的なプロンプトを使うのがおすすめです。
特定のモジュールを対象にする場合:
Write unit tests for src/exporters/jsonExporter.js
生成してほしいテストの種類を指定する場合:
Add tests for src/exporters/jsonExporter.js covering:
- Error handling for null/undefined inputs
- Edge cases for empty arrays and objects
- All option combinations for exportToJson
特定の関数に絞る場合:
Add tests for the parseJsonSafely function including valid JSON,
malformed JSON, and non-string inputs
このように、プロンプトを具体的にするほど、Chunk が生成するテストもより的確で目的に沿ったものになります。
詳細設定
基本操作に慣れてきたら、プロジェクトのニーズに合わせて Chunk の動作を細かくカスタマイズしてみましょう。
環境のセットアップ
依存関係が複雑なプロジェクトや、外部サービス・特定のランタイム要件がある場合は、 .circleci/cci-agent-setup.yml ファイルを用意することで、Chunk にテスト環境の準備方法を明示できます。
この設定ファイルは、特に以下のようなケースで役立ちます。
- データベースのセットアップ:PostgreSQL や MySQL などのデータベースが必要な場合
- 外部サービスの利用:Redis や Elasticsearch などをコンテナで起動する必要がある場合
- カスタム依存関係:システムパッケージ、特定バージョンのランタイム、ビルドツールなどが必要な場合
- 環境変数:テスト実行に必要な設定値がある場合
このファイルは、通常の CircleCI 設定と同じ構文で記述します。以下は、PostgreSQL を使用する Node.js プロジェクトの例です。
version: 2.1
workflows:
main:
jobs:
- cci-agent-setup
jobs:
cci-agent-setup:
docker:
- image: cimg/node:20.11
- image: cimg/postgres:15.3
steps:
- checkout
- run:
name: Install Dependencies
command: npm ci
- run:
name: Setup Database
command: |
psql -c "CREATE DATABASE test_db;" -U postgres
このファイルには、環境準備のみを記述してください。実際のテスト実行コマンドは含めないでください。テストの実行方法は、メインの config.yml をもとに Chunk が判断します。
Chunk は必要に応じてこのファイルを自動作成しようとしますが、手動で生成することも可能です。
- Organization Settings -> Chunk Tasks に移動
- 対象タスクのメニュー(…)をクリック
- Chunk Environment を選択
- Create File in GitHub をクリック
詳しくは Chunk 環境のドキュメントをご参照ください。
カスタム指示
生成されるテストをチームのコーディング規約に合わせたい場合は、リポジトリのルートに claude.md または agents.md ファイルを作成します。 使用するテストフレームワークや記法、命名規則、カバーしてほしいエッジケースなどを記述しておけば、Chunk がそれらの設定を読み取り、コード生成時に反映します。
AI 開発エコシステムにおける Chunk
Chunk は、CircleCI が推進する AI 活用開発ツールへの取り組みの一環です。Cursor や Claude Code などの AI コーディングアシスタントがコードの記述を高速化する一方、Chunk は CI/CD レイヤーで稼働し、コードの検証、テスト、メンテナンスを自動的に行います。
AI コーディングアシスタントを利用しているチームに向けて、CircleCI は CircleCI MCP サーバーも提供しています。これは Model Context Protocol(MCP)を通じて AI アシスタントをパイプラインに直接接続する仕組みです。IDE 上の AI ツールが、エディターを離れることなくビルドログ、テスト結果、パイプラインのステータスにアクセスできるようになります。Chunk と MCP サーバーを組み合わせることで、コード生成から検証、継続的なメンテナンスまでをインテリジェントに自動化する、統合された AI 開発ワークフローを実現できます。
まとめ
包括的なテストカバレッジの維持は、必ずしも手作業で時間をかけて行う必要はありません。Chunk がコードベースを分析し、テストされていないパスを特定し、それらを検証するテストを生成することで、時間のかかるメンテナンス作業を自動化されたワークフローへと変換します。 AI によってコード変更のスピードが加速する今、テストスイートを常に充実させてくれる自律型エージェントの存在はますます重要になります。
ぜひご自身の環境で試してみてください。無料の CircleCI アカウントに登録し、Chunk を有効化することで、テストカバレッジの自動改善をすぐに始められます。