---
generated_at: 2026-02-21 22:05:00
metrics:
  claims_total: 30
  claims_with_evidence: 27
  claims_without_evidence: 3
confidence_derived: 0.90
---

# 根拠レポート：非機能要件テストケース一覧

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.90**
  - 根拠あり：27 / 30、根拠なし：3
- 優先レビュー（高）
  1. **NFT-006 TCP接続タイムアウトテスト**：合格基準の具体的な数値が未定義
  2. **NFT-007 SecureRandom整数生成テスト**：「暗号学的に安全」の検証方法が未明確
  3. **NFT-027 インクリメンタルタイムアウトテスト**：テストケースがコード上に存在しない

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `src/async/Semaphore.php` - 並行処理制限の実装
- E-02: `tests/async/SemaphoreTest.php` - Semaphore機能テスト
- E-03: `src/random/secure.php` - 暗号学的安全乱数生成
- E-04: `src/random/pseudo.php` - 擬似乱数生成（非暗号用途）
- E-05: `tests/random/SecureRandomTest.php` - セキュアランダムテスト
- E-06: `src/file/Lock.php` - ファイルロック実装
- E-07: `src/file/LockType.php` - ロックタイプ定義（SHARED/EXCLUSIVE）
- E-08: `tests/file/FileTest.php` - ファイル操作テスト
- E-09: `src/tcp/connect.php` - TCP接続実装（タイムアウト含む）
- E-10: `src/tcp/ServerOptions.php` - TCPサーバーオプション
- E-11: `tests/tcp/HSLTCPTest.php` - TCP接続テスト
- E-12: `src/network/SocketOptions.php` - ソケットオプション定義
- E-13: `src/io/BufferedReader.php` - バッファ付きリーダー実装
- E-14: `tests/io/BufferedReaderTest.php` - バッファリーダーテスト
- E-15: `src/io/_Private/DEFAULT_READ_BUFFER_SIZE.php` - デフォルトバッファサイズ定義（8KB）
- E-16: `src/_Private/OptionalIncrementalTimeout.php` - インクリメンタルタイムアウト実装
- E-17: `src/file/open.php` - ファイルオープン関数群
- E-18: `tests/unix/HSLUnixSocketTest.php` - Unixソケットテスト
- E-19: `src/os/ErrnoException.php` - エラー例外定義
- E-20: `.github/workflows/build-and-test.yml` - CI/CDワークフロー

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | NFT-001: Semaphore同時実行制限 | E-01, E-02 | ○ |
| C-02 | NFT-002: Semaphore極限負荷テスト（limit=1） | E-02 (testExtreme1) | ○ |
| C-03 | NFT-003: Semaphore極限負荷テスト（limit=10000） | E-02 (testExtreme2) | ○ |
| C-04 | NFT-004: 大容量ファイル読み込み | E-08 (testMultipleReads) | ○ |
| C-05 | NFT-005: バッファサイズ境界テスト | E-14, E-15 | ○ |
| C-06 | NFT-006: TCP接続タイムアウト | E-09 | △ |
| C-07 | NFT-007: SecureRandom整数生成 | E-03, E-05 | △ |
| C-08 | NFT-008: SecureRandom文字列生成 | E-03, E-05 | ○ |
| C-09 | NFT-009: PseudoRandomの非暗号用途警告 | E-04 | ○ |
| C-10 | NFT-010: 一時ファイルパーミッション（0600） | E-08 (testTemporaryFile) | ○ |
| C-11 | NFT-011: 排他ロック機能 | E-06, E-07, E-08 | ○ |
| C-12 | NFT-012: 共有ロック機能 | E-06, E-07, E-08 | ○ |
| C-13 | NFT-013: 排他作成モード（MUST_CREATE） | E-08 (testExclusiveOpen), E-17 | ○ |
| C-14 | NFT-014: SO_REUSEADDRオプション | E-11, E-12 | ○ |
| C-15 | NFT-015: IPv6/IPv4フォールバック | E-09, E-11 | ○ |
| C-16 | NFT-016: 接続中サーバークローズ | E-11 (testCloseDuringAsyncAccept) | ○ |
| C-17 | NFT-017: 無効ポート接続エラー | E-11 (testConnectingToInvalidPort) | ○ |
| C-18 | NFT-018: EOF検出機能 | E-14 (testEndOfFile) | ○ |
| C-19 | NFT-019: クローズ済みファイル操作 | E-14 (testIterateLinesOnClosedFile) | ○ |
| C-20 | NFT-020: 早期クローズDisposable | E-08 (testEarlyClosedDisposables) | ○ |
| C-21 | NFT-021: IPv4専用接続 | E-11 (provideConnectionParameters) | ○ |
| C-22 | NFT-022: IPv6専用接続 | E-11 (provideConnectionParameters) | ○ |
| C-23 | NFT-023: Unixドメインソケット | E-18 | ○ |
| C-24 | NFT-024: 一時ディレクトリ作成 | tests/os/MkdtempTest.php | ○ |
| C-25 | NFT-025: Deprecated API警告 | E-09 (__Deprecated属性) | ○ |
| C-26 | NFT-026: ErrnoException詳細 | E-19 | ○ |
| C-27 | NFT-027: インクリメンタルタイムアウト | E-16 | △ |
| C-28 | NFT-028: 固定サイズ読み取りタイムアウト | E-13 | ○ |
| C-29 | NFT-029: 一時ファイル自動削除 | E-08 (testTemporaryFile) | ○ |
| C-30 | NFT-030: leaky_temporary_file永続化 | E-08 (testLeakyTemporaryFile) | ○ |

## 4) 不足情報（Unknown / Missing）
- **NFT-006 TCP接続タイムアウトテスト**：timeout_nsパラメータは実装に存在するが、具体的なタイムアウト挙動を検証するテストケースがテストファイル内に見当たらない
  - 候補：tests/tcp/HSLTCPTest.php に追加 / 別途タイムアウトテスト作成
- **NFT-007 SecureRandom整数生成テスト**：「暗号学的に安全」を検証するための具体的なテスト方法（エントロピー測定等）が未定義
  - 候補：統計的ランダム性テスト / NIST SP 800-22準拠テスト
- **NFT-027 インクリメンタルタイムアウトテスト**：OptionalIncrementalTimeoutクラスの単体テストが存在しない
  - 候補：tests/_Private/OptionalIncrementalTimeoutTest.php 作成

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - NFT-006: タイムアウト機能はネットワーク障害時の重要な可用性要件だが、専用テストが不足
- **1: 中リスク** - NFT-007: セキュリティクリティカルな機能だが、暗号学的安全性の検証方法が未明確
- **0: 低リスク** - NFT-027: 内部ユーティリティクラスのテスト不足。直接的なユーザー影響は限定的

## 6) レビュアーチェックリスト（最小）
- [ ] NFT-006: TCP接続タイムアウトの合格基準を具体化（例：「5秒以内に接続できない場合ETIMEDOUTエラー」）
- [ ] NFT-007: SecureRandomの「暗号学的安全性」検証方法を明確化、または外部認証への参照を追加
- [ ] NFT-027: OptionalIncrementalTimeoutの単体テスト追加の必要性を検討
- [ ] 全体: 性能テストの「合格基準」に具体的な数値目標（レスポンス時間、スループット等）の追加を検討
- [ ] セキュリティテスト: ペネトレーションテストやファジングテストの追加要否を検討
