見出し画像

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

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


≡ はじめに

前回は、「3. テスト技法」の「3.2 ブラックボックステスト技法」の「3.2.4 状態遷移テスト」の後編として、「状態遷移テストのカバレッジ、検出できる欠陥の種類」について書きました。

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

クラシフィケーションツリー技法の考え方は非常に重要ですし、カバレッジの勉強になるので、良い技法です。しかしながら、とてもスペースを取るため実務で使うことはないと思います。

クラシフィケーションツリー技法は、テスト分析でつくることが多いマインドマップやNGTをいい感じに作るために身につけておくと良い技法です。



≡ 前回の復習

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



𝕏によるアンケート結果

投票の結果、2の「「A→A→A」と「A→A→B」」が42.9%と最も多く、正解も、2です。

その後、派生問題を出し、そちらは100%正解でした。素晴らしいです。もう、Nスイッチテストは完璧になったと思います。

𝕏によるアンケート結果

いちおう、前回のキャッチイメージを再掲しておきます。

Nスイッチテストのパス

この図だと、0スイッチテストで「初期状態B」をテストしそうにみえちゃうかなあ。
でも、「状態遷移テスト」というくらいで、「遷移」を確認するテストですから大丈夫ですよね。派生問題で3を選んだ人がいないからいいか。

前回の復習としては以下の表をざっと再読してもらうことも有効と思います。特に、黄色くしたところは実務に適用する時に、とても大切です。

状態遷移テスト技法とカバレッジ

復習は以上とし、今回のnoteのテーマである「クラシフィケーションツリー技法の定義」に移ります。



≡ クラシフィケーションツリー技法の定義

以下は、ソフトウェアテストの国際標準であるISO/IEC/IEEE 29119-4の目次です。
Part 4:は、“Test Techniques”、すなわちテスト技法の標準です。

ISO/IEC/IEEE 29119-4

訳すと、

5 テスト設計技法
5.1 概要
5.2 仕様に基づくテスト設計技法
5.2.1 同値分割法
5.2.2 クラシフィケーションツリー技法
5.2.3 境界値解析
5.2.4 構文テスト
5.2.5 組み合わせテスト設計技法
5.2.6 デシジョンテーブルテスト
5.2.7 原因結果グラフ
5.2.8 状態遷移テスト
5.2.9 シナリオテスト
5.3 構造に基づくテスト設計技法
5.3.1 ステートメントテスト

といったところでしょうか。テスト技法名が並んでいるだけなので、訳すも何もないのですが。

ここで、注目していただきたいのは以下の個所です。

5.2 仕様に基づくテスト設計技法
5.2.1 同値分割法
5.2.2 クラシフィケーションツリー技法
5.2.3 境界値解析

太字にした「クラシフィケーションツリー技法」がこれから前・中・後編と3回のテーマですが、注目してほしいのは、「クラシフィケーションツリー技法は、同値分割法と境界値分析に挟まれている」という点です。

つまり、「クラシフィケーションツリー技法は、同値分割法の拡張版」と思ってもらうほうが良いです。ALTAのシラバスでは、だいぶ後に出てきていますが……。

逆に言うと、クラシフィケーションツリーを作るときに、同値分割法の考え方を使うということです。この「技法を組み合わせて使う」ことは、クラシフィケーションツリー技法に限らず意識的に行うとよいです。

ISO/IEC 29119-4にも、テスト技法を別々に記述しているけど、実際には、それらを混合して適用できるよといったようなことが書いてあります。

さて、JSTQBのALTAシラバスの「クラシフィケーションツリー技法の定義」ですが、「[Bath14]および[Black09]を参照されたい」と書いてあります。要はシラバスには詳しい話が書いてありません。

[Bath14]および[Black09]とは、シラバスあるとおり、それぞれ以下の書籍を指しているのですが、日本語に翻訳されていません。

[Bath14] Graham Bath, Judy McKay, "The Software Test Engineer's Handbook (2nd Edition)", Rocky Nook, 2014, ISBN 978-1-933952-24-6

