45
Copyright (C) 2010 WACATE All rights reserved 「デシジョンテーブルを使いこ なそう!」 加瀬 正樹(WACATE実行委員会) 1

WACATE2010w テスト技法ワーク_スライド

Embed Size (px)

Citation preview

Copyright (C) 2010 WACATE All rights reserved

「デシジョンテーブルを使いこなそう!」

加瀬 正樹(WACATE実行委員会)

1

Copyright (C) 2010 WACATE All rights reserved

少し自己紹介

2

名前 加瀬 正樹

所属 ニフティ株式会社http://www.nifty.co.jp/会員向けのメールサービスのシステム開発や迷惑メール対策への取り組み

主な活動 WACATEhttp://wacate.jp/若手テストエンジニアをターゲットにしたソフトウェアテストワークショップ

TEF勉強会http://www.swtest.jp/wiki/index.php主にテスト技法をテーマにしたオフライン勉強会を不定期開催

技法ドリル勉強会やってるよ!

Copyright (C) 2010 WACATE All rights reserved

今日の流れ

3

講義のお時間・解説・例題

30分

演習のお時間・個人演習・グループ演習・発表・補足解説など

90分

Copyright (C) 2010 WACATE All rights reserved 4

デシジョンテーブル入門

まずはおさらい!

Copyright (C) 2010 WACATE All rights reserved

デシジョンテーブルとは?

5

定義起こりうる入力条件と、それらの組合せに対応する出力結果(動作や処理)をまとめた表

特徴複雑な論理関係をもつ分析対象を漏れなく整理しやすい

プログラムの論理構成を表現できる

テーブルからプログラムへ変換できる

テスト設計における効果テストケースの削減

仕様バグの検出

Copyright (C) 2010 WACATE All rights reserved

具体的なデシジョンテーブル

6

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

Copyright (C) 2010 WACATE All rights reserved

条件スタブ

7

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月

小の月(2月以外)

2月

うるう年

条件スタブ:•考慮すべき入力条件を記入•判定する順序で上から並べる

Copyright (C) 2010 WACATE All rights reserved

動作スタブ

8

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月

小の月(2月以外)

2月

うるう年

28日

29日

30日

31日

動作スタブ:•出力結果を記入•処理する順序で上から並べる

Copyright (C) 2010 WACATE All rights reserved

条件エントリ

9

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

28日

29日

30日

31日

動作エントリ:Y ⇒ Yes, 真であるN ⇒ No, 偽である- ⇒ 真偽は無関係

Copyright (C) 2010 WACATE All rights reserved

動作エントリ

10

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

28日 ○

29日 ○

30日 ○

31日 ○

動作エントリ:○ ⇒ 動作を実行空欄⇒ 動作は実行せず

Copyright (C) 2010 WACATE All rights reserved

ルールの解釈

11

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

28日 ○

29日 ○

30日 ○

31日 ○

指定した月が「大の月」の場合、末日は「31日」

Copyright (C) 2010 WACATE All rights reserved

ルールの解釈

12

例 月の末日指定した月の末日(28日~31日)を出力するプログラムのデシジョンテーブルを作成しなさい。

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

28日 ○

29日 ○

30日 ○

31日 ○

指定した月が「2月」かつ「うるう年」の場合、末日は「29日」

AND

AND

AND

THEN

Copyright (C) 2010 WACATE All rights reserved

テーブル表記には3種類ある

13

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

28日 ○

29日 ○

30日 ○

31日 ○

• 制限エントリテーブルエントリ記入方法が真理値(Y/N)に制限されたテーブル

Y/Nの代わりにT/Fを用いる場合もあるよ

XやT/Fで書く場合もあるよ

Copyright (C) 2010 WACATE All rights reserved

テーブル表記には3種類ある

14

タイトル:月の末日

#1 #2 #3 #4

入力月 大の月 小の月 2月 2月

平年・うるう年 - - 平年 うるう年

末日 31日 30日 28日 29日

• 拡張エントリテーブルスタブに変数名を記述し、エントリに値を記入したテーブル

Copyright (C) 2010 WACATE All rights reserved

テーブル表記には3種類ある

15

タイトル:月の末日

#1 #2 #3 #4

大の月 Y N N N

小の月(2月以外) - Y N N

2月 - - Y Y

うるう年 - - N Y

末日 31日 30日 28日 29日

• 混合エントリテーブル制限エントリテーブルと、拡張エントリテーブルをまとめたテーブル

Copyright (C) 2010 WACATE All rights reserved

テーブル表記には3種類ある

16

テーブル表記 特徴

