CFDに関するtweet拾い読み。

第4回「ソフトウェア技法ドリル」勉強会、およびその後にかわされたCFDに関するtweetを、自分の復習のためにピックアップしました。
2
ゆにまる @Unity1004

@snsk @Yuko_Ski どの粒度でテストしたいかはズームアウトするかしないかで、複数の同値図に分けるかどうかはズームアウトできるかどうかな気がしますが、違うのかなぁ~?っていう予感もします。

2011-04-03 13:34:37
しんすく(け) さん。 @snsk

@Unity1004 @Yuko_Ski ズームアウトするかしないか、はテスト設計者の意思次第になるのかなー。例題のような同値クラスだとかなり上位の”機能”がはいってますね。何度か使ってみないと判らない感じです^-^;

2011-04-03 14:03:20
Yuko Sakai @Yuko_Ski

@snsk @Unity1004 ズームアウトという考えは、原因結果グラフの補講に出たときにもきになりました。これは、テストのスコープをどう置くか(広げるか)という考えからきているのですよね。(つづく)

2011-04-03 14:09:58
Yuko Sakai @Yuko_Ski

@snsk @Unity1004 確かにテストの粒度により、何を同値クラスにするのかという捕らえ方は変わるのでしょうね。これは、先ほど @akiyama924 さんが投げかけられた、「何が単機能か」という問題につながりますね。(つづく)

2011-04-03 14:12:52
Yuko Sakai @Yuko_Ski

@snsk @Unity1004 @akiyama924 テストのスコープが狭ければ、単機能の粒度も細かくなり、同値図も無効系の条件が簡素になってきて、ベン図の重なる部分の扱いもさほど難しくないのだと思います。 逆に、スコープの広いテストでは、すごく迷いそうに思います。

2011-04-03 14:18:57
しんすく(け) さん。 @snsk

@Yuko_Ski @akiyama924 @Unity1004 ほぼ同じ問題が単体テストと結合テストの境目にも表れるのですが、これだけシステムが複雑になっている状況では *設計者 が何らかの方針に基づいて”割る”しかないんじゃないかなーと今は思います。

2011-04-03 14:21:53
Yuko Sakai @Yuko_Ski

@snsk @akiyama924 @Unity1004 「機能って何?」の命題は難しいです。設計だと、手続きの固まり(メソッド)とか、オブジェクトとか思いがちですが、=単機能ではない。実は、テスト設計してみて、皆さんが機能項目ってどうやって考えているかも聞いてみたかった。

2011-04-03 14:32:21
鈴木三紀夫 @mkoszk

@Yuko_Ski @snsk @akiyama924 @Unity1004 単体テストと結合テスト。僕と秋山さんは、同じ言葉を使っていながら、喋っている内容が異なります。勉強会のとき、気をつけていたつもりなんだけど、配慮が足りなかったなぁと反省しています。

2011-04-03 22:12:41
Kazu SUZUKI @kz_suzuki

@akiyama924 秋山さん、1点教えていただけますでしょうか。「有効系」「無効系」の線引きは機械的に決まるものではなく、人の判断によるのでしょうか。たとえば普通には「高血圧症でない」は無効系になりそうだが、仕様によっては有効系と見なす、ということがあるのでしょうか。

2011-04-03 23:33:59
Kazu SUZUKI @kz_suzuki

@akiyama924 「有効/無効系」と「有効/無効結果」という言葉があったり、それらが指す対象が同値図なのか、最後の結果(○で示されているもの)なのかがわからず、「無効系を割り切る」という意味が理解できずにいます。ご教示いただけると幸いです。

2011-04-03 23:39:19
Masaki Kase @softest

@kz_suzuki 「無効系を割り切る」は無効結果につながる流れの組合せを間引く、という意味だと思います。無効結果になるのは、それまでの条件の組合せの結果がどうであれ、最後の条件が重要になるので組合せをサボってもよさそう、という考え方。だと理解しています。

2011-04-03 23:58:56
Masaki Kase @softest

@kz_suzuki 反対に「有効結果」につながる流れは、組合せを意識するのがCFD法の方針です。 勉強会では主に参加者が主役になるように進行していますが、ツイッター上ではどんどん @akiyama924 さんや @mkoszk さんを巻き込んで勉強していきたいですね。

