IllegalArgumentException();}これのテストケースは次のようになります。func()のテスト。{}aはa'が変化するパターンすべてを網羅、bは取り得るパターンをすべて試すとして、3x4=12パターンのテストが必要になります。これが「かけ算の組み合わせ」です。足し算にするとは、一言で言うと「機能を分割して個別に動作を保証することで、結合テストでのテストパターンを最小にする」ことです。具体例として、上の例を足し算にしてみます。上の関数では「aを3で割ったあまりを得る」機能と「bに応じて計算する」機能の両方が含まれています。これをそれぞれ別の関数「funcA,funcB」とし、それを結合する関数として、「func2」を定義します。「func2」の仕様はもともとの「func」と同じです。IllegalArgumentException();}作成したfunc2のテストは次の通り。分割した関数ごとにテストを行います。funcAのテストでは、数字を渡し、3で割ったあまりが返されることをテストする。funcBのテストでは、数字と文字列を渡し、文字列に応じて期待通りの結果が得られることを確認する。func2のテストでは、funcAとfuncBが連携して動作していることを確認する。funcA,Bの動作はそれぞれのテストで確認済みであるので、funcAの実行結果がfuncBの引数として渡っていることを、1パターンだけ試して確認すればOK。数字を渡し、3で割ったあまりが返されることをテストする。数字と文字列を渡し、文字列に応じて期待通りの結果が得られることを確認する。funcAとfuncBが連携して動作していることを確認する。3+4+1=8で済みます。本当は「aを3で割ったあまりを得る」機能のテストでは0とか6とかも試した方がよいのでテストケースを追加するとすると、「func」の場合は(3+2)*4=24パターンになりますが、「func2」だと(3+2)+4+1=10で済みます。足し算にすることで組み合わせの爆発を回避できるわけです。まとめ以上、機能は適切に分割して効率よくテストしよう、という話でした。結合テストは大事ですが、それだけだと往々にしてかけ算の組み合わせになって、パターンが増大してしまいます。結果的に抜けが生じて網羅性が低下する。それを補完するために、機能(クラス)分割と単体テストが重要になると考えます。いうわけで、テストケースがなんか長いな、と思ったら黄色信号です。1つの関数やクラスに機能が集中している可能性が高い。テストをさぼるためにも、クラス設計をちょっと見直してみた方がいいかもしれません。いって、あんまり別けすぎるのもアレだけど。Engineでは画像変換サービスが提供されていて、画像...2010-01-28GAEのデータストアで使えるJDO関数JDO2.2で規定されている関数のうち、どれとどれがデータストア...2009-01-15文字列形式のSIDをバイナリ表現に変換するここを参考に、文字列形式のSIDをバイナリに変換する関数を書き...2009-01-13Enumって順番があるのか。»プロフィールid:unageanu今日学んだことを、ちょろちょろ書いていきます。(1)はてなブログをはじめよう!unageanuさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。