はじめに
テストについて、まったく勉強したことがありませんでした。
そのため、最近本を読み始め、自分用の備忘録と練習も兼ねて、記事を書こうと思いました。
【この1冊でよくわかる】 ソフトウェアテストの教科書 [増補改訂 第2版] を参考に記載します。
この記事の目的
デシジョンテストについて記載します。
毎回本を読み返すのが手間なので、ざっと手順を記載しておきます。
ですので、思い出せればOK、やり方がなんとなくわかればOK、というクオリティで記載します。
しかし前述の通り、テストについての知識がほとんどないので、誤りがあればご指摘いただけますと幸いです。
デシジョンテーブルテストとは
複数の条件によって決まるソフトウェアの動作を一覧できる表を用いて行うテストのことです。
この説明ではよくわからないので、サンプルを下記に記載します。
以下は、楽天の会員ランクの条件です。
ランク | 条件 |
---|---|
レギュラー | 条件なし |
シルバー | 過去6ヶ月で200ポイント以上、かつ2回以上ポイントを獲得 |
ゴールド | 過去6ヶ月で700ポイント以上、かつ7回以上ポイントを獲得 |
プラチナ | 過去6ヶ月で2,000ポイント以上、かつ15回以上ポイントを獲得 |
ダイヤモンド | 過去6ヶ月で4,000ポイント以上、かつ30回以上ポイントを獲得、かつ楽天カードを保有 |
これに対して、以下のようなデシジョンテストが作成されるイメージです。
デシジョンテーブルを見やすくする
楽天会員のランク分けでも、こんな表になるので、条件が増えたらと思うとゾッとします。
ですので、以下の観点でデシジョンテーブルを見やすくしたいと思います。
- 矛盾している条件はないか
- 表を簡略化できないか
- 関連性が弱い条件はないか
実際に、楽天カードの例でやってみます。
矛盾している条件
こちらは事前に省略していますが、「199ポイント以下、かつ200ポイント以上」を満たすことはないので、省略可能ということになります。
関連性が弱い条件
まずこちらを見たいと思います。
「楽天カードを保有」という条件は、ダイアモンドランクにしか影響を与えません。
ですので、こちらの表を分割しようと思います。
表を簡略化する
例えば、199ポイント以下はその後の条件「何回ポイントを獲得したか」「楽天カードを保有しているか」に関わらず、すべてレギュラーです。
こういう「なんでもいい条件」はまとめてしまいます。
別の書き方
ルールを Y/N の二択で書いてきました。
しかし、これを条件で書くことも可能です。
イメージは下記のようになります。
この時、「2と3」および「4と5」は、「楽天カードを保有しているか」という条件に関わらず同じ結果です。
そのため、まとめることができます。
これを全ケースですると、テストケースの数は激減します。
まとめ
以上が、デシジョンテストを作成する大まかな手順です。
これだとテスト漏れが少なそうなので、余力がある時に実務の傍らで練習したいと思います。