※Classification Tree法のまとまった解説として以下資料を作成しました:
クラシフィケーションツリー法入門/Introduction to Classification Tree Method - Speaker Deck
最新は上記参照ください。以降はバックアップです。
●●●●
ソフトウェアテストの分野では、日本語圏と英語圏で話題や志向が違うことが結構ある。
その違いの代表例の一つに、テスト技法であるClassification Tree法がある。この技法は、海外ではISO/IEC 29119が代表的なテスト技法として挙げているなどそれなりの知名度を持っているそうだが、日本国内では知名度がかなり低い。
今回はそのClassification Tree法について、簡単に紹介したいと思う。
Classification Tree法の概要
Classification Tree法(Classification Tree Method。クラシフィケーションツリー法。分類木法。略称はCTM)は、テスト観点や同値クラスのモデリング手法に属する。
決定木と同じく、元々Classification Treeは用途をテストに限らない汎用的なモデリング手法として使われてきた。テスト設計ではそれにいくつかのサブセットルールと意味論的な定義を加えて用いることになる。
用途だけれど、テスト設計でのClassification Tree法は、分類木を使って組み合わせや同値分割を階層構造でモデル化するのに用いられる。それによって、同値分割のズームイン・ズームアウトを容易にする、組み合わせの分布を抽象・具象両面で評価可能にする、テスト観点の分析をやりやすくする、といったメリットを確保する。またツールを使って、テスト網羅度のビジュアライズやテストの自動生成をサポートさせる場合もある。
なおこの手法と類似している手法として、テスト観点のモデリングを扱うNGTや、テスト設計手法であるFOTで似た図を用いている。違いとしては、前者はテストアーキテクチャ設計を行うためのテスト観点のパッケージングなどが補強されている。後者は原因結果グラフと同じように、組み合わせの制約を図中に記述できるように拡張されている。
Classification Tree法の運用
Classification Tree法ではモデリングやテスト設計支援でツールを用いるのが一般的になっている。
ツールによっては、Classification Treeのモデルを作成すると、それに基づいて組み合わせテストを自動生成してくれるものがある。そのためClassification Tree法はモデルベースドテストの実現手段として見られることもあるようだ。
Classification Tree法では、モデル上の各要素をテストケースにおいてどう組み合わせるかは自由度をもたせている。そこではそれぞれのテストの目的や制約に応じて、テスト設計者やツールが全網羅や2因子間網羅などを選択することになる。
Classification Treeの書き方
Classification Treeは以下の構成要素でモデルを構成する
また、最上位のAspectを「Aspect of interest」と呼称し扱いを区別することもある。
モデルでは上記をツリー上でつなげて記述する。具体的には、以下のようなパターンでツリーを作成する。
- 幹側の「Aspect」に、それを構成する「Domain」の枝をつなげる
- 幹側の「Aspect」に、より具体的な「Aspect」の枝をつなげる
- 幹側の「Domain」に、それを分解するための「Aspect」の枝をつなげる。
なおモデルの表記法は文献によってばらつきがある。ツールによるアシストが一般的な手法のため、ツールの違いが表記のばらつきにつながっているようだ。表記法の例をいくつか以下に紹介する。
●「Guide to Advanced Software Testing」の場合
書籍 「Guide to Advanced Software Testing」 では以下のような書式スタイルをとる。
- Aspect : 四角の枠線で囲って描く
- Domain : 丸の枠線で囲って描く
例を以下に示す。
●「Test Case Design Using Classification Trees」の場合
割と著名な資料 「Test Case Design Using Classification Trees」 では以下のようなスタイルをとる。
- Aspect : 四角の枠線で囲って描く
- Domain : 枠線なしで描く
例を以下に示す。
ツールによるサポート
Classification Tree法はツールによって拡張されることが多い。例えばCTEというツールでは、原因結果グラフと同じような制約条件を各構成要素に設定し、テストケースを自動生成できるようにする機能をサポートしている。