1. テスト戦略
本プロジェクトでは、品質を保証するために段階的なテスト戦略を採用します。各レベルでのテストを実施し、継続的インテグレーション環境での自動テストを基本とします。
2. テストレベル
2.1 単体テスト (Unit Tests)
項目 | 内容 | ツール | カバレッジ目標 |
---|---|---|---|
対象 | 個別の関数・コンポーネント | Jest, React Testing Library | 80%以上 |
実行タイミング | コード変更時 | 自動実行 | - |
2.2 統合テスト (Integration Tests)
項目 | 内容 | ツール | カバレッジ目標 |
---|---|---|---|
対象 | コンポーネント間の連携 | Jest, Supertest | 70%以上 |
実行タイミング | プルリクエスト時 | GitHub Actions | - |
2.3 E2Eテスト (End-to-End Tests)
項目 | 内容 | ツール | カバレッジ目標 |
---|---|---|---|
対象 | ユーザーシナリオ全体 | Cypress, Playwright | 主要フロー100% |
実行タイミング | デプロイ前 | ステージング環境 | - |
3. テストカバレッジ
4. テストケース
4.1 認証機能テスト
TC001: ログイン機能テスト
目的: ユーザーが正常にログインできることを確認
前提条件: 有効なユーザーアカウントが存在する
手順:
- ログインページにアクセス
- 有効なメールアドレスとパスワードを入力
- ログインボタンをクリック
期待結果: ダッシュボードページにリダイレクトされる
ステータス: 計画中
TC002: ログイン失敗テスト
目的: 無効な認証情報でのログイン失敗を確認
前提条件: ログインページが表示されている
手順:
- 無効なメールアドレスまたはパスワードを入力
- ログインボタンをクリック
期待結果: エラーメッセージが表示される
ステータス: 計画中
4.2 財務データ処理フロー(2段階フロー)テスト
TC003: 企業検索機能テスト
目的: 企業名検索が正常に動作することを確認
前提条件: マスターデータ(6,217社)がロードされている
手順:
- メインページにアクセス
- 検索ボックスに「トヨタ」と入力
- 検索ボタンをクリック
期待結果: トヨタ関連企業が一覧表示される
ステータス: 完了
TC004: 書類検索(段階1)テスト
目的: ストリーミング書類検索API が正常に動作することを確認
前提条件: 企業選択・年度選択が完了
手順:
- 「三菱商事」を選択
- 「2022年度」を選択
- 書類検索が開始される
- リアルタイム進捗が表示される
期待結果: 有価証券報告書一覧が表示される
ステータス: 完了
TC005: 書類選択・財務データ抽出(段階2)テスト
目的: 選択した書類からBS/PLが正常に抽出されることを確認
前提条件: 書類検索で有価証券報告書が発見済み
手順:
- 書類一覧から最新の有価証券報告書を選択
- 「選択書類からBS/PL作成」ボタンをクリック
- XBRL解析処理を待機
期待結果: BS/PLテーブルと財務比率グラフが表示される
ステータス: 完了
TC006: ハイブリッド検索処理テスト
目的: Stage1(月末)→Stage2(日次)検索が適切に動作することを確認
前提条件: 書類が見つかりにくい企業・年度を選択
手順:
- 書類が少ない企業・年度を選択
- Stage1(36回月末検索)の実行を確認
- 見つからない場合、Stage2(91回日次検索)への移行を確認
期待結果: 効率的な2段階検索が実行される
ステータス: 完了
TC007: Edge Runtime タイムアウト対策テスト
目的: Edge Runtime + Streaming でタイムアウトが発生しないことを確認
前提条件: 大量のAPI呼び出しが必要な検索条件
手順:
- 検索に時間がかかる企業・年度を選択
- 長時間の検索処理を実行
- 進捗表示とキャンセル機能を確認
期待結果: タイムアウトエラーが発生せず完了する
ステータス: 完了
TC008: 財務比率自動計算テスト
目的: XBRL解析結果から財務比率が正確に計算されることを確認
前提条件: 財務データ抽出が完了
手順:
- 既知の財務データを持つ企業で検証
- ROE、ROA、売上高純利益率、総資産回転率を確認
- 計算式の正確性を検証
期待結果: 正確な財務比率が自動計算される
ステータス: 完了
TC009: エラーハンドリングテスト
目的: 各段階でのエラーが適切に処理されることを確認
前提条件: 意図的にエラーを発生させる
手順:
- 存在しない企業名で検索
- 書類が存在しない年度を選択
- ネットワークエラーをシミュレート
期待結果: 適切なエラーメッセージが表示される
ステータス: 完了
4.3 APIエンドポイントテスト
TC010: 書類検索ストリーミングAPIテスト
目的: /api/search-documents-streaming の動作確認
前提条件: 有効なAPIキーとリクエストパラメータ
手順:
- POST /api/search-documents-streaming
- パラメータ: {edinetCode: "E02529", year: 2022}
- Server-Sent Eventsストリームを受信
期待結果: ストリーミングレスポンスで書類一覧を取得
ステータス: 完了
TC011: 財務データ抽出APIテスト
目的: /api/extract-financial-data の動作確認
前提条件: 有効なdocIdとdocInfo
手順:
- POST /api/extract-financial-data
- パラメータ: {docId: "valid_doc_id", docInfo: {...}}
- レスポンスの構造化財務データを確認
期待結果: 構造化されたBS/PLデータを取得
ステータス: 完了
5. テスト環境
5.1 テスト実行環境
環境 | 用途 | URL | データ |
---|---|---|---|
ローカル | 開発者テスト | http://localhost:3000 | モックデータ |
ステージング | 統合・E2Eテスト | 未設定 | テストデータ |
本番 | 本番監視 | 未設定 | 本番データ |
6. テストデータ管理
6.1 テストデータ格納場所
6.2 データ作成・クリーンアップ
- テスト実行前: 必要なテストデータを自動生成
- テスト実行後: テストデータを自動削除
- データベース: 各テスト実行時にリセット
7. 自動テスト実行
7.1 CI/CDパイプライン
8. テスト報告
8.1 レポート生成
- テスト結果の自動集計
- カバレッジレポートの生成
- テスト失敗時の詳細ログ出力
- PR毎のテスト結果コメント
8.2 品質基準
- 全テストケースの成功
- コードカバレッジ80%以上
- E2Eテストの主要シナリオ100%成功
- パフォーマンステストの基準値クリア