[Black09]:Rex Black, "Advanced Software Testing, Volume 1", Rocky Nook, 2009, ISBN 978-1-933-952-19-2

それでは、ISO/IEC/IEEE 29119-4のほうは、というと、こちらも、「Grochtmann and Grimm 1993)」などを読めと書いているだけでした。シラバスよりは例があるから詳しいけれど。

ということで、シラバスを離れて『ソフトウェアテスト技法ドリル【第2版】』を使いながらクラシフィケーションツリー技法について説明します。

まずは、実物から。「クラシフィケーションツリー」とは以下のような図のことです。

『ソフトウェアテスト技法ドリル【第2版】』 p. 39より引用

ログイン機能に影響するパラメータとして、「ユーザー名」、「パスワード」、「端末」の3つを挙げています。

「端末」が「ユーザー名」と「パスワード」と同列にあるのは気持ちが悪いなあと思ったら下図のようにしてもかまいません。

最上位のノード(ここでは「ログイン」)のことを「トップノード(Root)」と呼びます。新たに追加した「ソフトウェア入力」を含め、「ユーザー名」、「パスワード」、「端末」のノードのことを「クラシフィケーション(Classification)」と呼びます。

「クラシフィケーション」とは「分類」のことです。なにか、ごちゃごちゃしている大きいものを木構造で分類しています。マインドマップでおなじみですね。下図を参考にMECEを意識して分類すると良いです。

「クラシフィケーション」は単なる分類ですので、上記のように「ソフトウェア入力」にまとめたいなと思えば、ノードを追加するなど、自由に理解しやすいようにまとめてしまって構いません。つまり、クラシフィケーションの下にクラシフィケーションを置けます。

MECEを意識して分類するとは

さて、残るは末端のノードです。「ユーザー名」の下にある「正しいユーザー名」、「誤ったユーザー名」などのことは「クラス(Class)」と呼びます。クラスは、同値分割法の「同値パーティション」(昔は「同値クラス」と呼んでいました)と同じです。

ここで、末端のノードがクラスというのは良いとして、クラスの下にクラスやクラシフィケーションが来ることは無いのか?と疑問に思われたかと思います。
結論から言えば、クラスの下にクラスやクラシフィケーションが来ても良いです。

でも、クラシフィケーションツリーというモデルをあまり複雑にしないほうが良いと思いますので、おすすめしません。

クラシフィケーションツリーの拡張としては、他にも、下図のようにノード間の制約条件を付けくわえているものもあります。
(原因結果グラフの制約のようで)技術的には大好きなのですが、ノードが増えたときに、離れたノード間の制約を縦横無尽に張るのが大変なんですよね。

「ZIP FOT」のカタログより

さて、ここまでで、クラシフィケーションツリー上にあるツリー部分の説明をしました。
下の格子部分ではどのようにそれぞれのクラスを使ったテストケースを定義しているのですが、それは次回の「適用」のところでご説明します。


≡ JSTQB ALTA試験対策

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

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

ALTAシラバス29ページ

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

《問題》
 プルダウンメニューから年号を選択し、テキストボックスに年を入力するGUIがあったとする。正しいものはどれですか。

1. 「令和」と「6」はどちらもクラシフィケーション(CLN)
2. 「令和」はCLN「6」はクラス
3. 「令和」はクラス「6」はCLN
4. 「令和」と「6」はどちらもクラス


問題のGUIサンプル

答えは次回に書きます。



≡  おわりに

今回は、「クラシフィケーションツリー技法の定義」がテーマでした。

クラシフィケーションを因子、クラスを水準と説明することがあります。私は分かりやすいのですが、今度は因子と水準の説明が必要となりますので同じことです。😅

次回は、「3.2.5 クラシフィケーションツリー技法」の中編として、「適用、制限/注意事項」について書きます。ツリーの下にある格子の使い方についても書く予定です。


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