見出し画像

第281回: 「ALTAのテキストをつくろう」36 (クラシフィケーションツリー技法/中編)

◀前の記事へ 次の記事へ▶︎


≡ はじめに

前回は、「3. テスト技法」の「3.2 ブラックボックステスト技法」の「3.2.5 クラシフィケーションツリー技法」の前編として、「クラシフィケーションツリー技法の定義」について書きました。

前回の復習は以下で模擬試験問題の確認を通して行います。
今回はJSTQBのALTAシラバスの「3.2.5 クラシフィケーションツリー技法」の中編として、「クラシフィケーションツリー技法の適用、制限/注意事項」について書きます。



≡ 前回の復習

以下は前回出題したJSTQB ALTAの模擬試験問題を𝕏にポストした結果です。


𝕏によるアンケート結果
𝕏の問題文続き

投票の結果、4の「「令和」と「6」はどちらもクラス」が55%と最も多く、正解も、4です。
投票数が20票と若干少なめなのは、5月5日はゴールデンウィークの真っ最中だったからでしょうか。

まずは、クラシフィケーションツリーを作ってみます。

入力日のクラシフィケーションツリー

下の格子部分はとりあえず無視してください。(今回のnoteの後半に出てきます)
「令和」と「6」は、選択する値ですから、どちらも「クラス」です。

2を、選択した人は、「令和という集合の要素として6年がある」と考えたのかもしれません。
クラシフィケーションツリー技法の場合には、入力のみにフォーカスして考えるのがコツです。

クラスが分かったところで、クラシフィケーションは何かといえば「年号」と「年」です。
なお、「入力日」は「トップノード」または単に「Rootルート」と呼びます。

前回も書きましたが、クラスの下にクラスやクラシフィケーションが来ても良いです。
しかしながら、まずは、最下段がクラスで、その上の木構造による分類がクラシフィケーションという構造にすることをおすすめします。
そして、慣れてきたら、これはクラスなんじゃないか?と厳密に作っていけばよいと思います。

にしさんのNGTは何も区別していませんが役に立っていますよね。それと同じで、クラスかクラシフィケーションかで侃侃諤諤するよりは、より良いモデル作成に知恵を使うほうが有意義だからです。

クラシフィケーションツリーの表記方法はいろいろあるのですが、ISO/IEC/IEEE 29119 Part.4のクラシフィケーションツリーのスタイルは、クラシフィケーションを四角の枠で囲って、クラスは囲わない、ノード間は直線でつなぐ(カギ線ではない)ものでした。

文だと分かりにくいと思うので、その形式で描きなおしたものを張っておきます。

ISO/IEC/IEEEのクラシフィケーションツリーのスタイル

せっかくの国際標準なので、この形で描くのが良いと思ます。
しかしながら、描画ツールの都合もあると思います。そこで、使う人の間で書き方が共通化されているか、凡例を載せておけばいいんじゃないかと思います。

ご参考に、GIHOZで同じものを作ってみました。

GIHOZのスタイル

たったこれだけで、画面いっぱいになってしまいました。

復習は以上とし、今回のnoteのテーマである「クラシフィケーションツリー技法の適用、制限/注意事項」に移ります。



≡ クラシフィケーションツリー技法の適用、制限/注意事項


■ クラシフィケーションツリー技法の適用

以下は、JSTQBのALTAシラバスの「クラシフィケーションツリー技法の適用」の全文です。

テストアナリストはクラシフィケーションツリーを作成することで、関心のあるパラメーター(クラシフィケーション)と同値パーティション(クラス)を識別できる
クラシフィケーションツリー図をさらに分析することで、可能な境界値を識別できる。そして、特に関心の対象となる、または無視可能となる入力の特定の組み合わせ(例えば、両立しないことによる)を識別できる。作成したクラシフィケーションツリーは、同値分割法、境界値分析、またはペアワイズテストに役立てることができる。

大事なところは、太字の「パラメーター(クラシフィケーション)と同値パーティション(クラス)を識別できる」のところです。そして、これは、前回やっつけてしまいました。
このnoteの読者ならもうクラシフィケーションとクラスを間違えることは無くなっているはずです。

前回以下の文を書きました。

クラシフィケーションツリー技法は、同値分割法の拡張版」と思ってもらうほうが良いです。

つまり、「クラシフィケーションツリー技法 = 同値分割法」です。それを証拠に、クラシフィケーションツリーを同値図に書きなおしてみます。(同じものなら描きなおせるはずです)

