単体テスト仕様書は、プログラム単位の動作を検証するための設計ドキュメントです。仕様に対する実装の正しさを確認するために、テスト観点を整理し、シナリオと条件、データを体系的に記述することが重要です。
本記事では、以下の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 |
---|---|---|---|---|
条件A | Y | N | Y | Y |
条件B | Y | Y | N | Y |
条件C | Y | Y | Y | N |
結果X | X | |||
結果Y | X | X | X |
表例:OR条件の場合
条件 | ケース1 | ケース2 | ケース3 | ケース4 |
---|---|---|---|---|
条件A | N | Y | N | N |
条件B | N | N | Y | N |
条件C | N | N | N | Y |
結果X | X | X | X | |
結果Y | X |
データシート
ディシジョンテーブルで定義した条件に基づき、具体的な入力値・期待値を記述します。
記述内容例
- 入力値(テストデータ)
- 前提条件
- 期待結果(画面メッセージ、DB更新有無、戻り値 など)
表例:データシート
ケースID | 入力項目A | 入力項目B | 入力項目C | 前提条件 | 期待結果 |
---|---|---|---|---|---|
TC001 | 100 | test@test | 01/01 | なし | 正常終了、DB登録成功 |
TC002 | (空) | test@test | 01/01 | なし | 「必須項目です」エラー表示 |
TC003 | 100 | xxx | 01/01 | なし | 「形式エラー」メッセージ |
まとめ
- シナリオシートで階層的に整理することで、網羅性と可読性を両立できます。
- ディシジョンテーブルは、単純な組み合わせ網羅ではなく、AND/OR条件の性質に応じた効率的な網羅が重要です。
- データシートは、ディシジョンに基づいた具体的な入力・期待値を管理し、テストの再現性を担保します。
この構成で単体テスト仕様書を作成すれば、網羅性・効率性・再利用性の高いテスト設計が可能になります。
コメント