- 技術 💻
テスト仕様書の書き方|テストケースの記入例と観点の洗い出し方
テスト仕様書とは、「何を、どんな条件で、どう操作したら、どうなれば正しいか」を一覧にした文書です。1行が1つのテストケースで、誰が実施しても同じ手順で確認でき、同じ基準で合否を判断できるように書くことが目的です。
書き方の型はシンプルですが、難しいのは「どんなテストケースを用意すれば十分か」を決めることです。この記事では、必要な項目と書き方を整理したうえで、会員登録画面を例にした記入例と、同値分割・境界値分析・デシジョンテーブルといったテストケースを漏れなく洗い出す技法を解説します。最後に、レビューで使えるチェックリストも紹介します。
テスト仕様書の早見表
| 項目 | 内容 |
|---|---|
| 目的 | 誰が実施しても同じ手順・同じ基準で確認できるようにする |
| 元にする文書 | 要件定義書、基本設計書、詳細設計書(テストの種類による) |
| 1行の単位 | 1つのテストケース(1つの確認したいこと) |
| 必須の項目 | テストID、観点、前提条件、手順、入力値、期待結果、実施結果 |
| 洗い出しの技法 | 同値分割、境界値分析、デシジョンテーブル、状態遷移 |
| よくある失敗 | 期待結果があいまい、正常系しかない、1行に複数の確認を詰め込む |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「テスト仕様書の書き方|テストケースの記入例と観点の洗い出し方」
テスト仕様書の項目
| 項目 | 書く内容 | 例 |
|---|---|---|
| テストID | 一意の番号 | REG-012 |
| 対象の機能 | どの画面・機能か | 会員登録 > パスワード |
| テスト観点 | 何を確認するためのテストか | パスワードの最小文字数 |
| 前提条件 | 実施する前の状態 | 未登録のメールアドレスを用意している |
| 手順 | 操作の順番 | ①会員登録画面を開く ②各項目を入力 ③「登録」を押す |
| 入力値 | 具体的な値 | パスワード:abcd123(7文字) |
| 期待結果 | 正しい場合にどうなるか | 「パスワードは8文字以上で入力してください」と表示され、登録されない |
| 実施結果 | OK / NG | NG |
| 実施日・実施者 | いつ、誰が | 2026/10/05 佐藤 |
| 備考・不具合番号 | NGの場合の管理番号など | BUG-231 |
| 要件ID | どの要件を確認しているか | FR-003 |
要件IDの列を設けておくと、「すべての要件に対応するテストがあるか」を確認できます(トレーサビリティ)。要件定義書で要件IDを付けておくと、ここで活きてきます。
期待結果の書き方
テスト仕様書で最も大切なのが期待結果です。期待結果があいまいだと、実施する人によって合否の判断が変わってしまいます。
| あいまいな期待結果 | 具体的な期待結果 |
|---|---|
| 正しく登録される | 完了画面に「会員登録が完了しました」と表示され、登録したメールアドレス宛に確認メールが届く。会員一覧に1件追加される |
| エラーになる | パスワード欄の下に「パスワードは8文字以上で入力してください」と赤字で表示され、画面は遷移しない |
| 正しく計算される | 合計金額が「5,500円(税込)」と表示される |
| 問題なく動く | (書かない。何を確認するかを具体的にする) |
期待結果には、画面の表示だけでなく、データの状態(登録されたか、されていないか)も書くと、確認漏れを防げます。エラーの場合は、「エラーが表示される」だけでなく「登録されない」ことも確認するのがポイントです。
記入例:会員登録画面
次の仕様の、パスワードの項目を例にします。
パスワード:必須。8文字以上64文字以下。英字と数字をそれぞれ1文字以上含む。
| ID | 観点 | 入力値(パスワード) | 期待結果 |
|---|---|---|---|
| REG-010 | 必須 | (空) | 「パスワードを入力してください」と表示され、登録されない |
| REG-011 | 最小文字数(境界:下限の1つ下) | abcd123(7文字) |
「8文字以上で入力してください」と表示され、登録されない |
| REG-012 | 最小文字数(境界:下限) | abcd1234(8文字) |
登録され、完了画面が表示される |
| REG-013 | 最大文字数(境界:上限) | 英数字64文字 | 登録され、完了画面が表示される |
| REG-014 | 最大文字数(境界:上限の1つ上) | 英数字65文字 | 「64文字以下で入力してください」と表示され、登録されない |
| REG-015 | 文字の種類(英字のみ) | abcdefgh |
「英字と数字を含めてください」と表示され、登録されない |
| REG-016 | 文字の種類(数字のみ) | 12345678 |
「英字と数字を含めてください」と表示され、登録されない |
| REG-017 | 文字の種類(大文字と数字) | ABCD1234 |
登録され、完了画面が表示される |
| REG-018 | 全角文字 | abcd1234 |
仕様を確認(許可しないなら、エラーが表示され、登録されない) |
| REG-019 | 前後の空白 | abcd1234 |
仕様を確認(空白を除くのか、エラーにするのか) |
REG-018とREG-019のように、テストケースを考える中で、仕様が決まっていない点が見つかることがあります。これはテスト仕様書を作る大きな価値の1つです。見つけたら、実施の前に設計者や顧客に確認し、仕様書にも反映します。
テストケースを洗い出す4つの技法
「思いついたものを書く」だけでは、漏れが出たり、同じようなケースばかり増えたりします。次の技法を使うと、少ない件数で、漏れなくテストケースを作れます。
1. 同値分割
入力値を、同じ結果になるグループ(同値クラス)に分け、各グループから代表の値を1つずつ選ぶ方法です。
| グループ | 範囲 | 代表の値 | 結果 |
|---|---|---|---|
| 短すぎる(無効) | 0〜7文字 | 5文字 | エラー |
| 正しい(有効) | 8〜64文字 | 20文字 | 登録される |
| 長すぎる(無効) | 65文字以上 | 80文字 | エラー |
同じグループの値は同じ動きをするはずなので、20文字で確認できれば、30文字や40文字を個別に確認する必要はありません。
2. 境界値分析
不具合は、グループの境目で起きやすいことが知られています。「8文字以上」を「8文字より大きい(>)」と実装してしまう、といった間違いです。そこで、境目とその両隣をテストします。
| 境界 | テストする値 |
|---|---|
| 下限 | 7文字(エラー)、8文字(OK) |
| 上限 | 64文字(OK)、65文字(エラー) |
同値分割と組み合わせるのが基本です。記入例のREG-011〜014は、この考え方で作っています。
3. デシジョンテーブル
複数の条件の組み合わせで結果が変わる場合に使います。次の送料の仕様を例にします。
通常の送料は500円。購入金額が5,000円以上、または会員ランクがゴールドなら送料無料。ただし、離島への配送は常に送料1,500円。
| 条件・結果 | ケース1 | ケース2 | ケース3 | ケース4 | ケース5 |
|---|---|---|---|---|---|
| 購入金額が5,000円以上 | Y | Y | N | N | ― |
| ゴールド会員 | Y | N | Y | N | ― |
| 離島への配送 | N | N | N | N | Y |
| 送料 | 0円 | 0円 | 0円 | 500円 | 1,500円 |
表にすると、条件の組み合わせが漏れなく見えるうえ、「離島でゴールド会員の場合は?」といった仕様のあいまいな点にも気づけます(ここでは「常に1,500円」なので、ケース5にまとめています)。
4. 状態遷移
状態によって、できる操作が変わる機能に使います。注文の例です。
| 今の状態 \ 操作 | 支払う | 発送する | キャンセルする |
|---|---|---|---|
| 注文受付 | → 支払済 | ✕(できない) | → キャンセル済 |
| 支払済 | ✕ | → 発送済 | → キャンセル済(返金) |
| 発送済 | ✕ | ✕ | ✕ |
| キャンセル済 | ✕ | ✕ | ✕ |
表のすべてのマス(できる操作と、できない操作の両方)がテストケースになります。「発送済みの注文をキャンセルしようとしたらどうなるか」のような、できないはずの操作の確認が漏れやすいため、表で洗い出すのが効果的です。
テストの種類による書き分け
| テストの種類 | 元にする文書 | 確認すること | 仕様書の粒度 |
|---|---|---|---|
| 単体テスト | 詳細設計書 | 1つの関数・クラスが正しく動くか | 細かい(多くは自動テストのコードで表す) |
| 結合テスト | 基本設計書 | 画面・API・DBなどを組み合わせて正しく動くか | 画面や機能の単位 |
| システムテスト | 要件定義書 | システム全体として要件を満たすか。性能・セキュリティなども | 業務の流れの単位 |
| 受け入れテスト | 要件定義書(受け入れ基準) | 利用者の業務で使えるか | 業務のシナリオの単位 |
単体テストは、JUnitなどの自動テストのコード自体が仕様書の役割を果たすことが多くなっています。その場合も、「どんな観点でテストしたか」を一覧にしておくと、レビューがしやすくなります。
よくある書き方の改善例
| 改善前 | 問題点 | 改善後 |
|---|---|---|
| 「登録機能を確認する」 | 何をもってOKとするかがわからない | 観点・入力値・期待結果に分けて書く |
| 1行に「入力チェックとDB登録とメール送信を確認」 | NGのとき、どこが悪いのかわからない | 1行に1つの確認にする |
| 「適当な値を入力」 | 実施する人によって値が変わる | 具体的な値を書く(abcd1234) |
| 正常系のケースだけ | エラー時の動きが確認されない | 異常系・境界値・状態遷移のケースを追加 |
| 「前のテストの続きから」 | 順番を変えると実施できない | 前提条件に必要な状態を書く |
テスト仕様書のレビューチェックリスト
| 観点 | チェック項目 |
|---|---|
| 網羅性 | すべての要件(要件ID)に、対応するテストケースがあるか |
| 網羅性 | 正常系だけでなく、異常系・境界値のケースがあるか |
| 網羅性 | 条件の組み合わせは、デシジョンテーブルで漏れなく洗い出したか |
| 網羅性 | 状態によって操作が変わる機能で、「できない操作」を確認しているか |
| 具体性 | 入力値が具体的な値で書かれているか |
| 具体性 | 期待結果が、誰が見ても同じ判断になるように書かれているか |
| 具体性 | 期待結果に、画面の表示だけでなくデータの状態も含めているか |
| 独立性 | 1つのケースで確認していることは1つか |
| 独立性 | 前提条件が書かれ、ほかのケースの順番に依存していないか |
| 実施性 | テストデータや環境の準備方法が明確か |
| 保守性 | 仕様の変更があったとき、影響するケースを探せるか(要件IDとの対応) |
AIを使ってテストケースを作るコツ
AIは、仕様からテストケースの候補を洗い出すのが得意です。
- 仕様をそのまま渡し、技法を指定する:「次の仕様について、同値分割と境界値分析でテストケースを作って。表の列はID・観点・入力値・期待結果」
- 仕様のあいまいな点も挙げてもらう:「テストケースを作る中で、仕様が決まっていない点があれば一覧にして」
- 最終的な判断は人が行う:AIの出力を、業務の知識と照らし合わせてレビューし、不足しているケースを追加する
よくある質問
Q. テストケースは何件くらい必要ですか? A. 件数に決まりはありません。大切なのは、要件と観点の網羅性です。同値分割や境界値分析を使うと、件数を抑えながら漏れを減らせます。
Q. Excelとテスト管理ツールのどちらで管理すればいいですか? A. 小規模ならExcelやスプレッドシートで十分です。件数が多い、複数の人で並行して実施する、実施の履歴を残したい場合は、TestRailやQase、Backlogなどのテスト管理ツールを検討します。
Q. 自動テストがあれば、テスト仕様書は不要ですか? A. 単体テストは、自動テストのコードが仕様書の役割を果たせます。一方、結合テストやシステムテスト、受け入れテストでは、人が確認する観点や業務のシナリオを文書にしておくことが、顧客との合意やレビューに役立ちます。
まとめ
- テスト仕様書は、誰が実施しても同じ手順・同じ基準で確認できるようにするための文書
- 最も大切なのは期待結果。画面の表示とデータの状態を具体的に書く
- 同値分割・境界値分析で入力値を、デシジョンテーブルで条件の組み合わせを、状態遷移でできる操作・できない操作を洗い出す
- 1行に1つの確認、具体的な入力値、前提条件を書く
- 要件IDで要件とテストを対応づけ、漏れがないかを確認する
- テストケースを作る中で見つかった仕様のあいまいな点は、実施の前に確認する
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「テスト仕様書の書き方|テストケースの記入例と観点の洗い出し方」
株式会社RJCでは、要件定義からテストまで、品質を作り込むための考え方を仲間と学び合っています。こうした知識を共有しながら、一緒に成長を楽しんでいます。
株式会社RJC ― SI事業・SES事業・AI駆動開発。未経験からエンジニアに育てるのが得意な会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。