Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラシフィケーションツリー法入門/Introduction to Classification Tree Method

クラシフィケーションツリー法入門/Introduction to Classification Tree Method

Hiroki Iseri

December 06, 2014
Tweet

More Decks by Hiroki Iseri

Other Decks in Technology

Transcript

  1. クラシフィケーションツリー法とは • 名前 –Classification Tree Method。略称CTM • 用途 –ブラックボックステストの技法。主に機能テ ストが対象

    –同値分割、組み合わせテストを分類木 (クラシフィケーションツリー)でモデリング するテスト設計技法 5
  2. 6 分類木 (クラシフィケーションツリー)の例 定食選択 主菜 副菜 肉 魚 サラダ おひたし

    調理法 刺身 焼魚 【四角枠線で囲ったもの】 クラシフィケーション 【枠線のないもの】 クラス
  3. 7 分類木 (クラシフィケーションツリー)の例 定食選択 主菜 副菜 肉 魚 サラダ おひたし

    調理法 刺身 焼魚 【四角枠線で囲ったもの】 クラシフィケーション 【枠線のないもの】 クラス クラシフィケーションとクラスは 同値分割の関係
  4. CTMの大まかな進め方 1. 分類木でテスト条件 をモデリングする 定食選択 主菜 副菜 肉 魚 サラダ

    おひたし テストケース1 テストケース2 3. 基準に従ってテスト ケースを作成する 8 2. 網羅基準を定める (例:全網羅する)
  5. CTMのメリット • メリット – 同値クラスや組み合わせテストを整理だてて考えら れる • 同値クラスの抽象構造、コンポジション、Is-aの関係をわか りやすく表現 –

    手軽で汎用的 • 副次的なメリット – 自動化しやすい • ツールによるテスト自動生成が普及している – 類似手法(FOT、NGT)の勉強のとっかかりに 9
  6. CTMの経緯 • 生まれたのは1993年 – Grochtmann, Matthias; Grimm, Klaus (1993). "Classification

    Trees for Partition Testing". Software Testing, Verification & Reliability • 最近の動向 – ISO 29119の主要技法の一つとしてピックアップさ れている – FOTという類似のテスト手法が提唱されている 10
  7. 分類木のスタイル • 記法に様々なものがある(主にツール依存) • 拡張も提唱されている(後述) Classification Class Class ISO 29119のスタイル

    Classification Class Class Guide to Advanced Software Testing のスタイル Classification Class Class mutex FOTのスタイル 11 Class
  8. CTMの進め方 1. 分類木を描く 1. 描き方のルール 2. 描き方 3. 個人演習 2.

    テストケースを作成する 1. 網羅基準の設定 2. テストケースの作成 3. 個人演習 13
  9. 14 1. 分類木を描く:描き方のルール CTMでの分類木(構成要素) 1 AAA BBB 3 機能 2

    4 BBB • 分類木の最上位の要素は ドメインやルートと呼ばれる。 • 機能名やテスト入力名を描く
  10. 15 1. 分類木を描く:描き方のルール CTMでの分類木(構成要素) 支払方法 クレジットカード 現金 ※CTMは入力について描く 【四角枠線で囲ったもの】 クラシフィケーション

    (テストのパラメータを描く) 【枠線のないもの】 クラス (クラシフィケーションがとり得 る値や同値クラスを描く) 機能
  11. 16 1. 分類木を描く:描き方のルール CTMでの分類木(要素のつながり) ラーメン 細麺 麺 スープ 豚骨 塩

    麺の種類 麺の硬さ 太麺 ばりかた かため バリエーション 醤油豚骨 マー油 豚骨 豚骨のみ •クラシフィケーション→クラス Is-a、同値分割の関係。 親ノード(上側)がとり得る同値ク ラスや値を子ノード(下側)に書く ツリーを描く
  12. 17 1. 分類木を描く:描き方のルール CTMでの分類木(要素のつながり) ラーメン 細麺 麺 スープ 豚骨 塩

    麺の種類 麺の硬さ 太麺 ばりかた かため バリエーション 醤油豚骨 マー油 豚骨 豚骨のみ •ドメイン→クラシフィケーション •クラシフィケーション→クラシフィケーション •クラス→クラシフィケーション has-a、コンポジションの関係 親ノードが子ノードを包含する 親ノードが属性として子ノードを持つ ツリーを描く
  13. 18 1. 分類木を描く:描き方のルール CTMでの分類木(注意事項) ラーメン 細麺 麺 スープ 豚骨 塩

    麺の種類 麺の硬さ 太麺 ばりかた 針金 バリエーション 醤油豚骨 マー油 豚骨 豚骨のみ •兄弟ノードはクラシフィケーショ ンかクラスで統一すること
  14. 19 1. 分類木を描く:描き方のルール CTMでの分類木(注意事項) ラーメン 細麺 麺 スープ 豚骨 塩

    麺の種類 麺の硬さ 太麺 ばりかた 針金 バリエーション 醤油豚骨 マー油 豚骨 豚骨のみ •クラシフィケーションの兄弟ノー ドは直交しているのが理想 •クラスの兄弟ノードは漏れ・ダブリを避ける •クラスはテスト条件に使えるものを描く
  15. 1. 分類木を描く:描き方 CTMでの分類木(注意事項) • 分類木の描き方は自由 • 描き方アプローチ(組み合わせて実施) – ボトムアップ •

    具体的なものを抽象化・グルーピング – トップダウン • 抽象的なものを具体化 • 観点を検討し、観点ごとに具体化 – 整理・作り込み • 観点の整理、抽象度・MECE性の改善を行う 20
  16. 1. 分類木を描く:描き方 CTMでの分類木(注意事項) • 分類木の描き方は自由 • 描き方アプローチ(組み合わせて実施) – ボトムアップ •

    具体的なものを抽象化・グルーピング – トップダウン • 抽象的なものを具体化 • 観点を検討し、観点ごとに具体化 – 整理・作り込み • 観点の整理、抽象度・MECE性の改善を行う 21 これをやりやすいのが CTMのメリット
  17. 23 1. 分類木を描く:描き方 ボトムアップ 【申し込み情報】 テスト対象 申し込み情報 持参する 持参 しない

    参加 した 知っていた が、参加で きなかった 知らなかった 考えられるクラスの具体例を出す
  18. 24 1. 分類木を描く:描き方 ボトムアップ 【申し込み情報】 申し込み情報 ノートPCの 持参 前回の WACATEに

    ついて 持参する 持参 しない 参加 した 知っていた が、参加で きなかった 知らなかった テスト対象 クラスを抽象化・ グルーピングして 分類木にする
  19. 26 1. 分類木を描く:描き方 トップダウン テスト対象 文書ソフトの文字装飾機能 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ

    太字 斜体 斜体 非斜体 太字 非太字 位置 サイズ 上付き 下付き 通常 有効サイズ 無効サイズ 背景色 下線 ・・・ 観点ごとに分析
  20. 27 1. 分類木を描く:描き方 整理・作り込み(横方向) 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ 太字 斜体

    斜体 非斜体 太字 非太字 位置 サイズ 上付き 下付き 通常 有効サイズ 無効サイズ 背景色 下線 ・・・ 漏れやダブリがないか、観点は出しきっているか、 分割の粒度や数は問題ないか、確認・改善する クラスは 無効・記述漏れ も出しきる
  21. 28 1. 分類木を描く:描き方 整理・作り込み(縦方向) 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ 太字 斜体

    斜体 非斜体 太字 非太字 位置 サイズ 上付き 下付き 通常 有効サイズ 無効サイズ 背景色 下線 ・・・ 抽象度は問題ないか、上下関係に抜け漏れはないか、 確認・改善する
  22. CTMの進め方 1. 分類木を描く 1. 描き方のルール 2. 描き方 3. 個人演習 2.

    テストケースを作成する 1. 網羅基準の設定 2. テストケースの作成 3. 個人演習 30
  23. 2. テストケースを作成する 網羅基準の設定 • 分類木をどう網羅するか基準を決める –網羅基準の例(ISO 29119) • Minimized:「すべてのクラスを網羅する」 •

    Maximized:「すべてのクラスの組み合わせを網 羅する」 –網羅基準に制約はない テスト目的に応じて柔軟に設定する 31
  24. 2.テストケースを作成する テストケースの作成 1. 網羅基準に従って組み合 わせを決める (例は組合わせ全網羅) – 分類木の下に組み合わせ表 を書いて組み合わせを図化 する

    – 手動、自動やりやすい手段で All Pair法等も活用可 2. クラスに具体的な値を割 り当て、テスト条件とする 定食選択 主菜 副菜 肉 魚 サラダ おひたし テストケース1 テストケース2 テストケース3 テストケース4 組み合わせ表 32
  25. 33 CTMでのテスト設計の例 申し込み情報 ノートPCの 持参 前回の WACATE について 持参する 持参

    しない 参加 した 知っていたが、 参加できな かった 知らなかった (1)網羅基準を決める 「クラスを網羅する」 (2)組み合わせを作る (今回は手動) (3)組み合わせをテス トケースに展開する
  26. CTMの基礎的な考え方 • CTMのアプローチ – CTMは機能テストのテスト空間をクラスで漏れ無く・ダブり なく分割。十分性を満たしやすくすることを目指す テスト対象の実行空間 テストすべき実行空間S クラシフィケーション を観点に空間分割

    クラシフィケーションを観点に空間分割 S1 S2 S3 … CTMの理想 ・∪Si=S ・∩Si=Φ 37 この実現のため、抽象関係 や、漏れ・ダブリがわかりや すい分類木モデルを使用し ている
  27. CTMの使い所 • 機能テストの多くで使える汎用的な手法 – 明日から使える! • 特に以下で有効 – 同値分割のズームアウト・ズームインを行う時 •

    同値クラスの抽象構造を分類木で表現する – 複雑・規模の大きな同値分割・組み合わせテスト を設計する時 38
  28. 並行処理のモデル検査での活用 • 状態モデルを抽象化するためにCTMを用いる void threadZero() { while (true) { while

    (thread1inside) {} ...OtherTask… thread0inside = 1; ...CriticalRegionOfThreadZero… thread0inside = 0; ...OtherTask… } } void threadOne() { while (true) { while (thread0inside) {} ...OtherTask… thread1inside = 1; ...CriticalRegionOfThreadOne… thread1inside = 0; ...OtherTask… } } Spin lock threadOne threadZero lock spin Critical Region unlock spin lock Critical Region unlock コードを抽象化した状態をクラスとして記述する 40
  29. 41 FOT(フィーチャ指向テスティング)での 制約条件の記述 ラーメン 細麺 麺 スープ 豚骨 塩 太麺

    • FOTではツリーに制約条件を 記述できるようにしている(テ ストツリーと呼称) CTMでも参考にできる • ツリーからのテスト自動生成 を支援にする • 制約条件の記法 • Requires:•ならば☓選択 • Mutex:両立不可 • Removes:•ならば▲無効 • Attaches:•ならば▲有効 mutex
  30. ツールによるテスト設計の自動化 • CTMはモデリング支援、テスト作成支援の ツールが存在 – 代表ツール(TESTONA http://www.testona.net/) 42 定食選択 主菜

    副菜 肉 魚 サラダ おひたし テストケース1 テストケース2 テストケース3 テストケース4 網羅条件、制 約条件を設定 することで組み 合わせを自動 生成する
  31. 参考文献 • Eduardo Miranda, “An Illustrated Introduction to the Classification

    Tree Method” • ISO/IEC/IEEE, “DRAFT INTERNATIONAL STANDARD ISO/IEC/IEEE DIS 29119-4.2 Part: 4 Test techniques” • Anne Mette Jonassen Hass, “Guide to Advanced Software Testing” • Matthias Grochtmann他, “Test Case Design Using Classification Trees and the Classification-Tree Editor CTE” • 北村崇師, "FOTによるモデルベーステストと品質コントロール" 44