原因結果グラフ技法を学んでみよう！
使ってみよう！
2010年7月2日

加瀬正樹（ニフティ株式会社）

はじめに
 原因結果グラフ技法を学ぼう まずは「原因結果グラフ」について解説します 例題を使って「原因結果グラフ」を描いてみます 演習問題のグラフを作ってみよう まずは一人で描いてみよう 近くの人とグラフの違いを見比べてみよう ツールを使って使ってみよう 支援ツール「CEGTest」を使って、演習問題を解いてみよう デシジョンテーブルについても少し解説します 解答を発表してみよう

途中で休憩をいれます2

ソフトウェアテストシンポジウム2010 四国

自己紹介
名前
所属

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

主な活動

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

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

ソフトウェアテストシンポジウム2010 四国

原因結果グラフ技法の解説

4

ソフトウェアテストシンポジウム2010 四国

原因結果グラフ技法とは Cause-Effect Graph（CEG）


5

複雑な仕様を持つテスト対象の入力やイベント(=原因)の組合せと、出力(=結果)との論理関係をグラフ化し、デシジョンテーブルを作成する組合せテスト設計技法
直交表系

デシジョンテーブル系

技法の種類

直交表
HAYST法®
All-Pair法

デシジョンテーブル
原因結果グラフ技法
CFD法

効用

入力条件がそれぞれ無関係と思われるテスト対象に適用し、関係がないことを確認する

入力条件が複雑な関係性を持つテスト対象に適用し、論理関係が正しいことを確認する
ソフトウェアテストシンポジウム2010 四国

原因結果グラフ技法の効果
 仕様バグを見つけたり、仕様自体の見直しができる見直し見直し

 論理関係の網羅性が高いテスト条件を作れる

カバレッジ表を用いて効率的にテスト条件が作れます6

ソフトウェアテストシンポジウム2010 四国

原因結果グラフ技法の手順①原因結果グラフを作成
毎時0分
E

∨

②デシジョンテーブルを作成#2

#
3毎時0分

T

F

F

毎時30分

F

T

F

通知設定

TFT

中間定刻

TT

F

結果

音が鳴る

T

F

F

原因定刻

毎時30分

#
1
∧
音が鳴る

通知設定

③テストケースを作成
No

テストケース

期待結果

1-1

通知設定をして0時0分音が鳴る

2-1

通知設定をせず1時30分

音は鳴らない3-1

通知設定をして2時1分音は鳴らない

3-2

通知設定をして11時59分

音は鳴らない…

…

…

7

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの作成

8

ソフトウェアテストシンポジウム2010 四国

例題
例 ATMの手数料
ATMでは引出、預入、振込の機能があり、夜23時～翌朝8時までは手数料が発生する。ただし、優遇会員の場合は、終日手数料がかからない。

9

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの描き方（１/３）
 仕様から原因・結果を見つける「結果」とはテストで確認したいこと！
 仕様書をボールペンで汚してみよう！


手数料がかかるかどうか

例 ATMの手数料
ATMでは引出、預入、振込の機能があり、夜23時～翌朝8時までは手数料が発生する。ただし、優遇会員の場合は、終日手数料がかからない。

手数料あり

振込
預入

引出10

夜23時～朝8時
優遇会員

手数料なし

手数料あり でない

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの描き方（２/３）
 原因と結果を結び付ける「IF～THEN～」が見つかれば、論理関係がある！
 仕様を言い換えてみる！
例 ATMの手数料
ATMでは引出、預入、振込の機能があり、夜23時～翌朝8時までは手数料が発生する。ただし、優遇会員の場合は、終日手数料がかからない。
夜23時～朝8時 かつ 優遇会員

以外で ATM利用

引出 または 預入

IF 夜23時～朝8時∧￢ 優遇会員

IF 引出∨ 振込

11

∨ 預入

なら 手数料あり

または 振込∧ ATM利用 THEN 手数料あり

THEN

ATM利用
ソフトウェアテストシンポジウム2010 四国

原因結果グラフの描き方（２/３）
 原因と結果を結び付ける

引出

OR条件で結び付ける

預入∨ ATM利用∧ 手数料あり

振込
夜23時～朝8時
優遇会員
12～は否定を表す

AND条件で結び付ける

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの描き方（３/３）
 制約を見つける

ありえない組合せを除去するために制約を考える！

例 ATMの手数料
ATMでは引出、預入、振込の機能があり、夜23時～翌朝8時までは手数料が発生する。ただし、優遇会員の場合は、終日手数料がかからない。

引出13と預入 と 振込はいずれか１つだけ利用可能 ⇒ONE

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの描き方（３/３）
 制約を見つける

ありえない組合せを除去するために制約を考える！