制限エントリ 真偽値で表現されていて、プログラムへの変換や網羅漏れチェックがしやすい

拡張エントリ 因子・水準で表現されていて、テーブルサイズ(タテ方向)が小さくなる

混合エントリ 制限・拡張のよいところを利用でき、ドキュメントとしての読みやすさがある

ビジネスルールを記述する場合は拡張エントリや混合エントリを使うことが多いです

今日の演習では制限エントリを扱います

Copyright (C) 2010 WACATE All rights reserved 17

テーブルの圧縮

テーブルの圧縮方法を学ぼう!

Copyright (C) 2010 WACATE All rights reserved

テーブルの大きさ

18

タイトル:IF A AND (B OR C) THEN X ELSE Y のルール

#1 #2 #3 #4 #5 #6 #7 #8

条件A Y Y Y Y N N N N

条件B Y Y N N Y Y N N

条件C Y N Y N Y N Y N

処理X ○ ○ ○

処理Y ○ ○ ○ ○ ○

• 入力条件数からテーブルサイズが決まる• 特に制限エントリテーブルは 2n 個

3個

23 = 8個

Copyright (C) 2010 WACATE All rights reserved

テーブルの圧縮

19

タイトル:IF A AND (B OR C) THEN X ELSE Y のルール

#1 #2 #3 #4 #5 #6 #7 #8

条件A Y Y Y Y N N N N

条件B Y Y N N Y Y N N

条件C Y N Y N Y N Y N

処理X ○ ○ ○

処理Y ○ ○ ○ ○ ○

• 出力に影響を及ぼさない入力条件はまとめられる(これをテーブルの圧縮という)

条件Cは無関係 ⇒ 記号「-」

Copyright (C) 2010 WACATE All rights reserved

テーブルの圧縮

20

タイトル:IF A AND (B OR C) THEN X ELSE Y のルール

#1 #2 #3 #4 #5

条件A Y Y Y N N

条件B Y N N Y N

条件C - Y N - -

処理X ○ ○

処理Y ○ ○ ○

• 下から順番にテーブルの圧縮を繰り返す

条件Bは無関係 ⇒ 記号「-」

Copyright (C) 2010 WACATE All rights reserved

テーブルの圧縮

21

タイトル:IF A AND (B OR C) THEN X ELSE Y のルール

#1 #2 #3 #4

条件A Y Y Y N

条件B Y N N -

条件C - Y N -

処理X ○ ○

処理Y ○ ○

• テーブルの圧縮が完成

8個のルールが4個に圧縮できた。けど、あってるかな??

Copyright (C) 2010 WACATE All rights reserved

圧縮後の検算

22

タイトル:IF A AND (B OR C) THEN X ELSE Y のルール

#1 #2 #3 #4

条件A Y Y Y N

条件B Y N N -

条件C - Y N -

処理X ○ ○

処理Y ○ ○

21 1 1 22

• テーブル圧縮が正しく行われたかを、記号「-」の個数を使って検算できる

23

=8個

=8個

1回2回

漏れをなくすために、検算方法も覚えておこう!

Copyright (C) 2010 WACATE All rights reserved 23

デシジョンテーブルを描いてみよう

さあ、例題を解きながら解説していきます!

Copyright (C) 2010 WACATE All rights reserved

4つの手順を覚えよう

24

1. 入力条件と出力(結果)を見つける

2. テーブルサイズを決定して、真理値(Y/N)を記入する

3. 各ルールの出力(結果)を記入する

4. テーブルを圧縮する

まずは基本の手順をしっかり身につけよう!

Copyright (C) 2010 WACATE All rights reserved

例題

25

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

Copyright (C) 2010 WACATE All rights reserved

入力と結果を見つける

26

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

日本国民

満30年以上

公職選挙法の規定

被選挙権あり

被選挙権なし

2×2×2 =

8 ルール

Copyright (C) 2010 WACATE All rights reserved

サイズを決定してテーブルを作成する

27

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

参議院被選挙権

#1 #2 #3 #4 #5 #6 #7 #8

日本国民 Y Y Y Y N N N N

満30年以上 Y Y N N Y Y N N

公職選挙法の規定 Y N Y N Y N Y N

被選挙権あり

被選挙権なし

Yを半分、Nを半分並べて書き込む

上段の1/2分だけ同じ規則で書き込む

Copyright (C) 2010 WACATE All rights reserved

各ルールの結果を記入する

28

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

参議院被選挙権

#1 #2 #3 #4 #5 #6 #7 #8

日本国民 Y Y Y Y N N N N

