狠狠撸

狠狠撸Share a Scribd company logo
クラシフィケーション?ツリー法
入門
WACATE2014 Winter
2014/12/6 井芹 洋輝(@goyoki)
1
このセッションについて
? ねらい
– クラシフィケーションツリー法の特徴と手順を知る
– クラシフィケーションツリー法によるテスト設計を
経験する
? 対象
– テスト設計に携わる人
– 同値分割を知っている人
2
アウトライン
1. クラシフィケーション?ツリー法の概要
2. クラシフィケーション?ツリー法の進め方
3. 応用的なトピック
3
1. クラシフィケーション?ツリー法
の概要
4
クラシフィケーションツリー法とは
? 名前
–Classification Tree Method。略称CTM
? 用途
–ブラックボックステストの技法。主に機能テ
ストが対象
–同値分割、組み合わせテストを分類木
(クラシフィケーションツリー)でモデリング
するテスト設計技法
5
6
分類木
(クラシフィケーションツリー)の例
定食選択
主菜 副菜
肉 魚 サラダ おひたし
調理法
刺身 焼魚
【四角枠線で囲ったもの】
クラシフィケーション
【枠線のないもの】
クラス
7
分類木
(クラシフィケーションツリー)の例
定食選択
主菜 副菜
肉 魚 サラダ おひたし
調理法
刺身 焼魚
【四角枠線で囲ったもの】
クラシフィケーション
【枠線のないもの】
クラス
クラシフィケーションとクラスは
同値分割の関係
CTMの大まかな進め方
1. 分類木でテスト条件
をモデリングする
定食選択
主菜 副菜
肉 魚 サラダ おひたし
テストケース1
テストケース2
3. 基準に従ってテスト
ケースを作成する
8
2. 網羅基準を定める
(例:全網羅する)
CTMのメリット
? メリット
– 同値クラスや組み合わせテストを整理だてて考えら
れる
? 同値クラスの抽象構造、コンポジション、Is-aの関係をわか
りやすく表現
– 手軽で汎用的
? 副次的なメリット
– 自動化しやすい
? ツールによるテスト自動生成が普及している
– 類似手法(FOT、NGT)の勉強のとっかかりに
9
CTMの経緯
? 生まれたのは1993年
– Grochtmann, Matthias; Grimm, Klaus (1993).
"Classification Trees for Partition Testing".
Software Testing, Verification & Reliability
? 最近の動向
– ISO 29119の主要技法の一つとしてピックアップさ
れている
– FOTという類似のテスト手法が提唱されている
10
分類木のスタイル
? 記法に様々なものがある(主にツール依存)
? 拡張も提唱されている(後述)
Classification
Class Class
ISO 29119のスタイル
Classification
Class Class
Guide to Advanced Software Testing
のスタイル
Classification
Class Class
mutex
FOTのスタイル
11
Class
2.クラシフィケーション?ツリー法
の進め方
12
CTMの進め方
1. 分類木を描く
1. 描き方のルール
2. 描き方
3. 個人演習
2. テストケースを作成する
1. 網羅基準の設定
2. テストケースの作成
3. 個人演習
13
14
1. 分類木を描く:描き方のルール
CTMでの分類木(構成要素)
1
AAA BBB
3
機能
2
4
BBB
? 分類木の最上位の要素は
ドメインやルートと呼ばれる。
? 機能名やテスト入力名を描く
15
1. 分類木を描く:描き方のルール
CTMでの分類木(構成要素)
支払方法
クレジットカード 現金
※CTMは入力について描く
【四角枠線で囲ったもの】
クラシフィケーション
(テストの入力条件を描く)
【枠線のないもの】
クラス
(クラシフィケーションがとり得
る値や同値クラスを描く)
機能
16
1. 分類木を描く:描き方のルール
CTMでの分類木(要素のつながり)
ラーメン
細麺
麺スープ
豚骨塩
麺の種類 麺の硬さ
太麺
ばりかた かため
バリエーション
醤油豚骨 マー油
豚骨
豚骨のみ
●クラシフィケーション→クラス
Is-a、同値分割の関係。
親ノード(上側)がとり得る同値ク
ラスや値を子ノード(下側)に書く
ツリーを描く
17
1. 分類木を描く:描き方のルール
CTMでの分類木(要素のつながり)
ラーメン
細麺
麺スープ
豚骨塩
麺の種類 麺の硬さ
太麺
ばりかた かため
バリエーション
醤油豚骨 マー油
豚骨
豚骨のみ
●ドメイン→クラシフィケーション
●クラシフィケーション→クラシフィケーション
●クラス→クラシフィケーション
has-a、コンポジションの関係
親ノードが子ノードを包含する
親ノードが属性として子ノードを持つ
ツリーを描く
18
1. 分類木を描く:描き方のルール
CTMでの分類木(注意事項)
ラーメン
細麺
麺スープ
豚骨塩
麺の種類 麺の硬さ
太麺 ばりかた 針金バリエーション
醤油豚骨 マー油
豚骨
豚骨のみ
●兄弟ノードはクラシフィケーショ
ンかクラスで統一すること
19
1. 分類木を描く:描き方のルール
CTMでの分類木(注意事項)
ラーメン
細麺
麺スープ
豚骨塩
麺の種類 麺の硬さ
太麺 ばりかた 針金バリエーション
醤油豚骨 マー油
豚骨
豚骨のみ
●クラシフィケーションの兄弟ノー
ドは直交しているのが理想
●クラスの兄弟ノードは漏れ?ダブリを避ける
●クラスはテストの入力条件に使えるものを
1. 分類木を描く:描き方
CTMでの分類木(注意事項)
? 分類木の描き方は自由
? 描き方アプローチ(組み合わせて実施)
– ボトムアップ
? 具体的なものを抽象化?グルーピング
– トップダウン
? 抽象的なものを具体化
? 観点を検討し、観点ごとに具体化
– 整理?作り込み
? 観点の整理、抽象度?MECE性の改善を行う
20
1. 分類木を描く:描き方
CTMでの分類木(注意事項)
? 分類木の描き方は自由
? 描き方アプローチ(組み合わせて実施)
– ボトムアップ
? 具体的なものを抽象化?グルーピング
– トップダウン
? 抽象的なものを具体化
? 観点を検討し、観点ごとに具体化
– 整理?作り込み
? 観点の整理、抽象度?MECE性の改善を行う
21
これをやりやすいのが
CTMの強力なメリット
22
1. 分類木を描く:描き方
ボトムアップ
【申し込み情報】
テスト対象
23
1. 分類木を描く:描き方
ボトムアップ
【申し込み情報】
テスト対象
申し込み情報
持参する 持参
しない
参加
した
知っていた
が、参加で
きなかった
知らなかった
考えられるクラスの具体例を出す
24
1. 分類木を描く:描き方
ボトムアップ
【申し込み情報】
申し込み情報
ノートPCの
持参
前回の
WACATEに
ついて
持参する 持参
しない
参加
した
知っていた
が、参加で
きなかった
知らなかった
テスト対象
クラスを抽象化?
グルーピングして
分類木にする
25
1. 分類木を描く:描き方
トップダウン
テスト対象 文書ソフトの文字装飾機能
文字装飾機能
文字の装飾 背景の装飾位置?サイズ
分析のとっかかりとして観点を出す
26
1. 分類木を描く:描き方
トップダウン
テスト対象 文書ソフトの文字装飾機能
文字装飾機能
文字の装飾 背景の装飾位置?サイズ
太字斜体
斜体
非斜体
太字
非太字
位置 サイズ
上付き
下付き
通常
有効サイズ
無効サイズ
背景色
下線 ???
観点ごとに分析
27
1. 分類木を描く:描き方
整理?作り込み(横方向)
文字装飾機能
文字の装飾 背景の装飾位置?サイズ
太字斜体
斜体
非斜体
太字
非太字
位置 サイズ
上付き
下付き
通常
有効サイズ
無効サイズ
背景色
下線 ???
漏れやダブリがないか、観点は出しきっているか、
分割の粒度や数は問題ないか、確認?改善する
クラスは
無効?記述漏れ
も出しきる
28
1. 分類木を描く:描き方
整理?作り込み(縦方向)
文字装飾機能
文字の装飾 背景の装飾位置?サイズ
太字斜体
斜体
非斜体
太字
非太字
位置 サイズ
上付き
下付き
通常
有効サイズ
無効サイズ
背景色
下線 ???
抽象度は問題ないか、上下関係に抜け漏れはないか、
確認?改善する
個人ワーク1(20分)
? 当日提示
29
CTMの進め方
1. 分類木を描く
1. 描き方のルール
2. 描き方
3. 個人演習
2. テストケースを作成する
1. 網羅基準の設定
2. テストケースの作成
3. 個人演習
30
2. テストケースを作成する
網羅基準の設定
? 分類木をどう網羅するか基準を決める
–網羅基準の例(ISO 29119)
? Minimized:「すべてのクラスを網羅する」
? Maximized:「すべてのクラスの組み合わせを網
羅する」
–網羅基準に制約はない
テスト目的に応じて柔軟に設定する
31
2.テストケースを作成する
テストケースの作成
1. 網羅基準に従って組み合
わせを決める
(例は組合わせ全網羅)
– 分類木の下に組み合わせ表
を書いて組み合わせを図化
する
– 手動、自動やりやすい手段で
All Pair法等も活用可
2. クラスに具体的な値を割
り当て、テスト条件とする
定食選択
主菜 副菜
肉 魚 サラダ おひたし
テストケース1
テストケース2
テストケース3
テストケース4
組み合わせ表 32
33
CTMでのテスト設計の例
申し込み情報
ノートPCの
持参
前回の
WACATE
について
持参する 持参
しない
参加
した
知っていたが、
参加できな
かった
知らなかった
(1)網羅基準を決める
「クラスを網羅する」
(2)組み合わせを作る
(今回は手動)
(3)組み合わせをテス
トケースに展開する
個人ワーク2
? 問題1【ワーク1を使ってテスト設計】
? 詳細は当日提示
34
3.応用的なトピック
35
CTMの基礎的な考え方
? ソフトウェアテストのアプローチ
– ソフトウェアテストでは、テスト目的に基づいたテ
ストの十分性を満たす実行空間を、様々なアプ
ローチで網羅する
テスト対象の実行空間
テストすべき実行空間S
テストAの空間
テストB
の空間
テストC
の空間
36
CTMの基礎的な考え方
? CTMのアプローチ
– CTMは機能テストのテスト空間をクラスで漏れ無く?ダブり
なく分割。十分性を満たしやすくすることを目指す
テスト対象の実行空間
テストすべき実行空間S
クラシフィケーション
を観点に空間分割
クラシフィケーションを観点に空間分割
S1 S2 S3
…
CTMの理想
?∪Si=S
?∩Si=Φ
37
この実現のため、抽象関係
や、漏れ?ダブリがわかりや
すい分類木モデルを使用し
ている
CTMの使い所
? 機能テストの多くで使える汎用的な手法
– 明日から使える!
? 特に以下で有効
– 同値分割のズームアウト?ズームインを行う時
? 同値クラスの抽象構造を分類木で表現する
– 複雑?規模の大きな同値分割?組み合わせテスト
を設計する時
38
CTMの使い所
? 例)機能テストを設計する際に、マインドマッ
プツールで分類木を気軽に描く
– アイコンや書式でClassification、Classを区別
– 例はFreeMind
39
並行処理のモデル検査での活用
? 状態モデルを抽象化するために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
threadOnethreadZero
lock
spin
Critical
Region
unlock
spin
lock
Critical
Region
unlock
コードを抽象化した状態をクラスとして記述する
40
41
FOT(フィーチャ指向テスティング)での
制約条件の記述
ラーメン
細麺
麺スープ
豚骨塩 太麺
? FOTではツリーに制約条件を
記述できるようにしている(テ
ストツリーと呼称)
CTMでも参考にできる
? ツリーからのテスト自動生成
を支援にする
? 制約条件の記法
? Requires:●ならば?選択
? Mutex:両立不可
? Removes:●ならば▲無効
? Attaches:●ならば▲有効
mutex
ツールによるテスト設計の自動化
? CTMはモデリング支援、テスト作成支援の
ツールが存在
– 代表ツール(TESTONA http://www.testona.net/)
42
定食選択
主菜 副菜
肉 魚 サラダ おひたし
テストケース1
テストケース2
テストケース3
テストケース4
網羅条件、制
約条件を設定
することで組み
合わせを自動
生成する
まとめ
? クラシフィケーション?ツリー法の概要と進め
方を説明しました
? クラシフィケーション?ツリーで
– テスト条件をモデリングしました
– テスト設計を行いました
43
参考文献
? 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

More Related Content

クラシフィケーション?ツリー法入门