# テストケース一覧

**文書番号:** TEST-002  
**バージョン:** 1.0  
**作成日:** 2025-11-02  
**最終更新:** 2025-11-03  
**総テスト数:** 3,370

---

## 1. テストケース概要

Tree-sitter Analyzerプロジェクトは、**3,370件のテストケース**を保有し、100%の合格率を維持している。

### 1.1 テストケース分類

| カテゴリ | テスト数（概算） | 合格率 | カバレッジ |
|---------|-----------------|--------|-----------|
| **単体テスト** | 349（マーカー設定済） | 100% | 85-90% |
| **統合テスト** | 19（マーカー設定済） | 100% | 80-85% |
| **E2Eテスト** | 未設定（開発中） | - | - |
| **非同期テスト** | 779（asyncioマーカー） | 100% | 高 |
| **パフォーマンステスト** | ~50 | 100% | N/A |
| **セキュリティテスト** | 20 | 100% | 95% |
| **その他（マーカー未設定）** | 3,002 | 100% | 80-85% |

**注:** テストは複数のマーカーを持つ場合があるため、カテゴリ別の合計は総数と一致しない場合があります。マーカー未設定のテストが3,002件あり、今後の整備が必要です。

---

## 2. 機能別テストケース

### 2.1 コア解析エンジン

#### ファイル: `tests/test_core_engine_extended.py`
**テスト数:** 14

| テストID | テスト名 | 目的 | 優先度 |
|---------|---------|------|--------|
| CE-001 | 基本構文解析 | tree-sitter統合検証 | 必須 |
| CE-002 | エラーハンドリング | 不正ファイル処理 | 必須 |
| CE-003 | 大規模ファイル解析 | パフォーマンス検証 | 高 |
| CE-004 | Unicode対応 | 多言語文字処理 | 高 |
| CE-005 | 並行処理 | 複数ファイル同時解析 | 中 |

**注:** コアエンジン関連のテストは他にも `test_core/` ディレクトリと `test_engine.py` に分散しています。

#### ファイル: `tests/test_core_query_service.py`
**テスト数:** 13

主要テスト:
- QueryService基本機能
- キャッシュ統合
- 非同期クエリ
- エラー復旧

**注:** クエリ関連テストは `test_query_*.py` ファイル群にも多数存在します。

### 2.2 言語プラグイン

#### Javaプラグイン (`tests/test_java_structure_analyzer.py`)
**テスト数:** 8

| カテゴリ | テスト内容 | 備考 |
|---------|-----------|------|
| **基本要素** | クラス、メソッド、フィールド抽出 | 基本構造の検証 |
| **Spring対応** | @Autowired, @Service等 | アノテーション解析 |
| **複雑度計算** | Cyclomatic Complexity | メトリクス計算 |
| **エッジケース** | ネスト、匿名クラス等 | 境界値テスト |

**注:** Javaプラグインの詳細なテストは他の統合テストファイルにも含まれています。

#### JavaScriptプラグイン (`tests/test_javascript_plugin_comprehensive.py`)
**テスト数:** 45

主要機能:
- ES6+構文（アロー関数、クラス、async/await）
- React JSX対応
- フレームワーク検出
- モジュールシステム（import/export）
- 複雑度計算
- 要素抽出の網羅的テスト

#### TypeScriptプラグイン (`tests/test_typescript_*.py`)
**テスト数:** 多数（複数ファイルに分散）

主要機能:
- 型システム（インターフェース、型エイリアス）
- デコレータ
- TSX/JSX対応
- 名前空間
- 高度な型推論

#### Pythonプラグイン (`tests/languages/test_python_*.py`)
**テスト数:** 多数（languagesディレクトリ配下）

主要機能:
- 型アノテーション
- デコレータ
- async/await
- データクラス
- 複雑度計算

#### HTML/CSSプラグイン
**テスト数:** 多数

- HTML: DOM構造、要素分類、属性解析
- CSS: セレクタ、プロパティ分類、詳細度

**注:** 言語プラグインのテストは`tests/languages/`ディレクトリと`tests/test_*_plugin*.py`ファイルに分散しています。

### 2.3 MCP統合

#### ファイル: `tests/test_mcp_async_integration.py`
**テスト数:** 19

**MCPツール（公開版 - 8種類）:**

実装場所: `tree_sitter_analyzer/mcp/server.py` (PyPI配布中)  
エントリーポイント: `tree-sitter-analyzer-mcp = tree_sitter_analyzer.mcp.server:main_sync`

