単体テスト仕様書の書き方

単体テスト仕様書は、プログラム単位の動作を検証するための設計ドキュメントです。仕様に対する実装の正しさを確認するために、テスト観点を整理し、シナリオと条件、データを体系的に記述することが重要です。

本記事では、以下の3つのシート構成を推奨します。

  • シナリオシート(操作や機能を階層的に表現し、テスト観点を記載する)
  • ディシジョンテーブルシート(条件分岐を網羅的に整理)
  • データシート(入力データや期待値を管理)

シナリオシート

テスト対象の処理を、操作や機能を階層的に表現し、テスト観点を記載します。
確認結果(OK/NG)、確認日、確認者の列もあると良いでしょう。

表例:画面

大分類中分類小分類テスト観点
初期表示画面遷移メニューから遷移初期表示の値が正しいか
他画面から遷移引継ぎ項目の値が正しいか
レイアウトレイアウト・デザインが画面定義書通りか
Tab制御Tabキー押下でz方式で移動するか
プルダウン内容セット○○のプルダウンが表示されるか
デフォルト○○のプルダウンの初期選択が仕様書通りか
項目定義項目ごとの入力値制限入力項目の型、フォーマット、長さの定義が正しいか
[○○]ボタン(画面遷移ボタン名)画面遷移○○画面が立ち上がること ※現画面が消えて遷移/新ウィンドウ表示/モーダル表示
画面戻り遷移した画面で入力・選択した内容が、本画面に反映されるか
検索ボタン入力チェック入力チェックが正しくされるか
検索処理ヘッダ表示[○○]項目 ※画面項目名
△△の非活性制御
ページングページングが有効となる。
一覧検索条件に応じた結果が表示される。※[検索パターン]シートを参照
表示対象(パターン少)
表示対象(パターン多)
並び順
0件制御
上限超過制御
非活性制御
○○の表示制御
登録ボタン入力チェック入力チェックが正しくされるか
ワーニング○○○チェック処理ワーニングメッセージでOKの処理
ワーニングメッセージでキャンセルの処理
対象確認チェック対象確認一覧表のラジオボタンを選択した行に対して動作することを確認
チェック対象外確認一覧表のラジオボタンを選択した行に対して動作することを確認
選択なし確認選択0件の確認
登録更新処理正常処理○○テーブルが新規登録される
別紙のパターンに応じた結果となる
※[登録パターン]シートを参照
正常処理コミット確認
異常処理個別のエラー処理
ロールバック確認
DB異常制御
[○○]ボタン(CSV出力)書き込み時のモード(ファイル新規作成、更新上書き、更新追記)が設計通りであることを確認している。
書き込み時の項目の編集要領が設計通りであることを確認している。
書き込み時の項目の編集形式が設計通りであることを確認している。(例: 文字列、日付、金額、数値、小数、正負、右/左寄せ、0/空白埋めなど)
ファイル形式が設計通りであることを確認している。(例: 項目数、レコード長、固定長/可変長、カンマ/タブ/スペース区切りなど)
[○○]ボタン(CSV入力)ファイル異常ファイル異常(読込時:ファイルが存在しない、ファイルがロックされている)
ファイル形式不正ファイル形式
0件処理0件制御
入力チェック入力チェックが正しくされるか
ワーニング○○○チェック処理ワーニングメッセージでOKの処理
ワーニングメッセージでキャンセルの処理
対象確認選択なし確認選択0件の確認
登録更新処理正常処理○○テーブルが新規登録される
別紙のパターンに応じた結果となる
※[登録パターン]シートを参照
コミット確認
異常処理個別のエラー処理
ロールバック確認
エラーメッセージが表示される
権限初期表示○○情報が表示されない
検索○○データしか検索できない
その他正常独自のログ出力(標準ログ出力はF/Wおよび共通クラスで実装されているためテスト不要)
その他異常独自の異常系処理

表例:バッチ(IF受信)

大分類中分類小分類テスト観点
登録更新処理0byteファイルが0件である (0byte)
0件処理データが0件である (ヘッダーやフッターなど制御レコードしかない)
正常処理別紙のパターンに応じた結果となる
※[登録パターン]シートを参照
登録データと想定結果を比較して一致する
コミット確認
異常処理ファイル形式が異なる(固定長ファイルはファイル長違い、区切りファイルは列数が異なる)
入力項目の型、フォーマット、長さの定義が正しいか
ロールバック確認
エラーメッセージが表示される
ファイル作成処理ファイル操作ファイル格納場所
同一ファイル
ロック
データ内容ファイル作成処理(データ内容)
ファイル作成処理(編集形式)例:文字列、日付、金額、数値、小数、正負、右/左寄せ、0/空白埋めなど
ファイル作成処理(ファイル形式)例:項目数、レコード長、固定長/可変長、カンマ/タブ/スペース区切りなど
その他正常独自のログ出力(標準ログ出力はF/Wおよび共通クラスで実装されているためテスト不要)
その他異常独自の異常系処理

