テスト仕様書

バージョン: 1.0.0

最終更新:

ステータス: 計画中

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. テストカバレッジ

0%
単体テスト
0%
統合テスト
0%
E2Eテスト
0%
全体

4. テストケース

4.1 認証機能テスト

TC001: ログイン機能テスト

目的: ユーザーが正常にログインできることを確認

前提条件: 有効なユーザーアカウントが存在する

手順:

  1. ログインページにアクセス
  2. 有効なメールアドレスとパスワードを入力
  3. ログインボタンをクリック

期待結果: ダッシュボードページにリダイレクトされる

ステータス: 計画中

TC002: ログイン失敗テスト

目的: 無効な認証情報でのログイン失敗を確認

前提条件: ログインページが表示されている

手順:

  1. 無効なメールアドレスまたはパスワードを入力
  2. ログインボタンをクリック

期待結果: エラーメッセージが表示される

ステータス: 計画中

4.2 財務データ処理フロー(2段階フロー)テスト

TC003: 企業検索機能テスト

目的: 企業名検索が正常に動作することを確認

前提条件: マスターデータ(6,217社)がロードされている

手順:

  1. メインページにアクセス
  2. 検索ボックスに「トヨタ」と入力
  3. 検索ボタンをクリック

期待結果: トヨタ関連企業が一覧表示される

ステータス: 完了

TC004: 書類検索(段階1)テスト

目的: ストリーミング書類検索API が正常に動作することを確認

前提条件: 企業選択・年度選択が完了

手順:

  1. 「三菱商事」を選択
  2. 「2022年度」を選択
  3. 書類検索が開始される
  4. リアルタイム進捗が表示される

期待結果: 有価証券報告書一覧が表示される

ステータス: 完了

TC005: 書類選択・財務データ抽出(段階2)テスト

目的: 選択した書類からBS/PLが正常に抽出されることを確認

前提条件: 書類検索で有価証券報告書が発見済み

手順:

  1. 書類一覧から最新の有価証券報告書を選択
  2. 「選択書類からBS/PL作成」ボタンをクリック
  3. XBRL解析処理を待機

期待結果: BS/PLテーブルと財務比率グラフが表示される

ステータス: 完了

TC006: ハイブリッド検索処理テスト

目的: Stage1(月末)→Stage2(日次)検索が適切に動作することを確認

前提条件: 書類が見つかりにくい企業・年度を選択

手順:

  1. 書類が少ない企業・年度を選択
  2. Stage1(36回月末検索)の実行を確認
  3. 見つからない場合、Stage2(91回日次検索)への移行を確認

期待結果: 効率的な2段階検索が実行される

ステータス: 完了

TC007: Edge Runtime タイムアウト対策テスト

目的: Edge Runtime + Streaming でタイムアウトが発生しないことを確認

前提条件: 大量のAPI呼び出しが必要な検索条件

手順:

  1. 検索に時間がかかる企業・年度を選択
  2. 長時間の検索処理を実行
  3. 進捗表示とキャンセル機能を確認

期待結果: タイムアウトエラーが発生せず完了する

ステータス: 完了

TC008: 財務比率自動計算テスト

目的: XBRL解析結果から財務比率が正確に計算されることを確認

前提条件: 財務データ抽出が完了

手順:

  1. 既知の財務データを持つ企業で検証
  2. ROE、ROA、売上高純利益率、総資産回転率を確認
  3. 計算式の正確性を検証

期待結果: 正確な財務比率が自動計算される

ステータス: 完了

TC009: エラーハンドリングテスト

目的: 各段階でのエラーが適切に処理されることを確認

前提条件: 意図的にエラーを発生させる

手順:

  1. 存在しない企業名で検索
  2. 書類が存在しない年度を選択
  3. ネットワークエラーをシミュレート

期待結果: 適切なエラーメッセージが表示される

ステータス: 完了

4.3 APIエンドポイントテスト

TC010: 書類検索ストリーミングAPIテスト

目的: /api/search-documents-streaming の動作確認

前提条件: 有効なAPIキーとリクエストパラメータ

手順:

  1. POST /api/search-documents-streaming
  2. パラメータ: {edinetCode: "E02529", year: 2022}
  3. Server-Sent Eventsストリームを受信

期待結果: ストリーミングレスポンスで書類一覧を取得

ステータス: 完了

TC011: 財務データ抽出APIテスト

目的: /api/extract-financial-data の動作確認

前提条件: 有効なdocIdとdocInfo

手順:

  1. POST /api/extract-financial-data
  2. パラメータ: {docId: "valid_doc_id", docInfo: {...}}
  3. レスポンスの構造化財務データを確認

期待結果: 構造化されたBS/PLデータを取得

ステータス: 完了

5. テスト環境

5.1 テスト実行環境

環境 用途 URL データ
ローカル 開発者テスト http://localhost:3000 モックデータ
ステージング 統合・E2Eテスト 未設定 テストデータ
本番 本番監視 未設定 本番データ

6. テストデータ管理

6.1 テストデータ格納場所

test/data/ ├── users.json # ユーザーテストデータ ├── auth.json # 認証テストデータ ├── mock-responses/ # APIモックレスポンス └── fixtures/ # テスト用ファイル

6.2 データ作成・クリーンアップ

  • テスト実行前: 必要なテストデータを自動生成
  • テスト実行後: テストデータを自動削除
  • データベース: 各テスト実行時にリセット

7. 自動テスト実行

7.1 CI/CDパイプライン

# .github/workflows/test.yml name: Test on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Setup Node.js uses: actions/setup-node@v3 with: node-version: '18' - name: Install dependencies run: npm install - name: Run unit tests run: npm run test:unit - name: Run integration tests run: npm run test:integration - name: Run E2E tests run: npm run test:e2e

8. テスト報告

8.1 レポート生成

  • テスト結果の自動集計
  • カバレッジレポートの生成
  • テスト失敗時の詳細ログ出力
  • PR毎のテスト結果コメント

8.2 品質基準

  • 全テストケースの成功
  • コードカバレッジ80%以上
  • E2Eテストの主要シナリオ100%成功
  • パフォーマンステストの基準値クリア