単体テスト仕様・結果・障害票サンプル
文書ID: UT-PLAN-014 / 版: 1.0 / 関連: REQ-014〜016 / 状態: 記入例・未実施
以下は架空案件のテスト設計とコード例です。合格証跡や実測カバレッジではありません。
工程定義
- 目的: モジュールの正常・境界・異常動作を独立した期待値で検証する。
- 入力: 詳細設計、実装、受入条件、テストデータ。
- AIの作業: テストを生成・実行し、再現ケースと修正差分を記録する。
- 成果物: テスト仕様、自動テスト、実行ログ、カバレッジ、障害票。
- 完了条件: 必須ケースが合格し、期待値が仕様と一致するとQAが確認する。
1. テストケース
| ID | 対応条件 | 入力・前提 | 期待結果 | 実際の結果 |
|---|---|---|---|---|
| UT-014-01 | AC-014-01 | U002、承認権限あり、U001のsubmitted申請 | 承認可能 | 未実施 |
| UT-014-02 | AC-014-02 | U001、承認権限あり、U001の申請 | SELF_APPROVAL | 未実施 |
| UT-014-03 | AC-014-03 | U003、承認権限なし | FORBIDDEN | 未実施 |
| UT-014-04 | AC-014-04 | U002、approved申請 | ALREADY_PROCESSED | 未実施 |
| UT-014-05 | AC-014-05 | 監査保存処理が例外 | ロールバック処理が呼ばれる | 未実施 |
テストデータには実在する利用者情報を使わない。同時要求と実DBでのロールバックは結合テストで別途検証する。
2. 自動テストコード例
以下は説明用の純粋関数とNode.js組込みテストの例。実APIの認証・DB処理を検証するコードではない。実案件では対象モジュールをimportし、実装とテストを分離する。
const test = require('node:test');
const assert = require('node:assert/strict');
function canApprove(actor, expense) {
if (!actor.canApprove) return 'FORBIDDEN';
if (actor.id === expense.applicantId) return 'SELF_APPROVAL';
if (expense.status !== 'submitted') return 'ALREADY_PROCESSED';
return 'OK';
}
test('REQ-014: 承認権限があっても自己承認は拒否', () => {
const actor = { id: 'U001', canApprove: true };
const expense = { applicantId: 'U001', status: 'submitted' };
assert.equal(canApprove(actor, expense), 'SELF_APPROVAL');
});
例の利用方法: 上記をapproval-example.test.cjsとして保存し、対応するNode.js環境でnode --test approval-example.test.cjsを実行する。実案件の成功証跡とは分けて保存する。
3. 実行結果テンプレート
対象コミット: {{COMMIT_SHA}} / 実行環境: {{TEST_ENV}} / コマンド: {{UNIT_TEST_COMMAND}} / 日時: 未実施
必須ケース総数: 5 / 合格: 未計測 / 不合格: 未計測 / 未実施: 5
カバレッジ: 対象モジュール、行・分岐、除外理由、測定ツールを記録。実測値: 未計測。自社目標: {{COVERAGE_TARGET}}。高いカバレッジだけで業務上の正しさを判定しない。
4. 障害票の記入例(架空)
障害ID: BUG-014-EXAMPLE / ケース: UT-014-02 / 前提: U001に承認権限がある / 操作: 自分の申請を承認 / 期待: SELF_APPROVAL / 仮の症状: OKが返る
原因仮説: 権限判定だけで承認可とし、申請者との照合がない。修正案: 自己承認判定を追加。再試験: UT-014-01〜04と関連結合・E2Eケース。実際の修正コミットと結果: 未登録。
自社への適用・完了確認
{{TEST_FRAMEWORK}}、期待値、境界値、例外パターンを自社仕様から作る。QAが「AI生成の実装とテストが同じ誤解を共有していないか」を確認する。
レビュー担当: {{QA_OWNER}} / 完了判定: 未承認 / 証跡: {{EVIDENCE_REFERENCE}}