1. **check_code_scale** - コード規模確認、トークン最適化
2. **analyze_code_structure** - 構造解析、SMART要約
3. **extract_code_section** - セクション抽出、行範囲指定
4. **set_project_path** - プロジェクトルート設定
5. **query_code** - コードクエリ実行
6. **list_files** - ファイル一覧、フィルタリング
7. **search_content** - コンテンツ検索、トークン制限対応
8. **find_and_grep** - 複合検索、2段階フィルタリング

**MCPツール（新設計版 - 8種類）:**

実装場所: `tree_sitter_analyzer/interfaces/mcp_server.py` (開発中)

1. **analyze_file** - ファイル解析
2. **analyze_code** - コード解析
3. **extract_elements** - 要素抽出
4. **execute_query** - クエリ実行
5. **validate_file** - ファイル検証
6. **get_supported_languages** - サポート言語取得
7. **get_available_queries** - 利用可能クエリ取得
8. **get_framework_info** - フレームワーク情報取得

**テスト内容:**
- 基本的なMCPツール呼び出し
- 非同期処理の統合
- エラーハンドリング
- キャッシュ統合
- レスポンス形式の検証

**注意:** 
- **現在PyPIで配布中**: `tree_sitter_analyzer.mcp.server` (公開版8ツール)
- **開発中**: `tree_sitter_analyzer.interfaces.mcp_server` (新設計版8ツール)

#### MCP互換性テスト (`compatibility_test/`)
**テスト数:** 多数

- Claude Desktop統合
- Cursor統合
- MCP直接実行
- エラーハンドリング
- v1.6.1.1互換性テスト

**参考:** `compatibility_test/`ディレクトリに詳細なテストケースとレポートがあります。

### 2.4 CLI機能

#### ファイル: `tests/test_cli_comprehensive.py`
**テスト数:** 49

**主要コマンドのテスト:**
- 基本解析コマンド（tree-sitter-analyzer）
- 引数検証とパース
- 出力形式（JSON/YAML/Text）
- ファイル出力機能
- エラーハンドリング
- --help、--version オプション

**その他のCLIテスト:**
- `test_cli_argument_validation.py` - 引数検証
- `test_cli_async_integration.py` - 非同期統合
- `test_cli_fd_rg_commands.py` - fd/ripgrep統合
- `test_cli_query_filter_integration.py` - クエリフィルタ
- `test_cli_regression.py` - 回帰テスト

### 2.5 検索機能

#### ファイル検索 (`tests/test_mcp_fd_rg_tools.py`)
**テスト数:** 144

- パターンマッチング
- プロジェクト境界保護
- .gitignore尊重
- シンボリックリンク処理

#### コンテンツ検索 (`tests/test_mcp_rg_phase*.py`)
**テスト数:** 95

全7フェーズのripgrep統合テスト:
- Phase 1: 基本検索機能
- Phase 2: フィルタ・パフォーマンス
- Phase 3: 高度なエッジケース
- Phase 4: 正規表現・パフォーマンス
- Phase 5: 統合テスト
- Phase 6: ファイルシステム・エンコーディング
- Phase 7: 統合エッジケース

機能:
- 正規表現検索
- ファイルタイプフィルタ
- コンテキスト表示
- グループ化

### 2.6 パフォーマンス最適化

#### キャッシュ (`tests/test_cache_logic_only.py`)
**テスト数:** 10

- ファイルキャッシュ
- タイムスタンプ検証
- LRU戦略
- 無効化処理

**注:** キャッシュ関連テストは他にも85件以上存在し、様々なテストファイルに分散しています。

#### 非同期処理 (`tests/test_async_*.py`)
**テスト数:** 779（非同期関連全体）

- 並行ファイル処理
- 非ブロッキングI/O
- エラー伝播

**注:** 非同期テストは複数のテストファイルに分散しています（test_async_performance.py、test_async_query_service.py、test_cli_async_integration.py等）。

### 2.7 セキュリティ

#### ファイル: `tests/security/test_mcp_security.py`
**テスト数:** 20

| テスト内容 | 説明 | 優先度 |
|-----------|------|--------|
| **パストラバーサル防止** | ディレクトリトラバーサル攻撃の検出・防止 | 必須 |
| **シンボリックリンク検証** | シンボリックリンクの安全な処理 | 必須 |
| **プロジェクト境界チェック** | ProjectBoundaryManagerの検証 | 必須 |
| **入力検証** | SecurityValidatorの動作確認 | 高 |
| **エラーハンドリング** | セキュリティエラーの適切な処理 | 中 |