お題は同じもので左右に置きますね。

クラシフィケーションツリーと同値図は同じ(表現が違うだけ)

これ(ツリーとベン図は表現が異なるだけ)という性質はクラシフィケーションツリーの階層が増えても成り立ちます。(部分集合になるだけですから)

厳密にはクラシフィケーションツリーの方はクラス間の組合せを考えますので、同値図と1対1対応はしません。
ただ、同値図で複雑な集合を描いている人はクラシフィケーションツリー技法を試してみることをおすすめします。


■ クラシフィケーションツリー技法の制限/注意事項

以下は、JSTQBのALTAシラバスの「クラシフィケーションツリー技法の制限/注意事項」の全文です。

クラシフィケーションそして/またはクラスの量が増加するにつれて、図が大きくなり、使用しづらくなる。また、クラシフィケーションツリー技法では、完全なテストケースは作られず、テストデータの組み合わせのみが作られる。テストアナリストは、完全なテストケースを作成するために各テストの組み合わせの結果を提供しなければならない。

大事なところは、太字の「クラシフィケーションツリー技法では、完全なテストケースは作られず、テストデータの組み合わせのみが作られる」のところです。

GIHOZで「テストケースを生成」ボタンを押しても、生成されるのは以下のようにテストデータの組み合わせのみです。

なので、GIHOZでは、「テストケース」とは書かずに「テストカバレッジアイテム」と書いているのですね。
ISTQBが定義するテストケースではないけれど、分かりやすいので私はテストケースと書いてしまうけど。

GIHOZにおけるテストケース生成結果

以前のnoteでテストケースの話を書いたときの図を再掲します。

テストプロシジャーとテストケースとテストステップの関係

特に、期待結果が生成されないことに注意が必要です。テストオラクル(期待結果をつくるための情報やツール)が必要です。

例えば、「令和」と「20」の組合せが生成されたとして、その時の期待結果は何でしょうか?

もしも、この「入力日」が【入力当日】を入力しているのならエラーを出力して再入力を促す仕様かもしれません。そうではなく、【保険の満了日】を入力する画面ならエラーなしが期待結果かもしれません。


■ 格子部分はクラスの組合せ

クラシフィケーションツリーの下にある格子部分はテストデータ(同値クラス)の組合せ情報を示しています。もう一度同じ図に登場してもらいます。

入力日を決めるパラメータと値の組合せ

縦軸がクラスに、横軸がテストケースになっています。格子部分にテストケース1~4の値の組合せ情報が載っています。つまり、テストケース1では、年号に「昭和」を選択し、年に「6」を入力するという意味となります。

網羅性については、次回のテーマとなりますが、パッと見ても、「令和×6」の組合せが無いなということが見て取れると思います。



≡ JSTQB ALTA試験対策

いつものことですが、まずは、「学習の目的」を確認します。

TA-3.2.5 (K2)クラシフィケーションツリー図がテスト技法にどのように役立つかを説明する 。

ALTAシラバス29ページ

「3.2 ブラックボックステスト技法」の他の技法は全て「K4」です。ところが、「3.2.5 クラシフィケーションツリー技法」は「K2」です。
K2ということは「理解」したらOKです。
言い換えれば「K3:適用」や「 K4:分析」は求められていません。試験問題には、「クラシフィケーションツリー技法ってどんな技法なの?」という問いが出ることでしょう。クラシフィケーションツリーそのものを作る問題はでないと思います。

《問題》
 以下のクラシフィケーションツリーを作成した。Each-choice(シングルワイズ)とAll-pairs(ペアワイズ)の網羅率はそれぞれ何%と何%ですか?

1. 50%と25%
2. 50%と50%
3. 100%と50%
4. 100%と75%

入力日を決めるパラメータと値の組合せ

答えは次回に書きます。



≡  おわりに

今回は、「クラシフィケーションツリー技法の適用、制限/注意事項」がテーマでした。

クラシフィケーションツリー技法は、テスト時の組み合わせの意図を伝える図として優秀です。
ソフトウェアの開発者でないエンドユーザーであってもすぐに理解できますので、エンドユーザーが、抜けているクラスの指摘や網羅してほしい組合せを指摘してくださる効果を期待できます。

次回は、「3.2.5 クラシフィケーションツリー技法」の後編として、「カバレッジ、検出できる欠陥の種類」について書きます。


この記事が気に入ったらサポートをしてみませんか?