# HINA 全类型测试覆盖矩阵 — v2.0 ## 总体覆盖目标 | 维度 | 目标 | 说明 | |:-----|:-----|:------| | HINA 类型数 | 35/35 | 33+2 种全部覆盖 | | 每种类型变体数 | ≥5 | 正常/边界/FP/FN/命名/风格 | | CODING STYLE | ≥3 | 標準/GO TO/EVALUATE/単純/混在 | | 命名规则 | ≥3 | WS-/K01-/非KEY-/日本語/単一文字 | | 注释模拟 | ≥2 | CICS/SQL 的 *> 注释 | | 解析崩溃 | 0 | 66+ すべてのテストプログラム | | 假阳性 | 0 | 非マッチングがマッチングと判定されない | | 假阴性 | 0 | マッチングがマッチング以外と判定されない | ## 角色设计 | 角色 | 职责 | 测试重点 | |:-----|:------|:---------| | **COBOL迁移工程师** | 实际迁移项目中的真实模式 | 生産プログラム、マルチファイル、COPYBOOK、複雑条件 | | **COBOL语言律师** | 语言标准合规性 | 88-level、REDEFINES、OCCURS DEPENDING、COMP-3、SEARCH ALL の全変種 | | **静态分析引擎开发者** | 解析器健壮性 | 異常入力、空行、継続行、固定形式7桁目、CRLF、EBCDIC混在 | | **QA测试工程师** | 边界/FP/FN/一貫性 | ALL_PAIRS 組合せテスト、同ロジック異スタイル一貫性 | | **日系COBOL専門家** | 日本大型機固有パターン | 日本語変数名、半角カナ、和暦、SJIS問題文字、COBOL85方言 | | **セキュリティエンジニア** | 悪意入力 | SQLインジェクション、パストラバーサル、極長行、特殊文字 | ## 分类型测试计划 ### 1. マッチング系 (9 types: H001-003, 016-020, 022) | テストID | 角色 | 変種 | 重点検証項目 | |:---------|:-----|:------|:-------------| | MAT-001 | QA | 標準 WS-KEY (1:1) | カテゴリ=マッチング, subtype=1:1 | | MAT-002 | QA | 標準 WS-MAST/TRAN-KEY (1:N) | カテゴリ=マッチング, subtype=1:N | | MAT-003 | QA | 標準 WS-KEY-M/WS-KEY-T (N:1) | カテゴリ=マッチング, subtype=N:1 | | MAT-004 | QA | 二段階 OPEN-CLOSE-OPEN | カテゴリ=二段階マッチング | | MAT-005 | QA | M:N 多ファイル + セーブキー | カテゴリ=マッチング, subtype=M:N→MxN | | MAT-006 | QA | PREV-KEY 混合 | カテゴリ=項目チェック(重複含む) | | MAT-007 | QA | ALT-KEY 混合 | カテゴリ=マッチング, subtype=混合(异键) | | MAT-008 | COBOL移 | GO TO スタイル (PERFORM無) | WS-KEY比較+条件READ→マッチング | | MAT-009 | COBOL移 | EVALUATE TRUE スタイル | EVALUATE+条件READ→マッチング | | MAT-010 | COBOL移 | 単一文字変数 A/B/C/D | 命名に依存せずマッチング検出 | | MAT-011 | COBOL移 | 日本語変数名 | Lark NAME 制限→fallback、クラッシュしない | | MAT-012 | COBOL言 | 88-level 条件 | 88-level = 比較が正常動作 | | MAT-013 | COBOL言 | FILE SECTION フィールド直接比較 | FD内KEY比較→マッチング | | MAT-014 | 解析器 | 固定形式 7桁目コード | 形式検出→正常解析 | | MAT-015 | 解析器 | CRLF改行のみ | 行末正規化→正常 | | MAT-016 | 解析器 | COPY文あり | COPY展開後→正常 | | MAT-017 | QA | FP: WS-KEY in ADD | キーワード有≠マッチング | | MAT-018 | QA | FP: WS-KEY in コメント | コメント無視→非マッチング | | MAT-019 | QA | FP: PREV-KEYのみ(加算無) | KEY変数のみ≠マッチング | | MAT-020 | QA | FP: 1ファイルのみ | 単一ファイル≠マッチング | | MAT-021 | QA | FP: IF WS-KEY = SPACES | figurative constant≠比較 | | MAT-022 | 日系 | 全角KEY比較 | UTF-8 NAME→fallback安全 | | MAT-023 | 日系 | 半角カナ変数 | Shift-JIS問題文字→安全 | | MAT-024 | 日系 | 和暦 + KEY比較 | 混合プログラム→クラッシュ無 | | MAT-025 | 言語 | CALL+LINKAGE+KEY混在 | 複数L1競合→優先順位正しい | | MAT-026 | 言語 | SORT+MATCH混在 | SORT優先 | | MAT-027 | 言語 | EXECSQL+MATCH混在 | DB操作優先 | | MAT-028 | 言語 | 無限ループ PERFORM | 解析タイムアウト防止 | | MAT-029 | COBOL移 | マルチファイルIFなし | ファイル多≠マッチング | | MAT-030 | セキュリ | 極長行(10000字) | バッファオーバーフロー防止 | ### 2. キーブレイク系 (5 types: H007-008, 110, 112-113) | テストID | 変種 | 重点 | |:---------|:------|:------| | KB-01 | WS-PREV-KEY + ACCUMULATOR | 項目チェック(重複含む) | | KB-02 | WS-PREV-KEY + FILE READ | キーブレイク | | KB-03 | -CNT のみ | 軽度キーブレイク | | KB-04 | FP: PREV無 | 非キーブレイク | | KB-05 | FP: -CNT in コメント | コメント無視 | ### 3-10. 他の全系列 (同様に展開) (省略: 上記と同じ構造を各グループに適用) ## 一貫性クロスチェック | テストID | 内容 | 期待 | |:---------|:------|:------| | CONS-01 | 同一マッチングロジックを6スタイルで | 全6→マッチング | | CONS-02 | 同一キーブレイクロジックを3スタイルで | 全3→項目チェック | | CONS-03 | 優先順位確認 L1全ペア | EXECSQL>CALL>ORG>SORT... | | CONS-04 | 同一L1が異なるSOURCEで安定一致 | IS INITIAL×3→全一致 | | CONS-05 | ルールエンジン全ペア矛盾検出 | 矛盾検出される | ## 実行計画 1. Phase 1: QA テスト (正常形 + 境界形) → 32 tests 2. Phase 2: COBOL移行 テスト (実パターン) → 25 tests 3. Phase 3: 解析器 テスト (ロバストネス) → 18 tests 4. Phase 4: 言語 テスト (標準準拠) → 15 tests 5. Phase 5: 日系 テスト → 10 tests 6. Phase 6: 一貫性 テスト → 10 tests 7. Phase 7: セキュリティ テスト → 5 tests **目標 合計: 115+ tests**