Issue #39: test: テストカバレージ80%以上達成

Opened 2025/7/14 by @nyasuto Open
priority: high type: test

Description

🎯 テスト: テストカバレージ80%以上達成

Priority: HIGH

Impact: コード品質向上、バグ早期発見、リファクタリング安全性確保

Component: tests/ ディレクトリ、CI/CDパイプライン

Files: tests/test_*.py, .github/workflows/, pyproject.toml

Problem Description

現在のHiveプロジェクトは包括的な機能を持つ一方で、テストカバレージが不十分です。以下の課題があります:

  1. カバレージ計測環境未整備: pytest-covの設定が不完全でカバレージ測定ができない
  2. Python 3.9互換性問題: Union型記法によりテスト実行がエラーで停止
  3. モジュール別テスト不足: 27個のPythonファイルに対してテストファイルが5個のみ
  4. CI/CDでのカバレージ計測なし: 自動的な品質ゲートが設定されていない
  5. エッジケース・エラーハンドリングテスト不足: 正常パスのみでエラー系統のテスト不足

現在の状況

プロジェクト構成:
- メインモジュール: 27 Python ファイル (comb/, queen/, workers/)
- テストファイル: 5 ファイル (tests/)
- カバレージ: 測定不可 (環境問題により)

Recommended Solution

Phase 1: テスト環境基盤整備 (1週間)

1.1 Python 3.9互換性修正

# 修正必要箇所例
def __init__(self, root_path: Path | None = None) -> None:
# ↓
def __init__(self, root_path: Optional[Path] = None) -> None:

1.2 カバレージ測定環境構築

# pyproject.toml 強化
[tool.coverage.run]
source = ["hive", "queen", "workers", "comb", "tools"]
omit = [
    "tests/*",
    "examples/*", 
    "scripts/*",
    "*/__pycache__/*",
]

[tool.coverage.report]
exclude_lines = [
    "pragma: no cover",
    "def __repr__",
    "if self.debug:",
    "raise AssertionError",
    "raise NotImplementedError",
    "if __name__ == .__main__.:",
]

1.3 Makefileタスク追加

test-cov: ## Run tests with coverage report
	uv run pytest --cov=. --cov-report=html --cov-report=term-missing

coverage-html: ## Generate HTML coverage report  
	uv run pytest --cov=. --cov-report=html
	open htmlcov/index.html

coverage-check: ## Check if coverage meets threshold
	uv run pytest --cov=. --cov-fail-under=80

Phase 2: モジュール別テスト拡充 (2-3週間)

2.1 Combシステムテスト強化

新規テストファイル: tests/test_comb_modules.py

# 対象モジュール:
- comb/file_handler.py: ファイル操作、ロック機能
- comb/message_router.py: メッセージ配信、優先度管理  
- comb/sync_manager.py: 同期制御、デッドロック防止
- comb/work_log_manager.py: 作業ログ管理
- comb/markdown_logger.py: Markdown生成

# テスト観点:
✅ 正常系: 基本機能の動作確認
✅ 異常系: エラーハンドリング、不正入力
✅ 境界値: ファイルサイズ制限、タイムアウト
✅ 並行性: 複数Worker同時アクセス
✅ パフォーマンス: 大量データ処理

2.2 Queenシステムテスト強化

新規テストファイル: tests/test_queen_modules.py

# 対象モジュール:
- queen/task_distributor.py: Nectar配布ロジック
- queen/status_monitor.py: Worker状態監視
- queen/coordinator.py: 全体調整機能

# テスト観点:
✅ タスク配布アルゴリズム: 負荷分散、優先度制御
✅ Worker監視: ヘルスチェック、障害検出
✅ データ整合性: Nectar→Honey変換、状態管理
✅ 設定可変性: 異なるColonyサイズでの動作

2.3 統合テスト強化

既存強化: tests/test_system_integration.py

# 追加テストシナリオ:
✅ ネットワーク分断時の復旧
✅ Worker異常終了時の処理継続  
✅ 大規模プロジェクト (100+ Nectar) の処理
✅ 長時間運用 (24時間以上) の安定性
✅ メモリリーク検出テスト

Phase 3: エッジケース・エラーハンドリング (1-2週間)

3.1 ファイルシステムエラー対応

# tests/test_file_error_handling.py
- ディスク容量不足
- 権限エラー  
- ファイルロック競合
- 破損JSONファイル処理
- ネットワークドライブでの動作

3.2 並行処理エラー対応

