書こう!ユニットテスト vol.1 ナンデ?

24
書こう!ユニットテスト vol.1 ナンデ?

Upload: takaaki-hirano

Post on 22-Jul-2015

269 views

Category:

Technology


3 download

TRANSCRIPT

書こう!ユニットテストvol.1 ナンデ?

ユニットテスト書いてますか?

書きましょう

しかしそもそも、何故ユニットテストを書くべきなのか?

(自動テスト一般に当てはまる話もあり)

1. 新規コードのバグを発見できる

バグの早期発見 周囲のコードにも人にも影響範囲の小さい内に修正できる

1. 新規コードのバグを発見できる

バグの早期発見 周囲のコードにも人にも影響範囲の小さい内に修正できる

バグの原因が明確化される 当然、どのクラスのどのメソッドが問題であるか明らか バグの発見・修正・確認にかかるコストが削減される

1. 新規コードのバグを発見できる

バグの早期発見 周囲のコードにも人にも影響範囲の小さい内に修正できる

バグの原因が明確化される 当然、どのクラスのどのメソッドが問題であるか明らか バグの発見・修正・確認にかかるコストが削減される

手動ではカバーしにくい部分をテストできる 実際のアプリケーションではユーザー入力できない値など

1. 新規コードのバグを発見できる

バグの早期発見 周囲のコードにも人にも影響範囲の小さい内に修正できる

バグの原因が明確化される 当然、どのクラスのどのメソッドが問題であるか明らか バグの発見・修正・確認にかかるコストが削減される

手動ではカバーしにくい部分をテストできる 実際のアプリケーションではユーザー入力できない値など

実行時間が桁違いに早く、繰り返しも容易 修正後のテストは面倒なので省略、という事が起こらない

1. 新規コードのバグを発見できる

既存のコードを安心して修正できる

2. 既存コードが壊れるのを防止できる

既存のコードを安心して修正できる 新規機能の追加

2. 既存コードが壊れるのを防止できる

既存のコードを安心して修正できる 新規機能の追加 バグ修正

2. 既存コードが壊れるのを防止できる

既存のコードを安心して修正できる 新規機能の追加 バグ修正 リファクタリング

2. 既存コードが壊れるのを防止できる

テストを書こうとすると自然に以下を回避できる

3. 設計が改善される

テストを書こうとすると自然に以下を回避できる ガチガチに密結合なクラス

3. 設計が改善される

テストを書こうとすると自然に以下を回避できる ガチガチに密結合なクラス 過剰に責務を持っているクラス

3. 設計が改善される

テストを書こうとすると自然に以下を回避できる ガチガチに密結合なクラス 過剰に責務を持っているクラス グローバルな変数や状態に依存するコード

3. 設計が改善される

テストを書こうとすると自然に以下を回避できる ガチガチに密結合なクラス 過剰に責務を持っているクラス グローバルな変数や状態に依存するコード 外部やミドルウェアに依存して切り離せないコード

3. 設計が改善される

4. ドキュメント代わりになる

何が仕様であるか明確になる どういう場合に例外を投げるのか? どういう場合にどのような値を返すのか?

4. ドキュメント代わりになる

何が仕様であるか明確になる どういう場合に例外を投げるのか? どういう場合にどのような値を返すのか?

クラスの利用サンプルになる このメソッドは何をするものなのか?

4. ドキュメント代わりになる

何が仕様であるか明確になる どういう場合に例外を投げるのか? どういう場合にどのような値を返すのか?

クラスの利用サンプルになる このメソッドは何をするものなのか?

コードと結びついているので古びる心配がない 少なくとも他のドキュメントよりは

4. ドキュメント代わりになる

書きましょう