ソフトウェアテスト勉強会~CFD法を使ってみよう!~ | 仙台ソフトウェアテスト勉強会のブログ

仙台ソフトウェアテスト勉強会のブログ

2012年から立ち上げた仙台ソフトウェアテスト勉強会のことなどを綴っていきます。

9月のテーマはCFD法を使ってみよう!ということで実施しました。

場所はデータコムさんをお借りました。ありがとうございます!
今回は11名の方に参加していただき、そのうち女性が3名と、久しぶりにとても華やかな感じの勉強会になりました(笑


仙台ソフトウェアテスト勉強会のブログ


最初にいつものポジショニングマップを使い、デシジョンテーブルとCFD法の位置を確認しました。
http://www.hayst.com/Pages/positioning.aspx テスト技法ポジショニングマップ


デシジョンテーブルを簡単に説明した後に、CFD法の説明です。

英語ではCause Flow Diagram。「原因の集合」と「原因同士のつながり」に着目し、流れ線でつなぐことによって仕様を図式化し、そこからデシジョンテーブルを作成することができます。処理の順序が重要です。(ソフトウェア技法ドリルより)


さて、それでは説明もそこそこに早速書いていきましょ~と例題をやってみたのですが、今回はもう少し図や描き方のルールについてキチンと説明をするべきでした。端折りすぎました。ゴメンなさい。
※ちなみに今回の図では無効系下部の色付けはしていません。


最初の例題は前回の勉強会でも使用したログインの問題です。
***************************************************
[ログイン]
ユーザIDとパスワードの両方が正しいときに
ログインに成功する
出典)ソフトウェアテスト技法ドリル
***************************************************

CFDの書き方に関しては以下のサイトの流れが勉強になります。
http://softest.cocolog-nifty.com/blog/cfd/index.html

このサイトにも書いてますが、まずは『結果』から見つけ出しましょう!



仙台ソフトウェアテスト勉強会のブログ


続いて、みんな大好き杜王町問題。
***************************************************
[チケット]
杜王町の美術展の入場料には以下のような割引がある。
18歳以下は学割で10%割引である。
また女性の場合はレディース割りで20%割引である。
ただし、18歳以下で女性の場合は半額とする。
***************************************************



仙台ソフトウェアテスト勉強会のブログ


そして、CFDのポイントの一つであるズームイン/ズームアウトを使う問題。
***************************************************
[ジュースの購入]
カード専用の自動販売機がある。Pasmo、Suica、Edyのみを受け付け、
残高があり、売り切れでなければジュースを購入することができる。
CFD法で原因流れ図を作成してください。
出典)ソフトウェアテスト技法ドリル
***************************************************


参加者の回答を覗いてみると、最初はPasmo、Suica、Edyと3つ書いていました。
でも線を引いてみると、同じような線を3つ書く必要があるんですよね。
これは面倒だし、線が交わって図が綺麗に描けないということで、何人かの参加者から、『これはまとめることはできないですか?』と質問が来ました。
これは業務じゃないですし、気になることはどんどんやったほうが頭に残るってもんです。
それにしても自分でそれを思いつくって凄いなぁ。。。って感心しちゃいました。


<最初の図>

仙台ソフトウェアテスト勉強会のブログ

<有効なカードをまとめた図>

仙台ソフトウェアテスト勉強会のブログ


そして、ちょっと難しい駐車料金の問題。
***************************************************
[インストールの仕様]
1.横浜ベイクォーター
1店舗3,000円(税込)以上のお買上げで1時間無料
※駐車券を売場でご提示ください。

※2店舗目以降も各店舗3,000円(税込)以上のお買上げで1時間の駐車サービス券をお渡しします。

2.そごう横浜店
2,000円(税込)以上のお買上げで1時間30分無料
※駐車券を売場でご提示ください。
出典)ソフトウェアテスト技法ドリル
***************************************************


これ実は仕様を読み取るのが結構大変なのです。
1と2の条件がどう重なるのかが、ここには書かれていません。
今回の問題では、「横浜ベイクォーター系のサービス券かそごう横浜店系のどちらかの系統のサービス券しか使えない」ということが設定としてあったのです!

まあ普通に考えると合算できると思っちゃいますよね。。。
質問されたら、答えようと思っていたのですが皆さんガンガン進んでしまいました。。。


でも、ここから図を描いて議論するのは重要だという良い教訓が得られました。
開発のときにサッと書いて説明すると、仕様の勘違いがかなり減ると思います。


そして最後の問題は「CFD 技法の評価と事例に基づくガイドの作成」より、レンタルビデオ督促リスト出力機能という、ほぼ現実の仕様書に近い問題を持ってきました。
余計な情報も入っていたので、参加者の皆さんはかなり苦戦していたように感じられます。
問題と回答は以下のPDFを参考にしてください。
www.juse.or.jp/software/pdf/20_spc/8/7_d_report.pdf


ということで、最後はCFD法のメリットについてまとめです。
・紙があればパッと書ける
・補集合を意識できる

・結果を意識できる
・線で書くことで流れを意識できる
・同値分割の概念があるので、小さくまとめることができる


個人的にはテスト技法というより、仕様の整理、またはソフトウェアの設計時に使ったほうが効果があると感じています。
設計時であれば、処理の順序を見直すこともできますし、
結果を意識するので、W字モデルのアプローチに近くなると思っています。


ということで、9月もどうもありがとうございました!!


# CFDを自動的に書くツールとして、DrawCFDというツール(開発中)があります。

# 時間あるときに是非使ってみてくださいね。

drawCFD

http://softest.cocolog-nifty.com/labo/drawCFD/