表例:バッチ(IF送信)

大分類中分類小分類テスト観点
前処理入力パラメータ入力パラメータの不正チェック
登録更新処理(送信管理テーブル)処理対象なし①送信対象なしの正常終了
処理対象なし②本処理における処理対象なしの正常終了
正常処理フラグが更新され、処理完了となる。
異常処理テーブル更新されない。
登録更新処理(送信管理テーブル以外)正常処理別紙のパターンに応じた結果となる
※[登録パターン]シートを参照
登録データと想定結果の比較
コミット確認
異常処理ロールバック確認
エラーメッセージが表示される
ファイル作成処理ファイル操作ファイル格納場所
同一ファイル
ロック
データ内容ファイル作成ファイル作成処理(データ内容)
ファイル作成処理(編集形式)例:文字列、日付、金額、数値、小数、正負、右/左寄せ、0/空白埋めなど
ファイル作成処理(ファイル形式)例:項目数、レコード長、固定長/可変長、カンマ/タブ/スペース区切りなど
新旧比較新旧比較確認(IF送信処理のみ)
0件処理対象なしの0件ファイル作成
ファイル送信処理送信ファイルファイル送信
ファイルロック中
入力パラメータ入力パラメータの不正チェック
ファイル保存対象ファイルのバックアップ
ログイン不正ログインNG
伝送NG伝送時の異常(相手サーバー不通、書き込みNGなど)
後処理戻り値正常正常戻り値
異常異常戻り値(条件付き正常終了)
異常戻り値(プログラムエラー)
異常戻り値(データ不正エラー)
異常戻り値(MFTファイルエラー)
ファイル保存対象ファイルのバックアップ
その他正常独自のログ出力(標準ログ出力はF/Wおよび共通クラスで実装されているためテスト不要)
その他異常DB更新順(送信処理は送信管理テーブルの更新から行う)
独自の異常系処理

ディシジョンテーブルシート

条件分岐を整理し、網羅的かつ効率的にテストパターンを抽出するために使用します。
[検索]パターンシートや、[登録]パターンシートの補足として使用します。

記述のポイント

  • 単純なY/Nの全組み合わせを作るとケースが膨大になり、現実的ではありません。
  • 効率よく網羅するために、条件の論理構造(AND/OR)を考慮します。
  • 条件にA,B,Cなど3値以上とるものは、Y/Nにこだわらずとりうる値で表を作ると見やすくなります。

コツ

  • 条件がANDでつながる場合
    • すべてYのケース
    • 条件1つだけNのケース(全パターン)
  • 条件がORでつながる場合
    • すべてNのケース
    • 条件1つだけYのケース(全パターン)

表例:AND条件の場合

条件ケース1ケース2ケース3ケース4
条件AYNYY
条件BYYNY
条件CYYYN
結果XX
結果YXXX

表例:OR条件の場合

条件ケース1ケース2ケース3ケース4
条件ANYNN
条件BNNYN
条件CNNNY
結果XXXX
結果YX

データシート

ディシジョンテーブルで定義した条件に基づき、具体的な入力値・期待値を記述します。

記述内容例

  • 入力値(テストデータ)
  • 前提条件
  • 期待結果(画面メッセージ、DB更新有無、戻り値 など)

表例:データシート

ケースID入力項目A入力項目B入力項目C前提条件期待結果
TC001100test@test01/01なし正常終了、DB登録成功
TC002(空)test@test01/01なし「必須項目です」エラー表示
TC003100xxx01/01なし「形式エラー」メッセージ

まとめ

  • シナリオシートで階層的に整理することで、網羅性と可読性を両立できます。
  • ディシジョンテーブルは、単純な組み合わせ網羅ではなく、AND/OR条件の性質に応じた効率的な網羅が重要です。
  • データシートは、ディシジョンに基づいた具体的な入力・期待値を管理し、テストの再現性を担保します。

この構成で単体テスト仕様書を作成すれば、網羅性・効率性・再利用性の高いテスト設計が可能になります。

コメント

タイトルとURLをコピーしました