**その他のセキュリティテスト:**
- `test_security/test_integration.py` - セキュリティ統合テスト
- `test_security/test_mcp_integration.py` - MCP統合セキュリティテスト
- ReDoS攻撃対策（RegexSafetyChecker）
- ファイルアクセス権限チェック

---

## 3. テストシナリオ

### 3.1 ユーザーワークフロー

#### シナリオ1: AIユーザー（MCP経由 - 公開版）
```
1. Claude DesktopからMCPサーバー起動（tree-sitter-analyzer-mcp）
2. check_code_scale でプロジェクト規模確認
3. analyze_code_structure で主要クラス抽出
4. extract_code_section で特定メソッド取得
5. search_content で関連コード検索
```
**関連テスト:** `test_mcp_async_integration.py::test_mcp_workflow`
**使用サーバー:** `tree_sitter_analyzer.mcp.server` (PyPI配布中)

#### シナリオ2: CLI開発者
```
1. tree-sitter-analyzer examples/BigService.java --output-format json
2. tree-sitter-analyzer examples/sample.py --query-key function
3. tree-sitter-analyzer examples/ --output-file analysis.json
```
**関連テスト:** `test_cli_comprehensive.py::test_cli_workflow`

#### シナリオ3: Python API直接呼出し
```python
# 新API (interfaces/mcp_server.py使用 - 開発中)
from tree_sitter_analyzer import api

result = api.analyze_file("src/main.py")
print(result)

# 公開MCPツール (mcp/server.py使用 - PyPI配布中)
from tree_sitter_analyzer.mcp.server import TreeSitterAnalyzerMCPServer

server = TreeSitterAnalyzerMCPServer(project_root=".")
# MCPツールを通じた解析
```
**関連テスト:** `test_api.py::test_api_workflow`

**注意:** 2つのMCP実装が存在
- `tree_sitter_analyzer/mcp/` - 公開版（PyPI配布中、8ツール）
- `tree_sitter_analyzer/interfaces/` - 新設計版（開発中、8ツール）

### 3.2 エッジケースシナリオ

#### シナリオ4: 大規模プロジェクト解析
- 10,000ファイルプロジェクト
- 並行処理
- メモリ効率確認

**関連テスト:** `test_async_performance.py::test_large_project`

#### シナリオ5: エラー回復
- ネットワーク断
- ファイル削除
- 権限エラー

**関連テスト:** `test_cli_regression.py::test_error_recovery`

---

## 4. テストデータ

### 4.1 サンプルファイル (`examples/`)

| ファイル | 言語 | 行数 | 用途 |
|---------|------|------|------|
| BigService.java | Java | 2,000+ | 大規模ファイル |
| ModernJavaScript.js | JavaScript | 500+ | ES6+機能 |
| ComprehensiveTypeScript.ts | TypeScript | 600+ | 型システム |
| comprehensive_sample.html | HTML | 300+ | HTML5 |
| comprehensive_sample.css | CSS | 400+ | CSS3 |
| sample.py | Python | 200+ | 基本Python |

### 4.2 テストフィクスチャ (`tests/fixtures/`)

- 正常系ファイル
- 異常系ファイル（構文エラー含む）
- 空ファイル
- 巨大ファイル（100MB+）
- 特殊文字ファイル（Unicode、絵文字）

---

## 5. テスト実行

### 5.1 全テスト実行

```bash
# 全テスト実行（約10-15分）
uv run pytest

# 並行実行（高速化）
uv run pytest -n auto
```

### 5.2 カテゴリ別実行

```bash
# 単体テストのみ
uv run pytest -m unit

# 統合テストのみ
uv run pytest -m integration

# MCPテストのみ
uv run pytest -m mcp

# 高速テストのみ（slowマーカー除外）
uv run pytest -m "not slow"
```

### 5.3 言語別実行

```bash
# Javaテスト
uv run pytest tests/test_java_structure_analyzer.py

# JavaScriptテスト
uv run pytest tests/test_javascript_plugin_comprehensive.py

# MCPテスト
uv run pytest tests/test_mcp_*.py
```

---

## 6. カバレッジ詳細

### 6.1 モジュール別カバレッジ

| モジュール | ファイル数 | カバレッジ |
|-----------|-----------|-----------|
| `core/` | 15 | 90% |
| `languages/` | 10 | 85% |
| `mcp/` | 12 | 90% |
| `cli/` | 8 | 80% |
| `search/` | 5 | 88% |
| `cache/` | 3 | 92% |
| `security/` | 4 | 95% |

