外部結合テスト仕様 全体構成 作成ルール
本ドキュメントは、外部結合テスト仕様のうち 全体構成(ets-index) を統一形式で記述するための標準ルールです。 ets-index は、上位方針(TSP/TPC 等)や外部I/F仕様(EAPIS/EMS/EFES/ESIL 等)で整理された観点・条件を「外部結合(契約・管理範囲外を含む連携)」の責務として解釈し、個別の外部結合テスト仕様(ets-<term>)へ分配するための 入口(ナビゲーション) になります。
個別仕様(ets-<term>)の記述ルールは ets-rules.md で定義します。
ETS は「自システムと外部システム(契約・管理範囲外)との連携が、仕様どおり成立すること」を Markdown でレビュー可能な形に落とし込み、外部連携起因の障害・手戻りを最小化します。
ETS は「テストコード」ではありません。 また ETS は「個別の手順書」でもなく、何を外部連携の観点で保証するか(What) を明確にする文書です。
0. 位置づけ(内部結合との違い)
TSP(テスト戦略・方針)
├ ITS(内部結合テスト仕様) … 自システム内部の連携
└ ETS(外部結合テスト仕様) … 自システム ↔ 外部システムの連携 ← 本書| 観点 | ITS(内部結合) | ETS(外部結合) |
|---|---|---|
| 対象 | 自組織管理範囲内 | 契約/管理範囲外の外部を含む |
| 連携点 | 内部API/内部イベント等 | 外部API/外部メッセージ/外部ファイル等 |
| 検証の主眼 | 連携の正しさ+内部整合 | 契約I/F遵守・境界条件・障害時挙動・運用性 |
| 依存の扱い | 内部は実、外は基本スタブ | 外部は実接続 or 検証環境(条件を明文化) |
| エビデンス | CIログ中心 | 外部側の応答・監査・再送/補償の証跡も重視 |
1. 全体方針
ETS は 外部システムとの連携を対象とします。
- 例: 決済、配送、IdP、会計SaaS、仕入先システム、外部ストレージ、外部メッセージ基盤 等
ETS は上位方針(TSP)と整合し、
based_onで根拠仕様(EAPIS / EMS / EFES / ESIL / NFR / SAC / ADR 等)を追跡可能にします。曖昧表現は禁止します。
- 「連携できること」ではなく、入力/連携点/期待結果/観測点/リトライ・補償を記述します。
クリック手順の逐語列挙は避け、業務行為/入力/期待結果として要約します。
実装詳細(SQL全文、内部クラス名、特定ライブラリ設定値の列挙)は書きません。
1ファイル = 1 仕様(原則)です。
- 肥大化する場合は、外部システム単位で
ets-<external>に分割します。
- 肥大化する場合は、外部システム単位で
2. 用語定義
| 用語 | 定義 |
|---|---|
| ETS | 外部結合テスト仕様。外部連携で保証すべき範囲を定義する文書 |
| 外部システム | 自組織の管理範囲外(契約/SLA/仕様変更の影響を受ける) |
| 連携点 | 外部API、外部メッセージ、外部ファイル、Webhook 等 |
| 契約I/F | 外部と合意したI/F仕様(OpenAPI/AsyncAPI/ファイル仕様等) |
| 観測点 | 合否判定の根拠となる観測箇所(応答、外部側ステータス、監査ログ等) |
| 補償 | 失敗時の業務的回復(再送、取消、手動復旧、リカバリ手順等) |
3. ファイル命名・ID規則
ファイル名(推奨)
- 全体:
010-外部結合テスト仕様.md - 個別:
010-外部結合テスト仕様-<用語集term>.md例:010-外部結合テスト仕様-仕入先.md,010-外部結合テスト仕様-決済.md
Frontmatter
id: 全体構成はets-index固定、個別仕様はets-<term>(例:ets-supplier,ets-payment)type:testtitle:外部結合テスト仕様: 全体/外部結合テスト仕様: 決済など
4. 推奨 Frontmatter 項目
Frontmatter は共通スキーマに従います(あわせてメタ情報ルールも参照)。
| 項目 | 説明 | 必須 |
|---|---|---|
| id | ETS ID(ets-...) | ○ |
| type | test 固定 | ○ |
| title | 仕様名 | ○ |
| status | draft / ready / deprecated | ○ |
| part_of | 集約ドキュメントへの所属(個別仕様は ets-index) | 任意 |
| based_on | 根拠となる仕様ID(ESIL/EAPIS/EFES/EMS/NFR/SAC/ADR 等) | 推奨 |
| supersedes | 置き換え関係(ID配列。未指定時は [] を許容) | 任意 |
推奨:
外部連携は「仕様の根拠」が重要なので、
based_onに以下を優先的に入れます。- 連携種別ごと:
eapis-*(API),ems-*(メッセージ),efes-*(ファイル) - 外部一覧:
esil-* - 非機能:
nfr-*,sac-* - 判断根拠:
adr-*
- 連携種別ごと:
part_of/based_on/supersedesは ID の配列で記載し、未指定の場合も[]として明示してよいです。未定義プロパティの追加は禁止です(
additionalProperties: false)。
5. 本文構成(標準テンプレ)
各 ETS ファイルは以下の見出しを順番に並べます。
- 概要
- 対象スコープと契約境界
- 連携パターン一覧
- 保証範囲(観点)
- テスト条件(代表条件)
- 障害・例外時の期待挙動(補償・再送・手動復旧)
- 合格基準とエビデンス
- 対象外 / 除外理由
- メモ / 将来課題
6. 記述ガイド詳細
6.1 概要
- 1〜3文で「どの外部連携を、何のために保証するか」を書きます。
- 外部連携の目的(業務価値)を短く言及します。
6.2 対象スコープと契約境界(必須)
「どこまでが自システムで、どこからが外部か」を固定します。
推奨(表)
| 項目 | 内容例 |
|---|---|
| 外部システム名 | 仕入先システム |
| 連携種別 | 外部API / 外部ファイル / Webhook / メッセージ |
| 契約I/F | eapis-supplier / efes-orders |
| 接続環境 | sandbox / 検証環境 / 本番(要条件明記) |
| 認証方式 | OAuth / API Key(方式のみ) |
| 観測点 | 応答、外部側受付ステータス、監査ログ |
ポイント:
- 「本番でしか検証できない」項目がある場合は、**理由と代替(運用監視/リハーサル)**を明記します。
6.3 連携パターン一覧(必須)
外部連携は「パターン」を押さえるのが重要です(ケース羅列ではない)。
| パターンID | 呼称 | 自システム → 外部 | 連携点 | 目的 |
|---|---|---|---|---|
| EIT-01 | 発注送信 | 発注サービス → 仕入先 | 外部API | 発注を送る |
| EIT-02 | 受付照会 | 発注サービス → 仕入先 | 外部API | 受付結果確認 |
| EIT-03 | 失敗通知 | 仕入先 → 自システム | Webhook | 失敗を受ける |
6.4 保証範囲(観点)(必須)
外部結合では「契約遵守」「障害時」「運用性」を観点として固定化します。
| 観点ID | 分類 | 観点名 | 保証内容 | 根拠 |
|---|---|---|---|---|
| EE-01 | 契約 | リクエスト妥当 | 契約I/Fに適合した送信を行う | EAPIS/EFES |
| EE-02 | 契約 | 応答解釈 | 外部応答を正しく解釈し状態反映 | EAPIS |
| EE-03 | 例外 | タイムアウト | タイムアウト時の扱いが仕様通り | SAC/ADR |
| EE-04 | 例外 | リトライ | リトライ条件・回数・間隔が方針通り | TSP/ADR |
| EE-05 | 運用 | 冪等性 | 再送しても二重処理にならない | ADR |
| EE-06 | 運用 | 監査/追跡 | 連携ID・相関IDで追跡可能 | NFR |
| EE-07 | セキュリティ | 認証/権限 | 認証方式に従い秘匿情報を漏らさない | NFR |
6.5 テスト条件(代表条件)(必須)
値の総当たりは禁止。方向性のみ。
| 観点ID | 条件ID | 条件 | 期待結果 |
|---|---|---|---|
| EE-01 | EC-01 | 正常送信 | 受付成功 |
| EE-02 | EC-02 | 応答が警告 | 状態は警告扱い、業務継続可否が仕様通り |
| EE-03 | EC-05 | タイムアウト | リトライ/保留/手動対応へ遷移 |
| EE-05 | EC-08 | 同一要求を再送 | 二重登録にならない |
6.6 障害・例外時の期待挙動(必須)
ETS のキモです(外部結合はここで差が出ます)。
推奨(表):
| 事象 | 検知方法 | 期待挙動 | 補償/復旧 | エビデンス |
|---|---|---|---|---|
| タイムアウト | 呼出結果 | 再送 or 保留 | 手動再送手順 | ログ/キュー |
| 4xx | 応答コード | 入力不備として停止 | 業務修正 | エラーログ |
| 5xx | 応答コード | リトライ | 次回再送 | 実行履歴 |
| 仕様不一致 | 受信データ | 破棄/隔離 | 調査・連絡 | 監査ログ |
6.7 合格基準とエビデンス(必須)
| 項目 | 合格基準例 | エビデンス |
|---|---|---|
| 契約I/F | 主要パターンで契約逸脱なし | リクエスト/レスポンス記録 |
| 例外系 | 定義した例外の扱いが全て確認済 | 実行ログ |
| 運用性 | 再送・追跡が可能 | 相関ID付きログ |
| 未解決不具合 | Critical 0 | 不具合管理票 |
6.8 対象外 / 除外理由(必須)
例:
- 外部サービス自体のSLA(契約に委ねる)
- 外部側の内部仕様(ブラックボックス)
6.9 メモ / 将来課題
- 外部仕様変更リスク
- 本番でしか確認できない項目と代替策
7. 禁止事項
| 禁止 | 理由 |
|---|---|
| 外部契約情報の機微(秘密鍵・トークンの実値) | セキュリティ |
| SQL全文、物理名 | 実装依存 |
| 実装クラス/関数名 | 実装依存 |
| 個別テストケース大量列挙 | 下位(ETD)へ |
| 曖昧表現 | 合否判定不能 |
8. サンプル(最小)
---
id: ets-index
type: test
title: 外部結合テスト仕様: 全体
status: draft
part_of: []
based_on:
- tsp-overview
- esil-supplier
- eapis-inventory
- nfr-security
- sac-performance
supersedes: []
---9. 生成AIへの指示テンプレート
- 以下のルールに従って 外部結合テスト仕様(ETS) を 1 ファイル作成してください。出力は Markdown。
- 目的: 外部連携の契約境界、連携パターン、保証観点、例外時挙動(補償/再送/手動復旧)、合格基準とエビデンスを明文化する。
- 禁止: 秘密情報、SQL全文、実装クラス/関数名、クリック手順逐語列挙、個別ケース大量列挙。
本文見出し(この順)
- 概要
- 対象スコープと契約境界
- 連携パターン一覧
- 保証範囲(観点)
- テスト条件(代表条件)
- 障害・例外時の期待挙動(補償・再送・手動復旧)
- 合格基準とエビデンス
- 対象外 / 除外理由
- メモ / 将来課題