プログラミングとテスティングにおけるアンチパターン?
キーワード
最近聞いて憤慨した話
次のようなコードについてユニットテストを書いたら、
「それではホワイトボックステストになっていないじゃないか」、と
お叱りをうけた方がいらっしゃいました。
void proc_b() { // 何かの処理。副作用はない } int proc_a(int x) { int cond_a = 0; int ret = 0; // 何かの処理(ret に何かが入る) cond_a = x == 0 ? 1 : 0; if (cond_a) { proc_b(); } return ret; } int test_proc_a_when_x_is_0() { assert(n, proc_a(0)); } int test_proc_a_when_x_is_1() { assert(n, proc_a(1)); } int test_proc_a_when_x_is_2() { assert(n, proc_a(2)); }
とりあえず、proc_b
にはなんの副作用も無いようです。
とにかく proc_a
を実行した結果として proc_b
が
呼ばれたことを確認できないのであれば、それはホワイトボックステストではない、という主張のようです。
おかしいを通りこして面白い考えだなぁとか思ったりしました。