満30年以上 Y Y N N Y Y N N

公職選挙法の規定 Y N Y N Y N Y N

被選挙権あり ○

被選挙権なし ○ ○ ○ ○ ○ ○ ○

結果をそれぞれ書き込む

Copyright (C) 2010 WACATE All rights reserved

テーブルを圧縮する

29

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

参議院被選挙権

#1 #2 #3 #4 #5 #6 #7 #8

日本国民 Y Y Y Y N N N N

満30年以上 Y Y N N Y Y N N

公職選挙法の規定 Y N Y N Y N Y N

被選挙権あり ○

被選挙権なし ○ ○ ○ ○ ○ ○ ○

Copyright (C) 2010 WACATE All rights reserved

テーブルを圧縮する

30

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

参議院被選挙権

#1 #2 #3 #4 #5

日本国民 Y Y Y N N

満30年以上 Y Y N Y N

公職選挙法の規定 Y N - - -

被選挙権あり ○

被選挙権なし ○ ○ ○ ○

Copyright (C) 2010 WACATE All rights reserved

テーブル圧縮結果

31

参議院被選挙権

日本国民で年齢満30年以上の者は参議院議員の被選挙権を有する。ただし、例外的に被選挙権を有しない者については公職選挙法に規定がある。

ウィキペディア(改)

参議院被選挙権

#1 #2 #3 #4

日本国民 Y Y Y N

満30年以上 Y Y N -

公職選挙法の規定 Y N - -

被選挙権あり ○

被選挙権なし ○ ○ ○

Copyright (C) 2010 WACATE All rights reserved 32

それでは演習の時間です

個人で解いて、隣どうしで説明してみよう!

Copyright (C) 2010 WACATE All rights reserved

イタリア料理屋さんの割引

33

問題

12月中の月曜日のコース料理ご利用で¥5000から2割引き!

Copyright (C) 2010 WACATE All rights reserved

パスワード登録プログラム

34

問題

入力された文字列がパスワードとして適切かどうかを以下の順序で判定する。

(1) 長さが、5~16文字でない場合はエラー表示

(2) アカウント名と同一文字列であればエラー表示

(3) 記号を含む場合はエラー表示

Copyright (C) 2010 WACATE All rights reserved

運転免許の有効期限

35

問題

免許証の有効期限は次のようになっている。このルールをデシジョンテーブルで表せ。

優良運転者 更新時の年齢が69歳以下 5年間

更新時の年齢が70歳 4年間

更新時の年齢が71歳以上 3年間

一般運転者 3年間

初回更新者 2年間

Copyright (C) 2010 WACATE All rights reserved

三色旗判定プログラム

36

問題

縦三色旗の画像を入力すると、4カ国の国名を出力するプログラムがある。該当しない場合は「不明」と出力

・フランスは左から青・白・赤

・イタリアは左から緑・白・赤

・メキシコは左から緑・白・赤で中央に鷲マーク

・ルーマニアは左から青・黄・赤

・左→中央→右の順で色とマークを判定

※色の濃淡は無視してください

フランス イタリア メキシコ ルーマニア

Copyright (C) 2010 WACATE All rights reserved 37

グループ演習

・解答を説明してみよう・工夫したところ、悩んだところ・仕様などで確認したいところ

Copyright (C) 2010 WACATE All rights reserved 38

発表してみよう

Copyright (C) 2010 WACATE All rights reserved 39

最後に

Copyright (C) 2010 WACATE All rights reserved

デシジョンテーブルの補足

40

注意したいこと

経験が必要

デシジョンテーブルが適切かどうかの判断

テスト対象の分析

テーブル作成や圧縮作業

開発と連携してテーブル作成

判定順序・動作順序が重要

関連するテスト技法・手法を利用

原因結果グラフ

CFD法

Copyright (C) 2010 WACATE All rights reserved 41

技と術と芸

Copyright (C) 2010 WACATE All rights reserved

技と術と芸

42

技[わざ]• 特定の目的を持ち、その目的を果たすための手段・手法

参考:ウィキペディア

Copyright (C) 2010 WACATE All rights reserved

技と術と芸

43

術[じゅつ]• 技を体系的にまとめ、改変が施されて流派に分かれたり、統一されたすべ

参考:ウィキペディア

Copyright (C) 2010 WACATE All rights reserved

技と術と芸

44

芸[げい]• 個性的・独創的で継承することが困難だが、作品を確認することで業績を知ることができる技能

参考:ウィキペディア

Copyright (C) 2010 WACATE All rights reserved 45

技法はこれにてつぎは

近江さん&井芹さん