第271回: 「ALTAのテキストをつくろう」31 (デシジョンテーブルテスト/後編)
◀前の記事へ 次の記事へ▶
≡ はじめに
前回は、「3. テスト技法」の「3.2 ブラックボックステスト技法」の「3.2.3 デシジョンテーブルテスト」の中編として、デシジョンテーブルテストの適用、制限/注意事項について書きました。
前回の復習は以下で模擬試験問題の確認を通して行います。
今回はJSTQBのALTAシラバスの「3.2.3 デシジョンテーブルテスト」の後編として、「デシジョンテーブルテストのカバレッジ、検出できる欠陥の種類」について書きます。
≡ 前回の復習
以下は前回出題したJSTQB ALTAの模擬試験問題を𝕏にポストした結果です。
投票の結果、4の「N, N」が48.6%と最も多く、正解も4です。
落ち着いて考えれば、選択肢1と2は、それぞれすでに、デシジョンテーブルの列1と列2(デシジョンテーブルでは列のことをルールと呼びます)に現れています。また、選択肢3は、「N, Y」すなわち、「100で割り切れず400で割り切れる数」ということになりますから、そんな数はあり得ません。
ということで、残る4が正解となり、4で割り切れ、100でも400でも割り切れない、例えば今年の2024年のような年とわかるのですが、正答率は50%を割ってしまいました。
ロジックが難しいわけではなく、このくらい簡単なロジックでも考えるのが面倒になってしまうのだと思います。
前回はヒントとして、以下の図を示しました。
こちらの図をデシジョンテーブルをつくる前につくるとデシジョンテーブルの間違いが減ります。
テスト対象がもっと複雑なロジックのときには、デシジョンツリーでは整理しきれなくなりますので、CFD法、もしくは、原因結果グラフを使用して、デシジョンテーブルをつくります。
復習は以上とし、今回noteのテーマである「デシジョンテーブルテストのカバレッジ、検出できる欠陥の種類」に移ります。
≡ デシジョンテーブルテストのカバレッジ、検出できる欠陥の種類
JSTQBのALTAシラバスの「デシジョンテーブルテストのカバレッジ、検出できる欠陥の種類」の解説です。
■ デシジョンテーブルテストのカバレッジ
ALTAのシラバスでは、まず、一般的なカバレッジ基準について書いてあります。シラバスの記述を引用します。
こちらは簡単ですね。前回のうるう年のデシジョンテーブルで考えてみましょう。
黄色の最下行は、条件に合致する値(西暦年)のサンプルです。(デシジョンテーブルとしては不要な行です)
上記のデシジョンテーブルにはルール1からルール4まで4つのルールがあります。
2000年と2100年の2つのテストを実施すれば、4つのルールのうち2つをテストしたのですから、カバレッジは、2/4*100=50%です。
ALTAのシラバスでは、この、一般的なカバレッジ基準に加えて拡張指定デシジョンテーブルの場合ついて書いてあります。
「拡張指定デシジョンテーブル」とは、「条件が個別の要素または要素のセットを表す複数の値を持つことを許容するデシジョンテーブル」のことです。
そして、拡張指定デシジョンテーブルの場合には、境界値分析と同値分割法を、デシジョンテーブル技法と組み合わせることができるということです。
たとえば、「お酒は二十歳になってから」についてデシジョンテーブルをつくってみます。
同値分割結果を追加してみます。
ルールの数は変わりませんが、それぞれの拡張指定に対して有効同値パーティションの代表と無効同値パーティションの代表をテストするので、このデシジョンテーブルのカバレッジを100%とするテストケース数は4となります。
境界値分析も同様です。
境界値分析の場合、2つの値を用いる方法のほうでは4ケース、3つの値を用いる方法のほうでは12ケース必要とわかりました。
実際のテストでは、上記の12ケースをカバレッジアイテムとせずに、テスト設計時に知恵を絞って重複するものを取り去ったり、不要なケースを削除するなどして、適切なカバレッジアイテムを設定します。
■ デシジョンテーブルテストの検出できる欠陥の種類
シラバスの記載が短いので全文引用します。
重要な箇所は太字にした「最も一般的な欠陥は、アクションの欠落(ある状況下で実際に起こるべきことに関する情報がない)と矛盾」のところです。
「アクションの欠落」を「ある状況下で実際に起こるべきことに関する情報がない」と書いています。これは、実装漏れ、もしくは、if文のロジック記載漏れのことです。
「矛盾」の方は、15歳と入力したのに「お酒を飲んでよし」という出力がでてしまうなどです。
今年(2024年)のうるう日には「自動車の免許更新システム(日本)」、「スギ薬局の処方箋の管理システム(日本)」、「セルフ給油機使えず(ニュージーランド)」と、うるう日が原因のシステム障害が発生しました。
ということで、うるう年程度の簡単なロジックであっても考慮漏れやそもそも実装していない等々バグが発生しますので、テスト対象にロジック部分があればデシジョンテーブルをつくってテストするようにします。
≡ JSTQB ALTA試験対策
いつものことですが、まずは、「学習の目的」を確認します。
「K4」なので「理解」して「適用」できるだけではなく「分析」まで求められる重要な項目ということです。試験問題には、デシジョンテーブルテストを適用できるかどうかを問う問題が出ると思います。
答えは次回に書きます。
≡ おわりに
今回は、「デシジョンテーブルテストのカバレッジ、検出できる欠陥の種類」がテーマでした。
次回は、「3.2.4 状態遷移テスト」について書きます。
この記事が気に入ったらサポートをしてみませんか?