- Google AntigravityのGeminiモデルが既存コードを解析し、テストコードを自動生成できる
- ユニットテスト・統合テスト・E2Eテストの3層すべてに対応し、カバレッジを大幅に向上
- GitHub ActionsとのCI連携でテスト生成→実行→レポートまで完全自動化が可能
「テストコードを書く時間がない」「カバレッジが上がらない」——SES現場でこんな悩みを抱えていませんか?
Google Antigravityには、Geminiモデルがソースコードを解析してテストコードを自動生成する強力な機能が搭載されています。ユニットテストからE2Eテストまで、AIが境界値分析やエッジケースの洗い出しを行い、網羅的なテストスイートを瞬時に作成します。
この記事では、Google Antigravityを使ったテスト自動化の基本から実践テクニック、CI/CDとの統合まで、SESエンジニアがすぐに活用できるノウハウをステップバイステップで解説します。

Google Antigravityのテスト自動生成機能とは
Google AntigravityのGeminiモデルは、対象のソースコードを深く理解したうえで、適切なテストケースを自動的に設計・生成します。単にメソッドの入出力を確認するだけでなく、以下のような高度な分析を行います。
- 境界値分析: 入力値の境界条件を自動で特定
- エッジケース検出: null・空文字・巨大データなどの例外パターンを網羅
- 依存関係の把握: モック・スタブの自動生成と適切な注入
- テスト命名: テスト対象の振る舞いを明確に表す日本語/英語のテスト名
対応テストフレームワーク
Google Antigravityは主要なテストフレームワークをすべてサポートしています。
| 言語 | フレームワーク | 特徴 |
|---|---|---|
| JavaScript/TypeScript | Jest, Vitest, Mocha | フロントエンド・バックエンド両対応 |
| Python | pytest, unittest | データ分析・機械学習プロジェクトにも対応 |
| Java | JUnit 5, TestNG | エンタープライズ案件で標準的 |
| Go | testing パッケージ | テーブル駆動テストを自動生成 |
| Rust | cargo test | トレイト境界を考慮した型安全なテスト |
ユニットテストの自動生成
基本コマンド
Google Antigravityでユニットテストを生成する基本的な流れを見てみましょう。
# 単一ファイルのテスト生成
antigravity test generate src/utils/calculator.ts
# ディレクトリ全体のテスト生成
antigravity test generate src/utils/ --recursive
# 特定のフレームワークを指定
antigravity test generate src/services/auth.ts --framework jest
実践例:認証サービスのテスト自動生成
SES現場でよくある認証モジュールを例に、Antigravityがどのようなテストを生成するか見てみましょう。
// src/services/auth.service.ts
export class AuthService {
async validateToken(token: string): Promise<boolean> {
if (!token || token.length < 10) return false;
const decoded = await this.decode(token);
return decoded.exp > Date.now() / 1000;
}
}
Antigravityが生成するテストコード:
// src/services/__tests__/auth.service.test.ts
describe('AuthService', () => {
describe('validateToken', () => {
it('空文字列の場合はfalseを返す', async () => {
const service = new AuthService();
expect(await service.validateToken('')).toBe(false);
});
it('10文字未満のトークンはfalseを返す', async () => {
const service = new AuthService();
expect(await service.validateToken('short')).toBe(false);
});
it('有効期限切れのトークンはfalseを返す', async () => {
const service = new AuthService();
jest.spyOn(service, 'decode').mockResolvedValue({
exp: Math.floor(Date.now() / 1000) - 3600
});
expect(await service.validateToken('valid-length-token')).toBe(false);
});
it('有効なトークンはtrueを返す', async () => {
const service = new AuthService();
jest.spyOn(service, 'decode').mockResolvedValue({
exp: Math.floor(Date.now() / 1000) + 3600
});
expect(await service.validateToken('valid-length-token')).toBe(true);
});
});
});
ポイントは、Geminiが境界値(10文字未満)やエッジケース(空文字列・期限切れ)を自動で洗い出している点です。手動でテストを書く場合に見落としがちなケースもカバーされます。
カバレッジターゲットの指定
# カバレッジ目標を指定して不足分を自動生成
antigravity test generate src/ --coverage-target 90
# 既存テストを解析して不足しているケースのみ追加
antigravity test augment src/services/ --fill-gaps
統合テストの自動生成
API統合テスト
Google Antigravityは、APIエンドポイントのコードからリクエスト・レスポンスのパターンを解析し、統合テストを自動生成します。
# REST APIの統合テスト生成
antigravity test generate src/controllers/users.controller.ts \
--type integration \
--include-db-setup
生成されるテストには、以下の要素が自動的に含まれます。
- テストデータベースのセットアップ/ティアダウン
- リクエストのバリデーションテスト(不正な入力、欠落フィールド)
- レスポンスのスキーマ検証
- 認証・認可のチェック(未認証、権限不足のケース)
データベース連携テスト
# マイグレーションとシードデータを考慮したテスト生成
antigravity test generate src/repositories/ \
--type integration \
--db-config ./test/db-config.yml
E2Eテストの自動生成
Playwrightとの連携
Google Antigravityは、画面遷移やフォーム操作を含むE2Eテストも自動生成できます。
# ページコンポーネントからE2Eテストを生成
antigravity test generate src/pages/login.tsx \
--type e2e \
--framework playwright
# ユーザーフローを自然言語で指定
antigravity test generate \
--type e2e \
--flow "ユーザーがログインしてダッシュボードを確認し、プロフィールを編集する"
生成例:
// e2e/login-flow.spec.ts
import { test, expect } from '@playwright/test';
test('ログインからプロフィール編集までの一連のフロー', async ({ page }) => {
// ログインページにアクセス
await page.goto('/login');
await expect(page.getByRole('heading', { name: 'ログイン' })).toBeVisible();
// 認証情報を入力
await page.getByLabel('メールアドレス').fill('[email protected]');
await page.getByLabel('パスワード').fill('SecurePass123!');
await page.getByRole('button', { name: 'ログイン' }).click();
// ダッシュボードに遷移することを確認
await expect(page).toHaveURL('/dashboard');
await expect(page.getByText('ようこそ')).toBeVisible();
// プロフィール編集
await page.getByRole('link', { name: 'プロフィール' }).click();
await page.getByLabel('表示名').fill('テスト太郎');
await page.getByRole('button', { name: '保存' }).click();
// 保存成功の確認
await expect(page.getByText('プロフィールを更新しました')).toBeVisible();
});
モバイル対応テスト
# レスポンシブデザインのテストも自動生成
antigravity test generate src/pages/ \
--type e2e \
--devices "iPhone 14, iPad Pro, Pixel 7"
テスト品質を高めるプロンプトテクニック
コンテキスト共有のベストプラクティス
Google Antigravityに高品質なテストを生成させるには、適切なコンテキストを与えることが重要です。
# ビジネスロジックの背景を伝える
antigravity test generate src/services/billing.ts \
--context "日本の消費税(10%)と軽減税率(8%)を考慮した請求計算。
端数は切り捨て。月末締め翌月払い。"
テストパターンの指定
# 特定のテスト手法を指定
antigravity test generate src/utils/validator.ts \
--patterns "boundary-value,equivalence-partitioning,error-guessing"
カスタムテストテンプレート
プロジェクト固有のテスト規約がある場合、テンプレートを設定できます。
# .antigravity/test-config.yml
templates:
unit:
setup: "beforeEach(() => { jest.clearAllMocks(); })"
naming: "japanese" # テスト名を日本語で生成
style: "arrange-act-assert"
integration:
database: "testcontainers"
cleanup: "truncate"
詳しいプロンプトテクニックについては、Google Antigravity プロンプトエンジニアリング完全ガイドもあわせてご覧ください。
CI/CDパイプラインとの統合
GitHub Actionsでのテスト自動生成・実行
Google AntigravityのテストをCI/CDに組み込むことで、PRごとに自動でテストを生成・実行できます。
# .github/workflows/auto-test.yml
name: Auto Test Generation
on:
pull_request:
types: [opened, synchronize]
jobs:
generate-and-run-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: google/antigravity-action@v1
with:
command: test generate --changed-only --coverage-target 80
- run: npm test -- --coverage
- uses: actions/upload-artifact@v4
with:
name: coverage-report
path: coverage/
CI/CDパイプラインの詳細な構築方法については、Google AntigravityとGitHub Actionsで実現する最強のCI/CDパイプラインで詳しく解説しています。
カバレッジゲートの設定
# PRマージ前にカバレッジ閾値をチェック
antigravity test coverage-gate \
--min-line 80 \
--min-branch 75 \
--fail-on-decrease
SES現場での実践活用パターン
パターン1:既存プロジェクトへの後付けテスト
テストが少ないレガシープロジェクトに参画した場合、Antigravityで効率的にテストを追加できます。
# テストがないファイルを検出して一括生成
antigravity test scan src/ --find-untested
antigravity test generate src/ --untested-only --priority critical
レガシーコードの移行全般については、Google Antigravity レガシーコード移行ガイドも参考になります。
パターン2:新規機能開発でのTDDサポート
# 仕様からテストを先に生成(TDDアプローチ)
antigravity test generate \
--from-spec docs/feature-spec.md \
--type unit \
--output src/__tests__/
パターン3:リグレッションテストの自動更新
コードを変更した際に、影響を受けるテストを自動的に検出・更新します。
# 変更されたファイルに対応するテストを更新
antigravity test update --changed-since main
パターン4:パフォーマンステスト生成
# レスポンスタイムやメモリ使用量のベンチマークテスト
antigravity test generate src/services/ \
--type performance \
--thresholds "response-time:200ms,memory:512MB"
パフォーマンスチューニングについてさらに知りたい方は、Google Antigravity パフォーマンスチューニング完全ガイドをご覧ください。
テスト自動化の効果測定
Google Antigravityのテスト自動化を導入した場合、一般的に以下のような改善が見込めます。
| 指標 | 導入前 | 導入後 | 改善率 |
|---|---|---|---|
| テスト作成時間(1機能あたり) | 2〜4時間 | 15〜30分 | 約75%削減 |
| コードカバレッジ | 30〜50% | 80〜90% | 大幅向上 |
| バグ検出率(リリース前) | 60% | 90%以上 | 約50%向上 |
| リグレッション発生率 | 月3〜5件 | 月0〜1件 | 約80%削減 |
よくあるトラブルと対処法
テスト生成が失敗する場合
# デバッグモードで詳細ログを確認
antigravity test generate src/complex-module.ts --debug --verbose
原因として多いのは、循環参照や動的インポートです。--ignore-circular オプションで回避できるケースがあります。
その他のトラブル対処については、Google Antigravity トラブルシューティング完全ガイドにまとめています。
生成されたテストが不安定(Flaky)な場合
# Flakyテストを検出して安定化
antigravity test stabilize src/__tests__/ \
--retry-count 3 \
--fix-timing-issues
タイミング依存のテストは、Antigravityが自動的に waitFor やリトライロジックを挿入して安定化を図ります。
まとめ
Google Antigravityのテスト自動化機能を使えば、テストコードの作成時間を大幅に短縮しながら、コードの品質と信頼性を向上させることができます。
- ✅ ユニットテスト: 境界値・エッジケースを自動検出して網羅的にカバー
- ✅ 統合テスト: API・DB連携のテストをセットアップ込みで自動生成
- ✅ E2Eテスト: 画面操作フローをPlaywrightで自動化
- ✅ CI/CD連携: PRごとにテスト生成→実行→カバレッジチェックを完全自動化
SES現場では「テストを書く時間がない」という声をよく聞きますが、Antigravityを活用すれば、テスト作成の工数を最大75%削減しつつ、プロジェクトの品質基準をクリアできます。
まずは1つのモジュールから antigravity test generate を試してみてください。AIが生成したテストの精度に驚くはずです。
シリーズの他の記事もあわせてご覧ください:
出典・参考: