テスト仕様書とは、「何を、どんな条件で、どう操作したら、どうなれば正しいか」を一覧にした文書です。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期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?