Slide 1

Slide 1 text

クラシフィケーション・ツリー法 入門 WACATE2014 Winter 2014/12/6 井芹 洋輝 1

Slide 2

Slide 2 text

このセッションについて • ねらい – クラシフィケーションツリー法の特徴と手順を知る – クラシフィケーションツリー法によるテスト設計を 経験する • 対象 – テスト設計に携わる人 – 同値分割を知っている人 2

Slide 3

Slide 3 text

アウトライン 1. クラシフィケーション・ツリー法の概要 2. クラシフィケーション・ツリー法の進め方 3. 応用的なトピック 3

Slide 4

Slide 4 text

1. クラシフィケーション・ツリー法 の概要 4

Slide 5

Slide 5 text

クラシフィケーションツリー法とは • 名前 –Classification Tree Method。略称CTM • 用途 –ブラックボックステストの技法。主に機能テ ストが対象 –同値分割、組み合わせテストを分類木 (クラシフィケーションツリー)でモデリング するテスト設計技法 5

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

CTMの大まかな進め方 1. 分類木でテスト条件 をモデリングする 定食選択 主菜 副菜 肉 魚 サラダ おひたし テストケース1 テストケース2 3. 基準に従ってテスト ケースを作成する 8 2. 網羅基準を定める (例:全網羅する)

Slide 9

Slide 9 text

CTMのメリット • メリット – 同値クラスや組み合わせテストを整理だてて考えら れる • 同値クラスの抽象構造、コンポジション、Is-aの関係をわか りやすく表現 – 手軽で汎用的 • 副次的なメリット – 自動化しやすい • ツールによるテスト自動生成が普及している – 類似手法(FOT、NGT)の勉強のとっかかりに 9

Slide 10

Slide 10 text

CTMの経緯 • 生まれたのは1993年 – Grochtmann, Matthias; Grimm, Klaus (1993). "Classification Trees for Partition Testing". Software Testing, Verification & Reliability • 最近の動向 – ISO 29119の主要技法の一つとしてピックアップさ れている – FOTという類似のテスト手法が提唱されている 10

Slide 11

Slide 11 text

分類木のスタイル • 記法に様々なものがある(主にツール依存) • 拡張も提唱されている(後述) Classification Class Class ISO 29119のスタイル Classification Class Class Guide to Advanced Software Testing のスタイル Classification Class Class mutex FOTのスタイル 11 Class

Slide 12

Slide 12 text

2.クラシフィケーション・ツリー法 の進め方 12

Slide 13

Slide 13 text

CTMの進め方 1. 分類木を描く 1. 描き方のルール 2. 描き方 3. 個人演習 2. テストケースを作成する 1. 網羅基準の設定 2. テストケースの作成 3. 個人演習 13

Slide 14

Slide 14 text

14 1. 分類木を描く:描き方のルール CTMでの分類木(構成要素) 1 AAA BBB 3 機能 2 4 BBB • 分類木の最上位の要素は ドメインやルートと呼ばれる。 • 機能名やテスト入力名を描く

Slide 15

Slide 15 text

15 1. 分類木を描く:描き方のルール CTMでの分類木(構成要素) 支払方法 クレジットカード 現金 ※CTMは入力について描く 【四角枠線で囲ったもの】 クラシフィケーション (テストのパラメータを描く) 【枠線のないもの】 クラス (クラシフィケーションがとり得 る値や同値クラスを描く) 機能

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

19 1. 分類木を描く:描き方のルール CTMでの分類木(注意事項) ラーメン 細麺 麺 スープ 豚骨 塩 麺の種類 麺の硬さ 太麺 ばりかた 針金 バリエーション 醤油豚骨 マー油 豚骨 豚骨のみ ●クラシフィケーションの兄弟ノー ドは直交しているのが理想 ●クラスの兄弟ノードは漏れ・ダブリを避ける ●クラスはテスト条件に使えるものを描く

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

22 1. 分類木を描く:描き方 ボトムアップ 【申し込み情報】 テスト対象

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

24 1. 分類木を描く:描き方 ボトムアップ 【申し込み情報】 申し込み情報 ノートPCの 持参 前回の WACATEに ついて 持参する 持参 しない 参加 した 知っていた が、参加で きなかった 知らなかった テスト対象 クラスを抽象化・ グルーピングして 分類木にする

Slide 25

Slide 25 text

25 1. 分類木を描く:描き方 トップダウン テスト対象 文書ソフトの文字装飾機能 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ 分析のとっかかりとして観点を出す

Slide 26

Slide 26 text

26 1. 分類木を描く:描き方 トップダウン テスト対象 文書ソフトの文字装飾機能 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ 太字 斜体 斜体 非斜体 太字 非太字 位置 サイズ 上付き 下付き 通常 有効サイズ 無効サイズ 背景色 下線 ・・・ 観点ごとに分析

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

