検証エキスパートコラム
テスト仕様書の作り方大公開:(第5回)デシジョンテーブル(条件網羅テク)__blog-No.45
2016年12月20日(火)
みなさん、こんにちは。
テスト仕様書の作り方大公開をお送りして早くも第5回を迎え、いよいよ核心に迫ってまいりました。そこで、今回はデシジョンテーブルの作り方及びパターン番号、パターン説明の書き方をご紹介します。
それでは実際にデシジョンテーブルを作っていきましょう。ここでは生年月日の日付妥当性チェックの部分を例として取り上げてみたいと思います。
因子と水準を見極めよう
最初に、動作記述部の確認項目と期待値をテスト条件一覧から転記します。ここは完全にテスト条件一覧と一致させるようにしてください。
次に、期待値を出すためには【具体的】に「何が」「どんな値」であることが必要なのか?を条件記述部 の因子と水準に記述します。
例えば「未成年にはお酒を販売しない」というときの「未成年」という条件は「年齢が20歳未満」というように具体化しますが、そのときの「年齢」が因子であり、「20歳未満」というのが水準になります。
言うまでもなくデシジョンテーブルはYes/Noで判定しますので、水準はYes/Noのどちらかで答えられる状態にブレイクダウンしておく必要があります。
ここまで実際にやってみた例を図-1に示しますので参考にしてください。
(図-1)
最後は根気の勝負
さてここが正念場。条件指定部と動作指定部にYes/No/eXecuteを記入していきます。
パターン1番目は[年]が[うるう年]→Yかつ[月]が1~12の範囲→Nということで、エラーになるのが期待される動作です。なので[エラーになること]のほうにXを入れます。
同様に、パターン2番目は[年]が[うるう年]→Y、[月]が1~12の範囲→Y、[月]が[小の月(2,4,6,9,11月)] →Y、[月]が[2月] →Yつまり、うるう年の2月ということで、エラーにならないのが期待される動作です。なので[エラーにならないこと]のほうにXを入れます。
ここまで実際にやってみた例を図-2に示しますので参考にしてください。
(図-2)
このように、全ての因子・水準と期待する結果のセットを漏れのないように作っていくのですが、「面倒だから」とか「わかっているから」といって、決して勘や経験に頼ってはいけません。あくまで機械的に1列ずつ組合せを作っていってください。あり得ない組合せは全部できてから除外するようにしましょう。そうでないと必ずといっていいほど抜け漏れが発生してしまいます。
さて、駆け足でテスト仕様書の書き方を説明してきましたがいかがでしたか?ここまで公開してしまったら自分の仕事がなくなってしまうのではないかとビクビクしています(汗)
これで一応、単体テスト(機能テスト)の設計ができるようになったと思います。しかしテストはここで終わりではありません。後には結合テスト・総合テストが控えています。
次回からは結合テストの考え方とテスト設計のポイントを特別にお教えします。引き続きお付き合いいただければ幸いです。
なお、検証サービスに対するお問い合わせは<お問い合わせフォーム>までお願いいたします。
ご愛読、ありがとうございました。
この連載のバックナンバー
(第1回)テスト設計の手順とセオリー
(第2回)テスト条件一覧(機能と観点の掛け算)
(第3回)テスト条件一覧(確認項目と期待値)
(第4回)デシジョンテーブル(曖昧さ排除テク)
(第5回)デシジョンテーブル(条件網羅テク)
(第6回)結合テストをどう考えるか
(最終回)結合テストの勘所