- Kengo_TODA
- 1090
- 0
- 1
- 0
@PoohSunny @Morlin1129 @gen_84 Pairwise test のfactor/levelをtddにおけるテストケース作成に使うのはアンチパターンだ!みたいな話って聞いたことありますか?Pairwiseってtddよりはバグ出し向きという先入観があります。
2013-10-06 20:20:47@PoohSunny @Morlin1129 @gen_84 個人的には粒度が粗すぎるものの悪くない方法だと思ってて、特に新人さんに「何を保証すべき・確認すべきか」を体系的に考えてもらうきっかけとして優れてるのではとの仮説を持っております。
2013-10-06 20:23:41@eller86 @Morlin1129 @gen_84 まず私の知る中ではアンチパターンとは聞いたことはありません。個人的には、効果的なテストケースの実行ができるので、tddするときも予め頭に入っているとすごく良いと思います。(つづく)
2013-10-06 20:29:34@eller86 @PoohSunny @gen_84 わたしも聞いたことないですね。むしろペアワイズはUnitTestのほうが使い勝手いいかもと言う話をしたことがあるくらいなので、考えたことがなかったなぁ
2013-10-06 20:35:01@PoohSunny @eller86 @Morlin1129 @gen_84 (つづき)ただし、それをもとにtddしようとすると、おそらく予め複数のテストを書いて赤くしておくことになる気がします。しかもそれらの値の組み合わせは直感的にわかりにくい。(つづく)
2013-10-06 20:40:43@PoohSunny @eller86 @Morlin1129 @gen_84 そうなると、tdd的には『一度に複数のものを相手にしすぎ』な気がします。tddはあくまで開発促進のための手段なので、一個一個順番にフォーカスしていくほうがいいと考えています。
2013-10-06 20:42:48@PoohSunny @eller86 @Morlin1129 @gen_84 (つづき)逆に、そのあたりのテストケースの作り方が工夫できて、リズム良く、小刻みにRed Green Refactoringが回せるなら、積極的にやればいいと思います。(つづき)
2013-10-06 20:44:44@PoohSunny @eller86 @Morlin1129 @gen_84 個人的な感覚から言うと、そういうテストケースに工夫していいtddのリズムを保つことは、結構レベルが高いかな、と思います。なので、とりあえずペアワイズとかは気にせずtddして、ソースをプッシュする際や
2013-10-06 20:46:27@PoohSunny @eller86 @Morlin1129 @gen_84 レビューする際に、ペアワイズ法でテストケースの圧縮(残さなくてもいいテストを削る)とかするのがいいかな、と思いました。長くなってしまいましたがおしまいです。
2013-10-06 20:47:24@PoohSunny @Morlin1129 @gen_84 なるほど、悪くはないがリズムが狂うのではという懸念ですね。ありがとうございます。気にしてみます。
2013-10-06 20:47:25ペアワイズ法がUnitTest向きってどういう意図なんですかね。。。あんまり理解できないな。 [休眠*´×`*エンジニア]
2013-10-06 20:48:06@eller86 @Morlin1129 @gen_84 その通りです。特に新人さん向けにtddを伝えるなら、まずはリズムを大事にしたほうがいいと思います。効果的なテストに昇華させるのは次のステップだと考えています。
2013-10-06 20:49:22因子間の値が結果において直交するときにおいて、因子数増加によるテスト件数増加を比較的ゆるやかにしたいという欲求を満たしやすいのがペアワイズなわけであって、ユニットテストでそういったテストをしたほうがよい場面があるのかな。 [休眠*´×`*エンジニア]
2013-10-06 20:50:38とりあえずペアワイズを先にやることでバグのあたりをつけるとかはできるかもしれないけれど、ユニットテストくらい小さいものにおいて因子の影響範囲ってあたりをつけるとかそういうことができる範囲なのかわかりにくい気がする。バグが出ればそれでよいのかもな。 [休眠*´×`*エンジニア]
2013-10-06 20:53:15@eller86 @Morlin1129 @gen_84 あ、それもそうかもですね。ならふっかけても良いかもです。最終的に自分の型を見つけられればそれでいいと思うので。
2013-10-06 20:53:48@PoohSunny @Morlin1129 @gen_84 あと、Javaでテスト可能な実装を考えるとやはりDIかつSRPが中心になるので、早い段階で責務の数と種類を認識することが大切だと考えてます。factorを意識することはこの一助になるので、早めに考えて欲しいかなと。
2013-10-06 20:54:26@PoohSunny @Morlin1129 @gen_84 リズムというのは気にしたことがなかった(やれて当然というバイアスがあった)ので、次クールから優先度上げて見て行きます。ありがとうございます。
2013-10-06 20:56:03ユニットテストのレビューで境界値を綺麗に並べたペアワイズであるということをどれくらい意識的にできるのか難しいような気がした。対象関数のレイヤーにもよるよなぁ。パブリックというかユーザーに近いレイヤーであれば効果が大きいけど、小さい関数だと辛いだけでは [休眠*´×`*エンジニア]
2013-10-06 20:58:06@eller86 @Morlin1129 @gen_84 はーい! 私の知る識者からもコメントをいただいてますので、適宜そちらもご参考にしていただければと思います!
2013-10-06 20:58:40@PoohSunny @Morlin1129 @gen_84 きょん氏のみ観測してますので、他にいらしたら教えてください。
2013-10-06 20:59:48@kyon_mm 微則を狙った組合せテスト(ペアワイズ等)がユニットテストで有効だとすると、そのユニット内がまだ最小単位にできていない、とも取れますよね。なので、ペアワイズはより大きな範囲で効果的、だと思います。
2013-10-06 21:00:15つまりは、ペアワイズしないといけないくらい関数が大きいのはある程度責務の大きい関数なわけで、そうではない場所で「ずっと残そうと思って書いたテストコード」としてペアワイズを書くのは負債になる可能性がでかい。気がする。 [休眠*´×`*エンジニア]
2013-10-06 21:00:41