テスト勉強 "ソフトウェアテストの教科書" メモ2

デシジョンテーブル
==================

 ソフトウェアが動作する条件の中でどのようなケースがあるかを把握、そのケースへの対応を確認するためにデシジョンテーブルというのが使える。

 たとえばある映画館で通常1800円、五歳以下無料、65歳以上は半額、毎月一日は1000円とし、複数条件がかぶる場合は安い割引のサービスが適用されるとする。その場合↓の表のようなデシジョンテーブルが作れる(以上、以下の英語表現の細かい部分は抜きで)。上三行が条件、下四行が適用されるアクション(映画鑑賞代)である。
+-------+-------+-------+-------+-------+-------+-------+-------+-------+

|  | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|under 5| Y | N | Y | N | Y | N | Y | N |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|over 65| Y | Y | N | N | Y | Y | N | N |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
|1st day| Y | Y | Y | Y | N | N | N | N |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| | | | | | | | | |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 0 | Y | | Y | | Y | | Y | |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 900 | | Y | | | | Y | | |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 1000 | | | | Y | | | | |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+
| 1800 | | | | | | | | Y |
+-------+-------+-------+-------+-------+-------+-------+-------+-------+


基本的には上の表のようになるが、見やすくするために消していいものがある。
・矛盾した条件(五歳以下かつ65歳以上など
・今回の条件では五歳以下ならもうほかの条件に関わらずに鑑賞代が決まる。五歳以下がYの条件を一つにまとめてしまえる(…だが、テストケースとしては一つにまとめずに、条件重複がどう処理されるかという検証を入れておいたほうがよさそう)


状態遷移図
==========

 言わずもがな。たとえばフォームの遷移を表すときは、例外処理まできっちり作っておきましょう。そういった通常動作の外まで動作の洗い出しをするのに有効。


組み合わせテスト
===============

 複数条件を組み合わせて網羅する。テストコストを考えて、すべてのケースを列挙するのではなく二因子網羅などを使うというのが手法。二因子間網羅でのバグ検出率は70-90%ほどという知見がある。これを三因子間などに上げればやはりバグ検出率は上がるが、それはテストコストとのトレードオフ。
 二因子間網羅の表を作るのは手間があるが、それをやってくれるツールがある。
comment: 0