### 6.2 未カバー箇所

**優先対応が必要な箇所:**
- エラーハンドリングの一部
- 到達困難なエッジケース
- デバッグ用コード

**対応計画:** v2.0で追加テスト作成

---

## 7. テスト品質指標

### 7.1 現状の品質

| 指標 | 値 | 状態 |
|------|-----|------|
| **総テスト数** | 3,370+ | ✅ 優良 |
| **合格率** | 100% | ✅ 優良 |
| **カバレッジ** | ~85% | ✅ 良好 |
| **平均実行時間** | 15分 | ✅ 良好 |
| **フレーク率** | < 0.1% | ✅ 優良 |

### 7.2 トレンド

**テスト数の推移:**
- v1.0: 500件
- v1.5: 1,500件
- v1.8: 2,800件
- v1.9: 3,370件
- **成長率:** 年間+150%

**カバレッジの推移:**
- v1.0: 60%
- v1.5: 70%
- v1.8: 80%
- v1.9: 85%

---

## 8. 今後の改善計画

### 8.1 短期（3ヶ月）
- [ ] カバレッジ90%達成
- [ ] テストマーカー整備（3,002件の未設定テストにマーカー付与）
- [ ] E2Eテスト明示化（既存のE2E的テストに`@pytest.mark.e2e`追加）
- [ ] パフォーマンステスト拡充

### 8.2 中期（6ヶ月）
- [ ] テスト数4,000件突破
- [ ] ミューテーションテスト導入
- [ ] 視覚的回帰テスト
- [ ] E2Eテスト150件明示化（現在のテストの分類整理）

### 8.3 長期（12ヶ月）
- [ ] AIベーステスト生成
- [ ] カオスエンジニアリング
- [ ] 継続的パフォーマンス監視

---

## 9. テストケース詳細へのリンク

### 9.1 テストファイル一覧

詳細なテストケースは以下のファイルを参照：

**コア機能:**
- `tests/test_core_engine_extended.py`
- `tests/test_core_query_service.py`
- `tests/test_api.py`

**言語プラグイン:**
- `tests/test_java_structure_analyzer.py`
- `tests/test_javascript_plugin_comprehensive.py`
- `tests/test_typescript_plugin.py`
- `tests/test_python_plugin.py`

**MCP統合:**
- `tests/test_mcp_async_integration.py`
- `tests/test_mcp_fd_rg_tools.py`
- `tests/test_mcp_query_tool_definition.py`

**CLI:**
- `tests/test_cli_comprehensive.py`
- `tests/test_cli_argument_validation.py`

**セキュリティ:**
- `tests/security/test_mcp_security.py`

### 9.2 テスト結果レポート

**最新テスト結果:** GitHub Actions  
**カバレッジレポート:** `htmlcov/index.html`  
**パフォーマンスレポート:** `benchmarks/`

---

## 改訂履歴

| バージョン | 日付 | 変更内容 | テスト数 |
|-----------|------|---------|---------|
| 1.0 | 2025-11-02 | 初版作成 | 3,370+ |
| 1.1 | 2025-01-03 | 実装コードとの照合・修正<br>- 実際のテスト数を検証・修正:<br>  * コアエンジン: 150+ → 14件（他にcore/配下に分散）<br>  * クエリサービス: 200+ → 13件（他にquery関連ファイルに分散）<br>  * キャッシュ: 80+ → 10件（全体で85件以上が分散）<br>  * 非同期: 120+ → 779件（複数ファイルに分散）<br>  * fd/rgツール: 100+ → 144件<br>  * ripgrep phase: 150+ → 95件（7フェーズ）<br>- MCPツール: 2つの実装の詳細を明記<br>  * 公開版: `mcp/server.py` (8ツール - PyPI配布中)<br>  * 新設計版: `interfaces/mcp_server.py` (8ツール - 開発中)<br>- セキュリティテスト数: 100 → 20件（正確な値）<br>- テスト分類を修正（カテゴリ重複を注記）<br>- 各テストファイルの実測値を記載 | 3,370+ |
| 1.2 | 2025-01-04 | テストケース分類を実測マーカー数に修正<br>- 単体テスト: ~2,800 → 349（マーカー設定済）<br>- 統合テスト: ~400 → 19（マーカー設定済）<br>- E2Eテスト: ~100 → 未設定（開発中）<br>- 非同期テスト: 779（asyncioマーカー）を明記<br>- その他（マーカー未設定）: 3,002件を明記<br>- 改善計画にテストマーカー整備とE2E明示化を追加 | 3,370 |
