Upload
masaki-kase
View
503
Download
3
Embed Size (px)
Citation preview
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
デシジョンテーブルとは?
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
テーブルの大きさ
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
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
パスワード登録プログラム
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
デシジョンテーブルの補足
40
注意したいこと
経験が必要
デシジョンテーブルが適切かどうかの判断
テスト対象の分析
テーブル作成や圧縮作業
開発と連携してテーブル作成
判定順序・動作順序が重要
関連するテスト技法・手法を利用
原因結果グラフ
CFD法
Copyright (C) 2010 WACATE All rights reserved
技と術と芸
43
術[じゅつ]• 技を体系的にまとめ、改変が施されて流派に分かれたり、統一されたすべ
参考:ウィキペディア
Copyright (C) 2010 WACATE All rights reserved
技と術と芸
44
芸[げい]• 個性的・独創的で継承することが困難だが、作品を確認することで業績を知ることができる技能
参考:ウィキペディア