28 1. 分類木を描く:描き方 整理・作り込み(縦方向) 文字装飾機能 文字の装飾 背景の装飾 位置・サイズ 太字 斜体 斜体 非斜体 太字 非太字 位置 サイズ 上付き 下付き 通常 有効サイズ 無効サイズ 背景色 下線 ・・・ 抽象度は問題ないか、上下関係に抜け漏れはないか、 確認・改善する

Slide 29

Slide 29 text

個人ワーク1(20分) • 当日提示 29

Slide 30

Slide 30 text

CTMの進め方 1. 分類木を描く 1. 描き方のルール 2. 描き方 3. 個人演習 2. テストケースを作成する 1. 網羅基準の設定 2. テストケースの作成 3. 個人演習 30

Slide 31

Slide 31 text

2. テストケースを作成する 網羅基準の設定 • 分類木をどう網羅するか基準を決める –網羅基準の例(ISO 29119) • Minimized:「すべてのクラスを網羅する」 • Maximized:「すべてのクラスの組み合わせを網 羅する」 –網羅基準に制約はない テスト目的に応じて柔軟に設定する 31

Slide 32

Slide 32 text

2.テストケースを作成する テストケースの作成 1. 網羅基準に従って組み合 わせを決める (例は組合わせ全網羅) – 分類木の下に組み合わせ表 を書いて組み合わせを図化 する – 手動、自動やりやすい手段で All Pair法等も活用可 2. クラスに具体的な値を割 り当て、テスト条件とする 定食選択 主菜 副菜 肉 魚 サラダ おひたし テストケース1 テストケース2 テストケース3 テストケース4 組み合わせ表 32

Slide 33

Slide 33 text

33 CTMでのテスト設計の例 申し込み情報 ノートPCの 持参 前回の WACATE について 持参する 持参 しない 参加 した 知っていたが、 参加できな かった 知らなかった (1)網羅基準を決める 「クラスを網羅する」 (2)組み合わせを作る (今回は手動) (3)組み合わせをテス トケースに展開する

Slide 34

Slide 34 text

個人ワーク2 • 問題1【ワーク1を使ってテスト設計】 • 詳細は当日提示 34

Slide 35

Slide 35 text

3.応用的なトピック 35

Slide 36

Slide 36 text

CTMの基礎的な考え方 • ソフトウェアテストのアプローチ – ソフトウェアテストでは、テスト目的に基づいたテ ストの十分性を満たす実行空間を、様々なアプ ローチで網羅する テスト対象の実行空間 テストすべき実行空間S テストAの空間 テストB の空間 テストC の空間 36

Slide 37

Slide 37 text

CTMの基礎的な考え方 • CTMのアプローチ – CTMは機能テストのテスト空間をクラスで漏れ無く・ダブり なく分割。十分性を満たしやすくすることを目指す テスト対象の実行空間 テストすべき実行空間S クラシフィケーション を観点に空間分割 クラシフィケーションを観点に空間分割 S1 S2 S3 … CTMの理想 ・∪Si=S ・∩Si=Φ 37 この実現のため、抽象関係 や、漏れ・ダブリがわかりや すい分類木モデルを使用し ている

Slide 38

Slide 38 text

CTMの使い所 • 機能テストの多くで使える汎用的な手法 – 明日から使える! • 特に以下で有効 – 同値分割のズームアウト・ズームインを行う時 • 同値クラスの抽象構造を分類木で表現する – 複雑・規模の大きな同値分割・組み合わせテスト を設計する時 38

Slide 39

Slide 39 text

CTMの使い所 • 例)機能テストを設計する際に、マインドマッ プツールで分類木を気軽に描く – アイコンや書式でClassification、Classを区別 – 例はFreeMind 39

Slide 40

Slide 40 text

並行処理のモデル検査での活用 • 状態モデルを抽象化するために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

Slide 41

Slide 41 text

41 FOT(フィーチャ指向テスティング)での 制約条件の記述 ラーメン 細麺 麺 スープ 豚骨 塩 太麺 • FOTではツリーに制約条件を 記述できるようにしている(テ ストツリーと呼称) CTMでも参考にできる • ツリーからのテスト自動生成 を支援にする • 制約条件の記法 • Requires:●ならば☓選択 • Mutex:両立不可 • Removes:●ならば▲無効 • Attaches:●ならば▲有効 mutex

Slide 42

Slide 42 text

ツールによるテスト設計の自動化 • CTMはモデリング支援、テスト作成支援の ツールが存在 – 代表ツール(TESTONA http://www.testona.net/) 42 定食選択 主菜 副菜 肉 魚 サラダ おひたし テストケース1 テストケース2 テストケース3 テストケース4 網羅条件、制 約条件を設定 することで組み 合わせを自動 生成する

Slide 43

Slide 43 text

まとめ • クラシフィケーション・ツリー法の概要と進め 方を説明しました • クラシフィケーション・ツリーで – テスト条件をモデリングしました – テスト設計を行いました 43

Slide 44

Slide 44 text

参考文献 • 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