トップページ > プログラム > 2017年01月03日 > 078nuCwR

書き込み順位&時間帯一覧

28 位/178 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000001100000000000002



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
テストしにくいコードをテストする方法教えて下さい

書き込みレス一覧

テストしにくいコードをテストする方法教えて下さい
926 :デフォルトの名無しさん[sage]:2017/01/03(火) 09:56:37.13 ID:078nuCwR
プログラム設計の善し悪しとテスト技法がごっちゃになってる。
このスレでテストする側とすれば設計の善し悪しなんて知ったこっちゃないのよ。スレタイ読め。

例で考えよう。
private function numberOfFeet(動物) returns 脚の数
{
 if (動物 == 人) { return 2 }
 if (動物 == 犬) { return 4 }
 if (動物 == 猫) { return 4 }
 raise exception 知らない動物
}
っていう関数が既にあるとする。
人なら2, 犬猫なら4, それ以外では実行中断というテストになって、それ以外の結果が出るはずがないのを期待している関数で、
エンドユーザに影響がない限りにおいてはこれの中身がどう実装されていようと知ったこっちゃない。
つまり可視なテストコードからの実行結果も変化すべきではない。変化するとすればそれは private 関数内部のバグと見ていい。
このプライベート関数とセットになる可視テストでそこが保証できたら、この関数をどこで使ったとしても「改めてテストをする必要がないブラックボックス」にできるわけだ。

ただ、この後、生物学あたりで人の腕も前脚だ、つまり人の脚の数は4本だというように定義が変更になった場合を考えてみて。
人の脚を訊いたら4と返すようにしないといけないのはエンドユーザにも見えるような仕様変更だから
設計をそのままにするならテストも変更せざるを得ないというのは納得いただけるかと思う。
これはプログラム設計の時には思いもよらない変更だと思うからプログラマの非ではないが、対応する必要はある。
このスレではここまでの話で済ませればいい。

では脚の数を訊く関数を廃止して別の方法を採るのか、やはりそのまま行くのか、その設計がきれいなのか汚ないのかは別の話。
このスレでの興味はあくまで既存コードのテストなので、まずはその時点で考え得るバグが検出できたらそれでいいわけ。
設計の善し悪しの話がしたいのであれば別スレ建ててやってくれ。
テストしにくいコードをテストする方法教えて下さい
927 :デフォルトの名無しさん[sage]:2017/01/03(火) 10:01:10.08 ID:078nuCwR
って、もうスレ残りほとんどないね。どうせもう >>1 もいないだろうから、どうぞやっちゃってください。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。