« [ゲゲゲの鬼太郎 第37話] 炎髪灼眼のカナ (違w | トップページ | [.NET] WPF のコントロールの座標を取得する »

2007年12月17日 (月)

TDD と C0 カバレッジ

Visual Studio Team System 2008 Developer Edition ( 長い~ orz ) には、 標準で C0 カバレッジを計測する機能が付いています。 ( 下の Edition でも、 NUnit + NCover を使うことでカバレッジを測定できます。 )
そこで、 「目標! C0 100% !!」 ( 自動生成コードは除く f(^^; ) ということになるんですが…
計測してみたら C0 100% に届いてなかった時の対応が問題になります。

TDD 的には、 良い対応と悪い対応の例は、 こんなふう。

× 通ってなかったコードをカバーするために、 テストを追加する。

通ってなかったコードを削除してから、 テストの不備を検討する。

端的には、 カバレッジを上げるためだけの無意味なテストを書くな、 ということです。

TDD は、 先に単体テストコードを書き ( 外部設計 )、  それに見合うだけの納品コードを書きテストをパスさせ ( 作れることの実証 )、 それからリファクタリングします ( 内部設計 )
しかも、 一度に全部を作るのではなく、 ちょっとずつ、 テストコード → 納品コード → リファクタリング を、 グルグルと廻していきます。
ちょっとずつ外部設計と納品コードを交互に育てていくことで、 設計への理解が深くなります。
ちょっとずつテストを追加し、 それにパスするだけの最小限の納品コードを増やしていくことで、 テストされていないコード、 すなわち外部設計と関係無いコードが混ざってしまうのを防ぎます。
なので、 上手く TDD 出来ていると、 C0 100% になってます。 ( そのハズ f(^^; )

それでも、 チェックしてみたら 100% になってなかったときは…
まず、 外部設計 ( テストコード ) とは何の関係も無い、 それらのコードを消してしまいましょう。( コメントアウトでも可 )
そしたら、 消したコードのことは忘れて f(^^;
テストコードを見直しましょう。 クラス/メソッドの外部設計として、 不足が無いか…? 勘違いしてないか…?
テストの欠落に気付いたら、 あとはいつも通りです。 テストを追加し、 納品コードを増やし、 リファクタリングです。 ( このとき運がよければ、 さっき消したコードを復活させるだけで済むかもしれません。 f(^^; )

|

« [ゲゲゲの鬼太郎 第37話] 炎髪灼眼のカナ (違w | トップページ | [.NET] WPF のコントロールの座標を取得する »

プログラミング」カテゴリの記事

-プログラミング ( 開発プロセス )」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: TDD と C0 カバレッジ:

« [ゲゲゲの鬼太郎 第37話] 炎髪灼眼のカナ (違w | トップページ | [.NET] WPF のコントロールの座標を取得する »