# tests/test_concurrency_edge_cases.py
- デッドロック発生・解決
- レースコンディション検出
- Worker間通信タイムアウト
- 大量同時接続処理

3.3 データ整合性テスト

# tests/test_data_consistency.py  
- 部分的ファイル書き込み
- 電源断シミュレーション
- 不正なNectarデータ処理
- 互換性テスト (旧バージョンデータ)

Phase 4: CI/CD統合とカバレージ自動化 (1週間)

4.1 GitHub Actions強化

# .github/workflows/test-coverage.yml
name: Test Coverage
on: [push, pull_request]

jobs:
  coverage:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Setup Python 3.9
        uses: actions/setup-python@v4
        with:
          python-version: '3.9'
      
      - name: Install dependencies
        run: pip install -e .[dev]
        
      - name: Run tests with coverage
        run: pytest --cov=. --cov-report=xml
        
      - name: Upload to Codecov
        uses: codecov/codecov-action@v5
        with:
          file: ./coverage.xml
          
      - name: Coverage comment
        uses: py-cov-action/python-coverage-comment-action@v3
        with:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

4.2 品質ゲート設定

# coverage.yml に追加
- name: Coverage threshold check
  run: pytest --cov=. --cov-fail-under=80
  
- name: Coverage report
  run: |
    echo "## 📊 Coverage Report" >> $GITHUB_STEP_SUMMARY
    pytest --cov=. --cov-report=term >> $GITHUB_STEP_SUMMARY

Acceptance Criteria

🎯 最終目標

  • 全体カバレージ80%以上: すべてのメインモジュールで80%以上達成
  • モジュール別カバレージ: 各モジュール最低70%以上
  • CI/CD自動化: PR毎に自動カバレージチェック実行
  • 品質ゲート: カバレージ80%未満のPRはマージ不可
  • レポート自動生成: HTMLカバレージレポート自動生成・アップロード

📋 詳細基準

Core Modules (最低80%以上)

  • comb/api.py: 85%以上 (メイン API)
  • comb/message_router.py: 85%以上 (通信基盤)
  • comb/file_handler.py: 80%以上 (ファイル操作)
  • queen/task_distributor.py: 85%以上 (タスク管理)
  • queen/honey_collector.py: 80%以上 (成果物収集)

Support Modules (最低70%以上)

  • comb/sync_manager.py: 75%以上 (同期制御)
  • comb/work_log_manager.py: 70%以上 (ログ管理)
  • queen/status_monitor.py: 75%以上 (監視機能)
  • queen/coordinator.py: 70%以上 (調整機能)

Test Quality

  • エッジケーステスト: 異常系・境界値テスト充実
  • 並行処理テスト: マルチWorker環境での安定性確認
  • パフォーマンステスト: 大規模データでの性能確認
  • 互換性テスト: Python 3.9-3.12での動作確認

CI/CD Integration

  • 自動テスト実行: push/PR時の自動テスト
  • カバレージレポート: PR へのカバレージコメント自動投稿
  • 品質ゲート: カバレージ基準未達成時のマージブロック
  • パフォーマンス監視: テスト実行時間の監視・最適化

実装戦略

🚀 Quick Wins (最初の1週間で実現)

  1. Python 3.9互換性修正: テスト実行可能環境構築
  2. 基本カバレージ測定: 現状把握と目標設定
  3. Makefile拡張: 開発者向け便利コマンド追加
  4. CIパイプライン基本: GitHub Actions基本設定

🎯 戦略的アプローチ

  1. 段階的向上: 現在→60%→80%の段階的カバレージ向上
  2. 高ROIテスト優先: クリティカルパス・エラー頻発箇所から優先実装
  3. 開発者体験向上: テスト作成・実行を簡単にするツール整備
  4. 継続的改善: カバレージ監視とボトルネック特定の仕組み

📊 成功メトリクス

  • カバレージ率: 全体80%以上、コア90%以上達成
  • テスト実行時間: 5分以内でのフル テスト完了
  • CI成功率: 95%以上のテスト成功率維持
  • バグ発見率: テストでの事前バグ検出率向上

🧪 本Issue完了により、Hiveプロジェクトの品質基盤が確立され、安心してリファクタリングや新機能開発を進められる環境が整います。

Comments

コメント機能は現在実装されていません。
GitHub API の comments エンドポイントを統合する予定です。

🤖 AI分析

分類結果

❓ 質問
🟠 高
56 スコア
カテゴリ 20
優先度 36
0

Details

Assignees:

None

Milestone:

None

Created:

2025/7/14

Updated:

2025/7/14