外部結合テスト設計 − 個別設計(ETD-D)作成ルール
本ドキュメントは、品質保証・テスト実装のために 外部結合テスト設計 − 個別設計(External Integration Test Design – Detailed: ETD-D) を統一形式で記述する標準ルールです。
ETD-D は、
- 外部結合テスト仕様 − 個別仕様(ETS-D)で定義された
- 特定の外部システム/特定の外部連携
- に対して
- テストケース構造を、実装に落とせる粒度で設計する
ことを目的とします。
0. 位置づけ(必読)
ETD-D は **「外部結合テストの実装直前」**の設計成果物です。
plaintext
TSP(テスト戦略・方針)
└ ETS(外部結合テスト仕様・全体)
└ ETS-D(外部結合テスト仕様・個別)
└ ETD(外部結合テスト設計・全体)
└ ETD-D(外部結合テスト設計・個別) ← 本書
└ テスト実装・実行(Postman / Newman / JUnit / CI 等)| 観点 | ETD | ETD-D |
|---|---|---|
| 対象 | 外部結合の共通設計 | 1 外部システム / 1 連携群 |
| 粒度 | 方針・枠組み | ケース構造・観測点の設計 |
| ケース | 書かない | 書く(値は最小) |
| 実装 | 参照先のみ | 実装へ直結(ファイル/ジョブ/手順) |
1. 全体方針
ETD-D は 1ファイル = 1 外部連携対象(外部システム/連携群) を原則とします。
「外部結合の本質」を落とします:
- 契約I/Fの遵守
- 障害時(タイムアウト/5xx/4xx/未達)の挙動
- 冪等性
- 運用(追跡・再送・手動復旧)
テストコード全文を貼る必要はありませんが、
- **そのまま実装に落とせる形(ケースID、入力条件、期待結果、観測点)**で書きます。
2. 対象単位と命名ルール
対象単位(例)
- 決済サービス連携(支払・取消・照会)
- 仕入先システム連携(発注送信・受付照会)
- 外部IdP連携(ログイン・トークン更新・失効)
ファイル名(推奨)
sh
020-外部結合テスト設計-<用語集term>.md例:
020-外部結合テスト設計-決済.md020-外部結合テスト設計-仕入先.md
※ <用語集term> は 用語集termから採用し、できるだけ固定します。
3. ファイル命名・ID規則
Frontmatter
| 項目 | ルール |
|---|---|
| id | etd-<external>(例: etd-payment, etd-supplier) |
| type | test |
| title | 外部結合テスト設計: <外部システム名> |
| status | draft / ready / deprecated |
4. 推奨 Frontmatter 項目
| 項目 | 説明 | 必須 |
|---|---|---|
| id | ETD-D ID | ○ |
| type | test 固定 | ○ |
| title | 設計名 | ○ |
| status | 状態 | ○ |
| part_of | etd-index(全体設計) | 必須 |
| based_on | ets-...(個別仕様), eapis/ems/efes, adr/nfr/sac | 必須 |
| supersedes | 置換関係 | 任意 |
5. 本文構成(標準テンプレ)
ETD-D は以下の見出しを 必ずこの順序で記述します。
- 概要
- 対象連携の整理
- テスト環境・外部接続方式
- テスト観点とケース構成
- ケース一覧(設計)
- テストデータ設計
- 実行・自動化・手動補完
- 結果確認・エビデンス
- 対象外
- メモ / 将来課題
6. 記述ガイド詳細
6.1 概要
- 外部システム名、連携目的、対象ETS-Dを明記します。
例:
本設計は、外部結合テスト仕様(ets-payment)に基づき、決済サービス連携のケース構成と実行方法を定義する。
6.2 対象連携の整理(必須)
| 項目 | 内容 |
|---|---|
| 外部システム | 決済サービス |
| 連携種別 | 外部API / Webhook / ファイル |
| 連携パターン | 支払要求 / 結果照会 / 取消 |
| 契約I/F | eapis-payment |
| 追跡キー | 相関ID / 冪等キー(概念) |
6.3 テスト環境・外部接続方式(必須)
外部結合は環境が命です。
| 項目 | 方針 |
|---|---|
| 接続先 | sandbox(推奨)/ staging / production |
| 接続方式 | 実接続 / スタブ / モック |
| 切替方法 | 設定で切替可能(方式のみ) |
| 本番限定項目 | 代替策(運用監視、リハーサル) |
6.4 テスト観点とケース構成(必須)
ETS-Dの観点を ケース群へ分解します。
| 観点ID | 観点 | ケース分解方針 |
|---|---|---|
| EE-PAY-01 | 契約遵守 | 正常/必須欠落/型不整合(方向性) |
| EE-PAY-03 | タイムアウト | 応答なし→再送/保留 |
| EE-PAY-04 | 冪等性 | 同一要求再送 |
| EE-PAY-05 | 追跡 | 相関IDで追跡できる |
6.5 ケース一覧(設計)(最重要)
ここで ケースID/前提/入力条件/期待結果/観測点 を設計します。 値の詳細やJSON全文は書きません。
推奨(表)
| ケースID | 観点ID | 前提 | 入力条件 | 期待結果 | 観測点 |
|---|---|---|---|---|---|
| ETD-PAY-01 | EE-PAY-01 | 正常データ | 支払要求 | 受付成功 | 応答 + 状態 |
| ETD-PAY-02 | EE-PAY-03 | 外部遅延 | 支払要求 | 再送 or 保留 | 実行履歴 |
| ETD-PAY-03 | EE-PAY-04 | 冪等キー同一 | 再送 | 二重処理なし | 状態整合 |
| ETD-PAY-04 | EE-PAY-05 | 相関IDあり | 支払要求 | 追跡可能 | ログ |
ポイント:
- 観測点(何で判定するか)を必ず書く
- 外部はブラックボックスなので「外部内部状態」ではなく、観測可能な証跡に落とす
6.6 テストデータ設計
| データ種別 | 設計方針 |
|---|---|
| 正常 | 代表データ |
| 例外 | 必須欠落・境界(方向性) |
| 再送 | 同一冪等キーを再利用 |
| 相関 | ケースIDを相関IDに紐付け |
6.7 実行・自動化・手動補完
外部結合は「自動化できない領域」も前提にします。
| 項目 | 方針 |
|---|---|
| 自動実行 | CI / nightly |
| 手動補完 | 本番限定・管理画面確認 |
| 失敗時 | 再実行ルール / 手動復旧手順へのリンク |
6.8 結果確認・エビデンス(必須)
| 種類 | エビデンス例 |
|---|---|
| 契約遵守 | リクエスト/レスポンス記録 |
| 障害時 | リトライ履歴 / 保留状態 |
| 冪等性 | 二重登録なしの状態確認 |
| 追跡 | 相関IDログ |
6.9 対象外
- 外部サービス内部処理
- SLA検証
6.10 メモ / 将来課題
- 外部仕様変更検知
- 本番検証の縮小策
7. 禁止事項
| 禁止 | 理由 |
|---|---|
| 秘密情報(キー・トークン値) | セキュリティ |
| JSON/SQL全文 | 実装依存 |
| 実装クラス/関数名 | 抽象度低下 |
| ケース値の全列挙 | 保守不能 |
| 外部内部状態への依存 | 観測不能 |
8. サンプル(最小)
yaml
---
id: etd-payment
type: test
title: 外部結合テスト設計: 決済
status: draft
part_of: [etd-index]
based_on:
- ets-payment
- eapis-payment
- adr-payment-idempotency
---9. 生成AI向け指示テンプレート
- 以下のルールに従って 外部結合テスト設計 − 個別設計(ETD-D) を 1 ファイル作成してください。
- 対象は ETS-D で定義された 1外部システムの連携です。
- ケースID、前提、入力条件、期待結果、観測点を表で設計してください。
- 禁止: 秘密情報、SQL/JSON全文、実装クラス名、クリック手順の逐語列挙、ケースの値網羅。