http://ooltcloud.sakura.ne.jp/blog/200905/article_01215400.html からの続き。
手前味噌なんで当然でなのですが、先のテストでは、以下のケースが考慮されていません。(もっともまだあるかもしれません)
1.桁落ちの場合を確認していない。(例: RightShift(3, 1) = 1)
2.&HFFFFFFFFを、1bit右シフトすると何になるか?
3.シフトするbit数が32を超えた場合はどうするか?
4.シフトするbit数にマイナスを指定された場合はどうするか?
すると例えば、以下の障害が後日露見されたりします。
1.RightShift(3, 1) で 1 を期待したが 2 が戻る。
2.&H7FFFFFFF を期待したが &HFFFFFFFF が戻る。
3.例外を期待したが、0が戻る。
4.RightShift(3, -1) で 6 を期待したが 0 が戻る。
障害が露見したとき、コードを書いた人間の立場になって考えると大体以下な感想(言い訳)があるんじゃないかと。
1.value を 2の shiftBit 乗で割ってみました。
2.&H7FFFFFFF まではちゃんと正しくシフトします。
3.32を超えたら例外にするのですか?
4.マイナス指定だと左シフトにするのですか?
障害の原因は、知識の問題であるとも言えるし、仕様が明確でなかったという問題であるかもしれません。が、ここで言いたいことは、テスターが知らない、または、不要(テストするまでもない)、と考えたとき、テストケースにのってこない、ということです。
http://ooltcloud.sakura.ne.jp/blog/200905/article_02185910.htmlへ続く。
テストはしていないのか?(4) | オールトの雲
[...] http://ooltcloud.sakura.ne.jp/blog/200905/article_02185850.html からの続き。 [...]
Link | 2012年10月22日 22:58