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(^^; )
| 固定リンク
「プログラミング」カテゴリの記事
- 【.NET / Win8.1 ストアアプリ】 HttpClient で TLS 1.1 / 1.2 に対応するには(2018.06.17)
- 【VS2017 15.7pv2】 XAML のランタイム ツールに 「ヒートマップ」 が増えた(2018.03.28)
- 【.NET Core】 プロジェクトを作ると 「project.assets.json が見つかりません」 エラー(2018.02.10)
- 【#UWP】 ビットマップの表示色を変える (Win2D.uwp 経由で Direct2D を使う)(2017.08.23)
- 【#UWP】 CompactOverlay モード: Picture in Picture というか、「最前面に表示」するウィンドウを作る(2017.08.16)
「-プログラミング ( 開発プロセス )」カテゴリの記事
- Visual Studio 11 beta は Windows 8 beta と同時リリース! なんと、 TFS に Express 登場!!(2012.02.24)
- [本] アジャイルサムライ ~ アジャイルマインドの伝道書(2011.11.12)
- [MEMO] ファンクションポイントの算出法、あれこれ(2011.10.11)
- アジャイル開発を失敗させる 7つの大罪(2010.10.24)
- [岡崎図書館サイバー冤罪事件] MDIS って CMMI 認定を受けてる優秀なソフトウェア開発会社なんでしょ?(2010.09.26)
この記事へのコメントは終了しました。
コメント