入力パラメータの境界値を特定し、境界値テストの観点を整理します。タスク分割経由時は境界値分析、単独実行時は境界値分析表を出力します。
Analyzes input parameters to identify boundary values and generate test case perspectives with confidence ratings.
/plugin marketplace add mozuq-lab/origami-lite/plugin install origami@origami-lite各機能の入力パラメータについて境界値を特定し、境界値テストのための分析表を作成します。 信号機システム(🟢🟡🔴)により、各境界値の確信度を可視化し、レビュー優先度を明確にします。
実行コンテキストに応じたファイル出力:
03_境界値分析表.md に出力(後方互換)--target 指定): 単一機能の分析を 03_境界値分析.md に出力出力先ディレクトリの決定 🔵
--output 引数が指定されている場合はそのディレクトリを使用docs/origami/{仕様書名}/ecommerce-spec.md → docs/origami/ecommerce-spec/前工程出力の確認
{出力先}/01_機能一覧.md が存在する場合は読み込み{出力先}/02_動作仕様一覧.md が存在する場合は読み込み追加ルールの読み込み
docs/rule ディレクトリが存在する場合は読み込みdocs/rule/origami ディレクトリが存在する場合は読み込み出力ディレクトリの作成
| 引数 | 説明 | 必須 | 例 |
|---|---|---|---|
| 仕様書 | 入力ファイルまたはURL | △ | docs/requirements.md |
| --output | 出力先ディレクトリ(機能ディレクトリを含む) | △ | --output docs/origami/my-spec/F-001_ログイン/ |
| --target | 対象機能ID(タスク分割経由時) | △ | --target F-001 |
引数の組み合わせによる動作:
| --target | --output | 出力ファイル名 | 用途 |
|---|---|---|---|
| なし | なし | 03_境界値分析表.md | 単独実行(全機能分析) |
| なし | あり | 03_境界値分析表.md | 単独実行(出力先指定) |
| あり | あり | 03_境界値分析.md | タスク分割経由(単一機能) |
| 優先度 | 入力 | 説明 |
|---|---|---|
| 1 | {出力先}/01_機能一覧.md | 前工程の出力(推奨) |
| 2 | {出力先}/02_動作仕様一覧.md | Must/Never項目からパラメータを特定 |
| 3 | 仕様書(.md/.txt) | 単独実行時の直接入力 |
| 4 | URL | Web上のページ |
--target オプション指定時は、以下のルールに従います:
{出力先ディレクトリ}/02_動作仕様.md のみPhase 3(analyze-boundaries)の入力制限:
| 実行モード | 入力 | 備考 |
|---|---|---|
| タスク分割経由時 | {機能ディレクトリ}/02_動作仕様.md のみ | 01・仕様書・他機能フォルダは参照禁止 |
| 単独実行時 | 動作仕様一覧 | 後方互換 |
コンテキスト分離のポイント:
02_動作仕様.md のみを参照(01_機能詳細.md は参照しない)タスク分割経由時(--target 指定時):
{機能ディレクトリ}/02_動作仕様.md の存在を確認エラー: 入力ファイルが見つかりません: {パス}/02_動作仕様.md
先に Phase 2 を実行してください:
/origami:run-task {タスクID} --phase 2
Phase 3(analyze-boundaries)はフェーズ間入力制限に従います:
| フェーズ | 入力 | 出力 |
|---|---|---|
| Phase 1 | 仕様書(対象機能部分) | 01_機能詳細.md |
| Phase 2 | 01_機能詳細.md のみ | 02_動作仕様.md |
| Phase 3 | 02_動作仕様.md のみ | 03_境界値分析.md |
| Phase 4 | 01 + 02 + 03 | 04_テストケース.md |
# 単独実行(出力先自動決定)
/origami:analyze-boundaries docs/ecommerce-spec.md
# → docs/origami/ecommerce-spec/03_境界値分析表.md に出力
# 出力先を明示的に指定
/origami:analyze-boundaries --output docs/origami/my-project/
# → docs/origami/my-project/ の前工程出力を読み込み、03_境界値分析表.md に出力
# タスク分割経由(run-taskから呼び出し)
/origami:analyze-boundaries --output docs/origami/ecommerce-spec/F-001_ログイン/ --target F-001
# → docs/origami/ecommerce-spec/F-001_ログイン/03_境界値分析.md に出力
# ※ 入力は同ディレクトリの 02_動作仕様.md のみ
入力の読み込み
パラメータの特定 以下の情報を各パラメータについて整理する:
境界値の算出 データ型に応じて以下の境界値を算出する:
数値型:
文字列型:
日付型:
配列型:
列挙型:
不明境界値の処理
境界値テストケースの生成
信号機判定
サマリー生成
出力ファイル名の決定 🔵
実行コンテキストに応じて出力ファイル名を切り替え:
IF --target オプションが指定されている THEN
出力ファイル名 = "03_境界値分析.md"
ELSE
出力ファイル名 = "03_境界値分析表.md"
END IF
| 条件 | 出力ファイル名 | 出力形式 |
|---|---|---|
| 単独実行(--targetなし) | 03_境界値分析表.md | 複数機能を一覧形式で記載 |
| タスク分割経由(--targetあり) | 03_境界値分析.md | 単一機能の分析を記載 |
| 信号 | 判定条件 | 例 |
|---|---|---|
| 🟢 青信号 | 仕様書に境界値が明示されている | 「パスワードは8文字以上32文字以下」 |
| 🟢 青信号 | データ型から自明な境界値 | 整数型の最小値0 |
| 🟡 黄信号 | 一般的なWebアプリの慣例に基づく | メールアドレス最大254文字 |
| 🟡 黄信号 | フレームワーク・DBの制約に基づく | VARCHAR(255)の最大長 |
| 🔴 赤信号 | 仕様書に記載がなく推測 | 名前の最大文字数 |
| 🔴 赤信号 | 業務ドメイン固有の制約 | 注文数量の上限 |
出力先: {出力先ディレクトリ}/03_境界値分析表.md または 03_境界値分析.md 🔵
{出力先}/03_境界値分析表.md(複数機能を一覧形式で出力){出力先}/03_境界値分析.md(単一機能の分析を出力)# 境界値分析表
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: {機能一覧.md / 仕様書}
- 総パラメータ数: X件
- 総テストケース数: X件
---
## F-001: {機能名}
### パラメータ: {パラメータ名} ({変数名})
| 項目 | 値 | 信号 | 根拠 |
|------|-----|------|------|
| データ型 | {型} | 🟢 | {根拠} |
| 必須/任意 | {必須/任意} | 🟢 | {根拠} |
| 最小値/最小文字数 | {値} | 🟢/🔴 | {根拠} |
| 最大値/最大文字数 | {値} | 🟢/🔴 | {根拠} |
| 形式/制約 | {制約} | 🟢/🟡 | {根拠} |
#### 境界値テストケース
| # | テスト観点 | 入力値 | 期待結果 | 信号 |
|---|-----------|--------|---------|------|
| BV-001-01 | 最小値 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-02 | 最小値-1 | {値} | エラー | 🟢/🟡/🔴 |
| BV-001-03 | 最小値+1 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-04 | 最大値-1 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-05 | 最大値 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-06 | 最大値+1 | {値} | エラー | 🟢/🟡/🔴 |
| BV-001-07 | 空値 | "" / null | {結果} | 🟢/🟡/🔴 |
#### 🔴項目の確認事項(該当する場合)
- **{境界値項目}**
- 確認必要: {確認が必要な内容}
- 推奨: {推奨値とその理由}
- アクション: {取るべきアクション}
---
### パラメータ: {パラメータ名2} ({変数名2})
{同様の形式で記載}
---
## F-002: {機能名}
{同様の形式で記載}
---
## サマリー
| 機能 | パラメータ数 | テストケース数 | 🟢 | 🟡 | 🔴 |
|------|------------|--------------|-----|-----|-----|
| F-001: {機能名} | X | X | X | X | X |
| F-002: {機能名} | X | X | X | X | X |
| **合計** | **X** | **X** | **X** | **X** | **X** |
---
## 要確認事項一覧(🔴項目)
| # | 機能 | パラメータ | 確認内容 | 推奨値 |
|---|------|-----------|---------|--------|
| 1 | {機能名} | {パラメータ名} | {確認内容} | {推奨値} |
| 2 | {機能名} | {パラメータ名} | {確認内容} | {推奨値} |
---
## 一般的な境界値の推奨値(参考)
以下は🔴項目への推奨値を決定する際の参考情報です:
| パラメータ種別 | 推奨最小値 | 推奨最大値 | 根拠 |
|--------------|-----------|-----------|------|
| ユーザー名 | 1文字 | 50文字 | 一般的なWebアプリ |
| パスワード | 8文字 | 128文字 | セキュリティ標準 |
| メールアドレス | 6文字 | 254文字 | RFC 5321 |
| 電話番号 | 10文字 | 15文字 | E.164形式 |
| 郵便番号(日本) | 7文字 | 8文字 | ハイフン有無 |
| 住所 | 1文字 | 200文字 | 一般的な制約 |
| 備考・コメント | 0文字 | 2000文字 | 一般的な制約 |
| 数量 | 1 | 9999 | 業務に依存 |
| 金額 | 0 | 999,999,999 | 業務に依存 |
| 年齢 | 0 | 150 | 物理的な制約 |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を境界値分析表に反映
3. `/origami:generate-cases` でテストケースを生成
--target オプション指定時は、単一機能の分析形式で出力:
# 境界値分析: F-001 {機能名}
## 生成情報
- 生成日時: {YYYY-MM-DD HH:mm}
- 入力ソース: 02_動作仕様.md
- 対象機能: F-001 {機能名}
- 総パラメータ数: X件
- 総テストケース数: X件
---
## パラメータ: {パラメータ名} ({変数名})
| 項目 | 値 | 信号 | 根拠 |
|------|-----|------|------|
| データ型 | {型} | 🟢 | {根拠} |
| 必須/任意 | {必須/任意} | 🟢 | {根拠} |
| 最小値/最小文字数 | {値} | 🟢/🔴 | {根拠} |
| 最大値/最大文字数 | {値} | 🟢/🔴 | {根拠} |
| 形式/制約 | {制約} | 🟢/🟡 | {根拠} |
### 境界値テストケース
| # | テスト観点 | 入力値 | 期待結果 | 信号 |
|---|-----------|--------|---------|------|
| BV-001-01 | 最小値 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-02 | 最小値-1 | {値} | エラー | 🟢/🟡/🔴 |
| BV-001-03 | 最小値+1 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-04 | 最大値-1 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-05 | 最大値 | {値} | 正常 | 🟢/🟡/🔴 |
| BV-001-06 | 最大値+1 | {値} | エラー | 🟢/🟡/🔴 |
| BV-001-07 | 空値 | "" / null | {結果} | 🟢/🟡/🔴 |
### 🔴項目の確認事項(該当する場合)
- **{境界値項目}**
- 確認必要: {確認が必要な内容}
- 推奨: {推奨値とその理由}
- アクション: {取るべきアクション}
---
## パラメータ: {パラメータ名2} ({変数名2})
{同様の形式で記載}
---
## サマリー
| パラメータ | テストケース数 | 🟢 | 🟡 | 🔴 |
|------------|--------------|-----|-----|-----|
| {パラメータ名1} | X | X | X | X |
| {パラメータ名2} | X | X | X | X |
| **合計** | **X** | **X** | **X** | **X** |
---
## 要確認事項一覧(🔴項目)
| # | パラメータ | 確認内容 | 推奨値 |
|---|-----------|---------|--------|
| 1 | {パラメータ名} | {確認内容} | {推奨値} |
| 2 | {パラメータ名} | {確認内容} | {推奨値} |
---
## 次のステップ
1. 🔴項目についてステークホルダーに確認
2. 確認結果を境界値分析に反映
3. 次フェーズ(generate-cases)で テストケースを生成
{出力先}/03_境界値分析表.md{出力先}/03_境界値分析.md📋 境界値分析表を作成しました
📊 分析結果サマリー:
- 総パラメータ数: X件
- 総テストケース数: X件
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
📁 出力ファイル: {出力先}/03_境界値分析表.md
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次のステップ:
- /origami:generate-cases --output {出力先} - テストケースを生成
📋 境界値分析を作成しました
📊 分析結果サマリー(F-001 {機能名}):
- 総パラメータ数: X件
- 総テストケース数: X件
- 🟢 高確信度: X件
- 🟡 中確信度: X件
- 🔴 要確認: X件
📁 出力ファイル: {出力先}/03_境界値分析.md
⚠️ 🔴項目が X件 あります。ステークホルダーに確認してください。
🔜 次フェーズ:
- generate-cases でテストケースを生成
| エラーケース | メッセージ |
|---|---|
| 入力ファイル未存在 | 「指定されたファイルが見つかりません: {ファイルパス}」 |
| 入力形式不正 | 「サポートされていない入力形式です。機能一覧、仕様書、またはURLを指定してください」 |
| 機能一覧フォーマット不正 | 「機能一覧のフォーマットが正しくありません。01_機能一覧.md を確認してください」 |
| 入力ファイル空 | 「入力ファイルが空です」 |
| パラメータ未検出 | 「入力パラメータが見つかりませんでした。仕様書の内容を確認してください」 |
境界値分析は同値分割法と組み合わせて使用すると効果的です:
有効同値クラス: 正常な入力値の範囲
無効同値クラス: エラーとなる入力値の範囲
境界値に加えて、以下の特殊値も考慮します:
v3.1.0 以降、タスク分割経由時(--target オプション指定時)は入力が厳密に制限されます:
| バージョン | 入力 | コンテキストサイズ |
|---|---|---|
| v3.0.x以前 | 仕様書 + 前工程出力すべて | 増加する |
| v3.1.0以降 | 02_動作仕様.md のみ | 一定 |
移行時の注意:
01_機能詳細.md を参照しません02_動作仕様.md)に含まれている必要があります--target なし)の動作は変更ありません