テストが成功すれば、出荷できる程度の確信が持てる
大幅に低下する
テストがあれば → 変更が怖くない → クリーンなコードにできる → クリーンなコードは理解しやすい → 変更が怖くない
TDDの3原則に沿って書いたユニットテストは、システムの使い方を説明したサンプルコードになっている
他の関数を呼び出している関数をテストするのは難しい → その関数を他から切り離す方法を考える → うまく疎結合した設計になる
プログラミングの問題を解くためのキーボードやマウスの動きの練習。
脳や指に動きや反応を覚えさせるために何度も練習する。
完了とは、すべてのコードを書き終え、すべてのテストが成功し、QAと関係者が受け入れたもの
ビジネスアナリスト(上流設計者)が正常系のテストを書く。 QA(品質管理者)が異常系のテストを書く。
機能を実装する数日前(直前)にその機能のテストを書く。
受け入れテストやユニットテストは、第一にドキュメントであり、第二にテストである。 受け入れテストは、ビジネスの観点からシステムの動作を定式化した要求文書である。 ユニットテストは、コードの構造や振る舞いを定式化した設計文書である。
| テストの種類 | 内容 | 継続的インテグレーション | 自動化 | 頻度 | 網羅率 |
| ユニットテスト | コードの網羅テスト | 実行する | 自動 | ビルド毎 | 100% |
| コンポーネントテスト | 機能の受け入れテスト | 実行する | 自動 | ビルド毎 | 50% |
| インテグレーションテスト | 機能の組合せテスト | 実行しない | 自動 | 定期的 | 20% |
| システムテスト | システム全体のテスト | 実行しない | 自動 | 定期的 | 10% |
| 手動探索テスト | 意図しない振る舞いの確認 | 実行しない | 手動 | 必要なとき | 5% |
コミットメントとは、達成しなければいけないものである。
コミットメントすれば、その日までに成し遂げなければならない。 自分ができるとわかるまでコミットメントしない。
見積もりは予測である。
コミットメントでも約束でもない。 見積もりが外れても恥じることはない。 どれだけ時間がかかるかわからないから見積もりをする。
暗黙的なコミットメントをしないように気をつける。
git IntelliJ Pivotal Tracker Jenkins CppUTest コンポーネントテストツール