𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
Google Antigravity テスト自動化完全ガイド|AIでユニットテスト・E2Eテストを自動生成する方法

Google Antigravity テスト自動化完全ガイド|AIでユニットテスト・E2Eテストを自動生成する方法

Google Antigravityテスト自動化ユニットテストE2EテストSESエンジニア
目次
⚡ 3秒でわかる!この記事のポイント
  • Google AntigravityのGeminiモデルが既存コードを解析し、テストコードを自動生成できる
  • ユニットテスト・統合テスト・E2Eテストの3層すべてに対応し、カバレッジを大幅に向上
  • GitHub ActionsとのCI連携でテスト生成→実行→レポートまで完全自動化が可能

「テストコードを書く時間がない」「カバレッジが上がらない」——SES現場でこんな悩みを抱えていませんか?

Google Antigravityには、Geminiモデルがソースコードを解析してテストコードを自動生成する強力な機能が搭載されています。ユニットテストからE2Eテストまで、AIが境界値分析やエッジケースの洗い出しを行い、網羅的なテストスイートを瞬時に作成します。

この記事では、Google Antigravityを使ったテスト自動化の基本から実践テクニック、CI/CDとの統合まで、SESエンジニアがすぐに活用できるノウハウをステップバイステップで解説します。

Google Antigravityテスト自動化の全体像と活用シーンのインフォグラフィック

Google Antigravityのテスト自動生成機能とは

Google AntigravityのGeminiモデルは、対象のソースコードを深く理解したうえで、適切なテストケースを自動的に設計・生成します。単にメソッドの入出力を確認するだけでなく、以下のような高度な分析を行います。

  • 境界値分析: 入力値の境界条件を自動で特定
  • エッジケース検出: null・空文字・巨大データなどの例外パターンを網羅
  • 依存関係の把握: モック・スタブの自動生成と適切な注入
  • テスト命名: テスト対象の振る舞いを明確に表す日本語/英語のテスト名

対応テストフレームワーク

Google Antigravityは主要なテストフレームワークをすべてサポートしています。

言語フレームワーク特徴
JavaScript/TypeScriptJest, Vitest, Mochaフロントエンド・バックエンド両対応
Pythonpytest, unittestデータ分析・機械学習プロジェクトにも対応
JavaJUnit 5, TestNGエンタープライズ案件で標準的
Gotesting パッケージテーブル駆動テストを自動生成
Rustcargo 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が生成したテストの精度に驚くはずです。

シリーズの他の記事もあわせてご覧ください:


出典・参考:

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修