ONE制約を書きこむ
引出ONE

預入
振込

∨ ATM利用∧ 手数料あり

夜23時～朝8時
優遇会員
14

ソフトウェアテストシンポジウム2010 四国（参考）原因結果グラフの制約
ONE制約
唯一つだけが真（T）となる制約
例）男性、女性
勝ち、負け、引き分け

EXCL制約
高々一つが真（T）となる制約
例）小学生、中学生、高校生
PowerUser、AdminUser

INCL制約
少なくとも一つが真（T）となる制約例）JaSST四国を知った経緯
テストで興味のある分野
15

ソフトウェアテストシンポジウム2010 四国（参考）原因結果グラフの制約
REQ制約
Aが真（T）であるためにはB、Cが真（T）でなければならない例）ランプが点灯するには電源が必要

MASK制約
Aが真（T）ならばB、Cの真偽は確認できない（M）
例）全スライド印刷ならば、ページ指定はdisable

16

ソフトウェアテストシンポジウム2010 四国

原因結果グラフの完成！
例 ATMの手数料
ATMでは引出、預入、振込の機能があり、夜23時～翌朝8時までは手数料が発生する。ただし、優遇会員の場合は、終日手数料がかからない。

引出ONE

預入
振込

∨ ATM利用∧ 手数料あり

夜23時～朝8時
優遇会員
17

ソフトウェアテストシンポジウム2010 四国

それでは、個人演習スタート！

紙とペンを使って原因結果グラフを描こう！
18

ソフトウェアテストシンポジウム2010 四国

演習1 ＦＴＰクライアントソフト
接続ボタンをクリックすると設定されたサーバにログインする。パスワードが誤りの場合は、エラーが表示される。
また、パスワードが未設定の場合も同様。閉じるボタンをクリックしてFTPソフトは終了する。

19

ソフトウェアテストシンポジウム2010 四国

演習2 メモ帳の保存メモ帳でファイルを保存するには「上書保存(S)」「名前を付けて保存(A)」の2通りある。「名前を付けて保存(A)」の場合、ダイアログが表示される。新規ファイルの場合はいずれの場合もダイアログ表示。

20

ソフトウェアテストシンポジウム2010 四国

CEGTestを使ってグラフを描こう！

ノートPCをお持ちの方はツールのご用意を
21

ソフトウェアテストシンポジウム2010 四国

支援ツール「CEGTest（セグテスト）」
 ブラウザベース（JavaScript）のテスト設計支援

ツール

22

ソフトウェアテストシンポジウム2010 四国

支援ツール「CEGTest（セグテスト）」
 マウス操作で原因結果グラフが描ける！
 編集しながら、デシジョンテーブルも自動更新！
 インポート・エクスポートが可能！

IE、Firefox、Chrome、Safari、Operaで動作します23

ソフトウェアテストシンポジウム2010 四国（参考）デシジョンテーブルとは？
 論理関係を表形式で整理するためのツールで、行方向に条件と動作、列方向にルールの組合せる
#1

#2

#3

#4

#5

T

F

F

F

T

品質に興味がある－

T

F

F－

会社の指示

－ －T

F

－

予定があいている

T

T

T

T

F

T

T

T

F

F

条件 テストに興味がある

動作 JaSSTに参加「テストに興味がある 」かつ 「予定があいている」⇒ 「JaSSTに参加」
24

ソフトウェアテストシンポジウム2010 四国

演習3 ToDoリストアプリの表示テスト
ToDoリストアプリがあり、一覧表示は以下の条件で強調される。
•期限切れ：赤字・太字•期限当日：太字
また、タスク重要度（A＞B＞C）がCのときは強調されず、完了タスクは一覧表示されない

×日付

タイトル状態

6/30

PPT作成変更▼7/2

テスト仕様書…

変更▼

7/5

メンテ作業変更▼

7/6

資料チェック変更▼

▽next

Ｂ▼
年

25月日

追加

ソフトウェアテストシンポジウム2010 四国

最後にまとめです

演習お疲れ様でした！

26

ソフトウェアテストシンポジウム2010 四国今日の演習を今後につなげよう 原因結果グラフを作ってみました

仕様バグを見つけたり、仕様の見直しに役立てよう！
 論理関係のバグ探しが効率的になるよ！
 CEGTestを使ってみました

気軽にCEGをテスト設計に使ってみよう！
 CEGTestマスターになろう！
CEGTest
http://softest.cocolog-nifty.com/blog/cegtest.html

お問い合わせkase.masaki@gmail.com
27

ソフトウェアテストシンポジウム2010 四国

3時間お疲れ様でした！

28

ソフトウェアテストシンポジウム2010 四国