name: qa description: 既存プロジェクトのQA基盤を構築する。テスト方針の策定・フレームワーク導入・優先順位付けによる段階的なテスト実装・CI組み込みまでを一貫して進める。
qa(QA基盤構築フロー)
テストが少ない・ない既存プロジェクトに、QA基盤を一から作る。 「何をどの順で書くか」の戦略を立ててから実装に入る。
手順
ステップ 1: ブリーフィング
ASK USER:
現在のテスト状況と困っていることを教えてください。
例:
- テストがほぼない状態で、どこから始めればよいかわからない
- 一部はあるが、重要な箇所が抜けている
- テストはあるが壊れやすく保守できていない
WAIT_FOR: ユーザーの説明
IF 情報が不足:
ASK: 1件ずつ追加質問する
- 使用している言語・フレームワーク
- 既存のテストフレームワーク(あれば)
- CI/CDの有無
- 特に不安な箇所(認証・決済・データ処理など)
ステップ 2: 現状調査
READ: コードベースを調査し以下を把握する
--- テストの現状 ---
- 既存テストファイルの有無・場所
- テストフレームワークの設定(package.json / pyproject.toml 等)
- カバレッジ計測の設定有無
RUN: カバレッジ計測コマンドが設定されていれば実行する
--- リスク評価 ---
- 認証・認可・決済・データ整合性に関わるファイル
- 複雑度の高い関数(行数・分岐数)
- 変更頻度の高いファイル:
RUN: git log --name-only --pretty=format: | sort | uniq -c | sort -rn | head -20
--- テスタビリティ ---
- 依存注入・モックが困難な箇所(グローバル状態・密結合)
- 外部サービス依存(DB・API・メール等)
REPORT: 調査結果をユーザーに提示
- 現在のカバレッジ率(計測できた場合)
- リスクの高い未テスト箇所トップ10
- テスタビリティの懸念点
ステップ 3: QA戦略の策定・承認
PLAN:
## QA基盤構築計画
### テストフレームワーク
[既存スタックに合わせて選定。すでに導入済みの場合はそのまま活用]
- 単体・統合テスト: [例: Vitest / Jest / pytest]
- E2E: [例: Playwright](フロントエンドがある場合)
- カバレッジ: [例: v8 / istanbul / coverage.py]
### テスト方針
- カバレッジ目標: [現状 + 段階的な目標。最初から100%は目指さない]
- テストの粒度: [単体・統合・E2Eの比率]
- モック方針: [外部サービスのモック方法]
- 命名規則・ディレクトリ構成
### 優先実装リスト(リスクベース)
| 優先度 | 対象 | 理由 | テスト種別 |
|--------|------|------|-----------|
| 1 | ... | ... | ... |
| 2 | ... | ... | ... |
...
### CI組み込み(任意)
[GitHub Actions 等への組み込み案]
GATE: 戦略の承認を得る
→ 修正要望があれば更新して再提示する
ステップ 4: 準備
# デフォルトブランチを最新化してからブランチを切る
DEFAULT_BRANCH = git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'
RUN: git checkout {DEFAULT_BRANCH} && git pull
IF 失敗:
REPORT: pull に失敗した旨を伝え、ユーザーの判断を仰ぐ
STOP
ASK USER:
作業にあたって以下を確認します。
1. GitHub issue を作成しますか?(QA基盤構築の背景・方針を記録)
2. 完了後に PR を作成しますか?
WAIT_FOR: ユーザーの回答
CREATE_ISSUE = ユーザーが issue 作成を希望した場合
CREATE_PR = ユーザーが PR 作成を希望した場合
IF CREATE_ISSUE:
gh issue create \
--title "[qa] QA基盤構築" \
--body "## 背景\n[ブリーフィングで把握した課題]\n\n## 方針\n[ステップ3で策定した戦略]\n\n## 優先実装リスト\n[対象一覧]"
ISSUE_NUMBER = 作成した issue の番号
ELSE:
ISSUE_NUMBER = なし
RUN: git checkout -b qa/bootstrap
ステップ 4.5: 環境構築
IF テストフレームワークが未導入:
EXECUTE: フレームワークのインストール・設定ファイル作成
例: pnpm add -D vitest @vitest/coverage-v8
VERIFY: テストコマンドが実行できること
IF カバレッジ計測が未設定:
EXECUTE: カバレッジ設定を追加する
IF CI組み込みを希望:
EXECUTE: GitHub Actions 等のワークフローファイルを作成する
GATE: 環境構築の完了を確認する
ステップ 5: 段階的テスト実装
優先実装リストの順に、以下を繰り返す:
FOREACH target IN 優先実装リスト:
REPORT: 「[対象] のテストを実装します」と通知
# tester エージェントに実装を委譲する
Agent(tester):
対象: [ファイル・関数]
テスト種別: [単体 / 統合 / E2E]
方針: [ステップ3で策定したモック方針・命名規則]
重点: [境界値・異常系・ビジネスルール]
VERIFY: テストが通ること・カバレッジが上がっていること
GATE: 次の対象に進む承認を得る
→ カバレッジレポートを提示して現在地を確認する
ステップ 6: 完了・PR 作成
IF CREATE_PR == false:
REPORT: 完了レポートを表示して終了
RUN: git checkout {DEFAULT_BRANCH}
STOP
CREATE PR:
タイトル: qa: QA基盤構築
本文(以下をすべて記載すること):
## 背景・課題
[ブリーフィングで把握したテスト不足の状況と根本原因]
## QA戦略
- テストフレームワーク: [名前・バージョン]
- カバレッジ目標: [設定値]
- モック方針: [内容]
## 構築したもの
- テストフレームワーク導入: [有無・内容]
- カバレッジ計測: [設定内容]
- CI組み込み: [有無・内容]
## 実装したテスト
| 対象 | テスト種別 | テスト数 |
|------|-----------|---------|
| ... | ... | ... |
## カバレッジの変化
- 開始時: X%
- 完了時: Y%
## 今後の推奨事項
- [ ] 次に実装すべきテスト(優先実装リストの残り)
- [ ] 新規コードへのテスト必須化の方針
- [ ] カバレッジ目標の次のステップ
## 確認方法
[テストの実行コマンドとカバレッジレポートの確認手順]
IF ISSUE_NUMBER != なし:
Closes #ISSUE_NUMBER
PR_NUMBER = 作成した PR の番号
RUN /review {PR_NUMBER}
RUN: git checkout {DEFAULT_BRANCH}