← ClaudeAtlas

unit-test-designlisted

与えられた関数 · クラス · モジュールに対して、観点別(正常 · 異常 · 境界 · セキュリティ)に単体テストケースを設計する手順。
Saigetsu233/harness-jp-si · ★ 0 · Testing & QA · score 63
Install: claude install-skill Saigetsu233/harness-jp-si
# 単体テスト設計支援スキル ## 1. 入力 - 対象:関数シグネチャ · クラス定義 · API 定義 · 受入基準 - 言語:Java / Python / TypeScript(Next.js / Vue / Node.js) 等 - 既存テストフレームワーク:JUnit 5 / pytest / Vitest / Jest 等 ## 2. 手順 ### Step 1:仕様の再確認 1. 関数 · API の **入出力契約** を整理する(型 · 範囲 · 必須 / 任意)。 2. 受入基準(AC)· 詳細設計から **期待する振る舞い** を抽出。 3. 例外 · エラーパスの **すべて** を列挙(仕様上の異常系 + 実装上の防御)。 ### Step 2:観点別ケース生成 #### 観点 A:正常系 - 代表的な合格入力 1 〜 3 ケース。 - 必須項目すべて入力 · 任意項目欠落 · 任意項目入り の組合せ。 #### 観点 B:異常系 - 必須項目欠落 - 形式不正(型 · パターン · 範囲外) - 認可不足(該当する場合) - 業務的不整合(在庫切れ · 重複登録等) - 外部依存失敗(DB · API · タイムアウト) #### 観点 C:境界値 - 数値:0 / 1 / -1 / max / min / overflow - 文字列:空 / 1 文字 / 最大長 / 最大長+1 / Unicode(絵文字含む) - コレクション:空 / 1 要素 / 大量 - 日付:閏日 / 月末 / タイムゾーン跨ぎ / 過去 · 未来極端 #### 観点 D:セキュリティ - SQL Injection(文字列入力に `'OR 1=1`) - XSS(`<script>`) - Path Traversal(`../../../etc/passwd`) - 認可バイパス(他ユーザの ID で操作) - ログ · エラーメッセージへの PII 漏れ ### Step 3:テストケース表 ```markdown | TC-ID | 観点 | 概要 | 入力 | 期待出力 | 優先度 | | --- | --- | --- | --- | --- | --- | | UT-001 | 正常 | 必須のみで登録 | { email, password } | 200 + user object | High | | UT-002 | 異常 | email 形式不正 | { email: "invalid", ... } | 400 + VALIDATION_ERROR | High | | UT-003 | 境界 | password 最小長 | password 8 文字 | 200 | Medium | | UT-004 | 境界 | password 最小長未満 | password 7 文字 | 400 | High | | UT-005 | セキュリティ | SQL Injection 入力 | email: "' OR 1=1--" | 400 (パラメタ化済み) | High | ``` ### Step 4:テストコード雛形 ```typescript // Vitest 例 import { describe, it, expect } from 'vitest' import { registerUser } from '@/services/user-service' descri