2011-04-04 00:03:21
Kazu SUZUKI @kz_suzuki

@softest ありがとうございます。おっしゃった「間引く」という行為が、CFDのフローをたどってデシジョンテーブルに落とすという作業の、どこに対応するかがわかりませんでした。ドリル本の自販機問題でいうと、残高なしならSuicaでもEdyでもどっちでもいい。ということでしょうか

2011-04-04 00:09:45
Kazu SUZUKI @kz_suzuki

暫定的な理解:たとえばログイン処理において、最終的にログインOKになるのが有効結果、NGで処理終了になるのが無効結果。各同値図の中で、OKになっていく箱(ユーザIDとパスワードの組み合わせ=OK、ユーザIDの期限=OK、など)が有効系。それ以外の箱が無効系。どうなのかしら・・・。

2011-04-04 00:19:09
Kazu SUZUKI @kz_suzuki

あ、でもこれだと1つの箱が有効系でもあり無効系でもあるということがありうるな・・・。

2011-04-04 00:22:36
Masaki Kase @softest

@kz_suzuki ドリルの例題ではカードの種類と残高は関係性がありそうなので間引かずに出現しています。でも、カードの種類と在庫は無関係に見なせそうなので組み合わせをしていないデシジョンテーブルが載っています。

2011-04-04 00:34:51
Masaki Kase @softest

@kz_suzuki 流れ図の作成者に、どこが関係性かあるかないかを考える余地があるようです。そこが難しいと僕は感じていて、なかなか理解度が上がりません!

2011-04-04 00:37:41
Kazu SUZUKI @kz_suzuki

@softest たとえばSuica/Edy/Pasmo以外のカード「A」「B」をいれた場合は購入不可、という無効系を考えて、普通にCFDから決定表を書くと、A・B両方が現れるように思います。そこで、AとBの箱を線でくっつけて、「どっちでもいいよ」とすることで間引くのでしょうか?

2011-04-04 00:45:33
あきやま🍠 @akiyama924

はい。あります。「高血圧症でない」場合、次の診断へ処理が続く場合は有効系になります。 RT @kz_suzuki: @akiyama924 秋山さん、1点教えていただけますでしょうか。「有効系」「無効系」の線引きは機械的… (cont) http://deck.ly/~2T5cU

2011-04-04 06:40:22
あきやま🍠 @akiyama924

有効系と無効系は結果を示していると考えてください。「無効系を割り切る」とは、無効系の結果に至るパスについては、組み合わせを考えずに1本だけテストすると割り切って考えるという意味です。 RT @kz_suzuki: @ak… (cont) http://deck.ly/~ZoMHR

2011-04-04 06:42:18
Kazu SUZUKI @kz_suzuki

@akiyama924 ありがとうございます。無効結果にいたる経路では、ズームアウトできる箇所をズームアウトし、有効系ではそうせずにそれぞれの組み合わせを評価する、といったことも行うことになりますか?ドリルの自販機問題をもう一度熟考してみます・・・。

2011-04-04 08:20:05
あきやま🍠 @akiyama924

@kz_suzuki なりません。CFD法では、まず、単体(単機能ではなくモジュールに近いもの)レベルで小さなCFDを作ってそこでは総当たりの組合せをテストします。

2011-04-04 08:30:31
あきやま🍠 @akiyama924

@kz_suzuki 次に単体を繋げたCFDに対してテストするのですが、こちらでは有効系の結果と無効系の結果でDTの作成方法が異なります。

2011-04-04 08:33:24
あきやま🍠 @akiyama924

@kz_suzuki 何故異なる(有効系を厚くテストする)かというと、有効系は機能の目的を果たす流れだからです。どんなシステムであっても目的を実現するために生まれたのですから。

2011-04-04 08:39:09
あきやま🍠 @akiyama924

@kz_suzuki だから無効系は最小限の確認、つまり1パスはテストしましょうと言っています。もちろん、システムの特性や要求によってもっとたくさんのテストをしてもよいです。

2011-04-04 08:42:11