66.テストの7原則 その⑥
原則5「殺虫剤のパラドックス」
パラドックスは「矛盾」といったような意味。
最強の矛と最強の盾の話もパラドックスの一つ。
殺虫剤のパラドックスはというと……
虫を駆除するために殺虫剤を使う
↓
最初のうちはよく効く
↓
その殺虫剤に対しての耐性がつきその虫が駆除できなくなる
↓
その虫を駆除するために新しい殺虫剤を使う
↓
最初のうちはよく効く
↓
その殺虫剤に対しての耐性がつきその虫が駆除できなくなる
↓
その虫を駆除するために新しい殺虫剤を使う
↓
最初のうちはよく効く
↓
その殺虫剤に対しての耐性がつきその虫が駆除できなくなる
↓
以下エンドレスループ。
テストも同様で、同じテストケースばかり使っていると、そのテストケースではバグは発見できなくなる。
そのテストケースで出たバグは修正されるのだから当然である。
ここに新しいテストケースを追加すると、また新たなバグが発見できるようになる。
もちろんそのテストケースを実施すると、そこで出たバグは修正され、新しいバグは出なくなるのである。
(もちろんこれは良いループですヨw)
気を付けてほしいのが、同じテストケースばかりの実施である。
そのテストケースではバグは出なくなってくる。
バグは出なくなったからそのプロダクトは大丈夫!……というとそんなことはなく、別パターンでのバグが探されていない可能性が高いゾ。
CIで回している自動テストも同様である。
デグレチェックの意味合いで回すなら良いが、それで新しいパターンのバグを見つけられるかな……という期待はしてはいけない。
デグレ
デグレードの略。
バグを修正した後、他の場所が壊れていたり、前より悪くなってしまうことがあるのだ。
ユニットテストがあまり書かれていないプロダクトは、テストの後半はデグレとの戦いになるゾ!
テストケースを通してバグ修正されたからもう大丈夫……と安心しないで、リグレッションテストを通すことはしておこう。
そうしないとリリースした後に「え!?なんでそこ動いてないの!?」みたいなことになるゾ。
(きっとテストをやってると1回は通る道だよ……)
じょうじ
ずばりテラフォーマーズですw
ただ作者はテラフォーマーズはちょっとしか見たことがなかったりします。
……なんか殺虫剤かけてるというよりヘアスプレーをかけてるような絵になってしまった……。
1コマ目
MMRを意識したけど……伝わらないだろうなぁ……。
説明系マンガの描き方を勉強しようと思って手にしたのがMMRでした(爆