【テスト】単体テストとテスターターター
- 2009.03.21 Saturday
- 10:47
単体テストをしててつくづく思いました。クラスの責務が明瞭でないとか、関連するクラスでクラスの責務の矛盾に対する帳尻あわせしていたりすると単体テストが意味不明なテストになってしまいます。
「ゴミ入れゴミ出し」というのがありますが、
オブジェクト同士のメッセージのやりとりの中で
非ゴミ入れ→(オブジェクト)ゴミ出し → ゴミ入れ→(オブジェクト)→非ゴミ出し
みたいな現象が起きていたりします。トータルとして、正常な動きをしているように見えるわけですが、あるオブジェクトでの実装ミスをあるオブジェクトがリカバリーしているだけです。クラス単位の粒度を行う単体テストでは「非ゴミ入れゴミ出し」という単位でテストが行われるため、単体テストが成り立たなくなります。また、「非ゴミ入れゴミ出し」が複数から呼び出される状況になると、手のつけようが無くなってしまいます。・・・よくあることですが・・・(笑)クラスに対して正しく責務を与えることは非常に重要です。それを保証するためにも単体テストは非常に重要だと思います。
ごめんなさい、ものすごく当たり前の事をさも知ったげに書いただけですね。でも実践するのは意外にむずかしいですよね!ね!
最近、テスターをがんばってやってます。あと自分の考えをまとめてます。はい。
「ゴミ入れゴミ出し」というのがありますが、
オブジェクト同士のメッセージのやりとりの中で
非ゴミ入れ→(オブジェクト)ゴミ出し → ゴミ入れ→(オブジェクト)→非ゴミ出し
みたいな現象が起きていたりします。トータルとして、正常な動きをしているように見えるわけですが、あるオブジェクトでの実装ミスをあるオブジェクトがリカバリーしているだけです。クラス単位の粒度を行う単体テストでは「非ゴミ入れゴミ出し」という単位でテストが行われるため、単体テストが成り立たなくなります。また、「非ゴミ入れゴミ出し」が複数から呼び出される状況になると、手のつけようが無くなってしまいます。・・・よくあることですが・・・(笑)クラスに対して正しく責務を与えることは非常に重要です。それを保証するためにも単体テストは非常に重要だと思います。
ごめんなさい、ものすごく当たり前の事をさも知ったげに書いただけですね。でも実践するのは意外にむずかしいですよね!ね!
最近、テスターをがんばってやってます。あと自分の考えをまとめてます。はい。