Top Banner
続続続続 ・』 TDD 続続 続続続 Natsuki Nishino
90

20150715 『続・断捨離』TDDの心得編

Aug 16, 2015

Download

Engineering

nackypon
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: 20150715 『続・断捨離』TDDの心得編

『続・断捨離』~ TDD 実践&心得編~

Natsuki Nishino

Page 2: 20150715 『続・断捨離』TDDの心得編

TestDriven

Development

Page 3: 20150715 『続・断捨離』TDDの心得編

テスト駆動開発

Page 4: 20150715 『続・断捨離』TDDの心得編

TDD は

『動作する、キレイなコード』

を目指す手法のひとつ

Page 5: 20150715 『続・断捨離』TDDの心得編

動くコードって?

Page 6: 20150715 『続・断捨離』TDDの心得編

普段書いているコードは

大半が動いているハズ( ・ _ ・ ;) デスヨネ ?

Page 7: 20150715 『続・断捨離』TDDの心得編

キレイなコードって?

Page 8: 20150715 『続・断捨離』TDDの心得編

バグ対応や改修が簡単にできる!

Page 9: 20150715 『続・断捨離』TDDの心得編

実装者の意図がわかる!

Page 10: 20150715 『続・断捨離』TDDの心得編

変えてみたらアレ… ?( ・ _ ・ ;)

が起きにくい

Page 11: 20150715 『続・断捨離』TDDの心得編

仲間や明日の自分がなんだこれ… ( ; ´Д

` )って

頭を抱えないコードのこと

Page 12: 20150715 『続・断捨離』TDDの心得編

まず動くようにしてからキレイにお掃除する

キレイに変更していく間に“壊していないこと”は

テストコードが担保するコレが TDD

Page 13: 20150715 『続・断捨離』TDDの心得編

どうやってやるの?

Page 14: 20150715 『続・断捨離』TDDの心得編

1.目標を考える2.その目標を示すテストを書く

3.実行して失敗させる (Red)4.テストを成功させるコードを書く (Green)

5.テストの成功を維持したまま リファクタリングする

6.1 ~ 5 を繰り返す…

Page 15: 20150715 『続・断捨離』TDDの心得編
Page 16: 20150715 『続・断捨離』TDDの心得編

ここまで前回のあらすじ

詳しくは Web で

Page 17: 20150715 『続・断捨離』TDDの心得編

TDD をやること自体は

目的ではない

Page 18: 20150715 『続・断捨離』TDDの心得編

TDD の目的はテスト自動化でもな

Page 19: 20150715 『続・断捨離』TDDの心得編

仕様通りに動いてキレイなコードを目

指す

Page 20: 20150715 『続・断捨離』TDDの心得編

TDD の心得

Page 21: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 22: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 23: 20150715 『続・断捨離』TDDの心得編

1 歩ずつ、少しずつ

Page 24: 20150715 『続・断捨離』TDDの心得編

一気にやるとどこで踏み外し

たかわからなくなる

Page 25: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 26: 20150715 『続・断捨離』TDDの心得編

動くかなぁ…

Page 27: 20150715 『続・断捨離』TDDの心得編

不安をテストに

Page 28: 20150715 『続・断捨離』TDDの心得編

動かしてみる

Page 29: 20150715 『続・断捨離』TDDの心得編

まだ動かないコードより

動いているコードに価値がある

Page 30: 20150715 『続・断捨離』TDDの心得編

動いていればバグが見つかる

Page 31: 20150715 『続・断捨離』TDDの心得編

キレイに動くように

設計にキリがなくなる

Page 32: 20150715 『続・断捨離』TDDの心得編

キレイに動くように

並行で書くのは相当なスキルが必

Page 33: 20150715 『続・断捨離』TDDの心得編

同時に 2 つ考えるのは大変

Page 34: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 35: 20150715 『続・断捨離』TDDの心得編

複数のテストを同時に書かない

Page 36: 20150715 『続・断捨離』TDDの心得編

テストコードとプロダクトコードを

同時に書かない

Page 37: 20150715 『続・断捨離』TDDの心得編

書いたテストが成功するまで

次のテストは書かない

Page 38: 20150715 『続・断捨離』TDDの心得編

書いたテストが成功するまで

次のプロダクトコードも書かない

Page 39: 20150715 『続・断捨離』TDDの心得編
Page 40: 20150715 『続・断捨離』TDDの心得編

複数同時に考えると混乱しやすい

Page 41: 20150715 『続・断捨離』TDDの心得編

テストコードにミスがあったら気付くのが遅

れる

Page 42: 20150715 『続・断捨離』TDDの心得編

Page 43: 20150715 『続・断捨離』TDDの心得編

タイマン勝負

Page 44: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 45: 20150715 『続・断捨離』TDDの心得編

そのメソッドの使い方を

テストに表現する

Page 46: 20150715 『続・断捨離』TDDの心得編

もし使いづらくても早い段階で気付ける

Page 47: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 48: 20150715 『続・断捨離』TDDの心得編

コードの仕様を動作を持って表現す

Page 49: 20150715 『続・断捨離』TDDの心得編

メソッドの使い方を動作を持って表現す

Page 50: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 51: 20150715 『続・断捨離』TDDの心得編

Page 52: 20150715 『続・断捨離』TDDの心得編

練習すれば上達する

Page 53: 20150715 『続・断捨離』TDDの心得編

• 1 歩ずつ、少しずつ•素早く、とりあえず動かす•同時に複数を相手にしない•自分が最初のユーザーになる•テストは動くドキュメント• TDD はスキル

Page 54: 20150715 『続・断捨離』TDDの心得編

ちょいテク

Page 55: 20150715 『続・断捨離』TDDの心得編

テストは動くドキュメント

Page 56: 20150715 『続・断捨離』TDDの心得編

テストは動けばそれで OK ?

Page 57: 20150715 『続・断捨離』TDDの心得編

// テストパターン 1public void test_1()…// テストパターン 2public void test_2()…// テストパターン 3public void test_3()…

Page 58: 20150715 『続・断捨離』TDDの心得編

何を確認したいテストなのか、コードをじっくり

読まないとわからない

Page 59: 20150715 『続・断捨離』TDDの心得編

テストもリファクタリングでき

Page 60: 20150715 『続・断捨離』TDDの心得編

メソッド名を日本語で書いちゃう

@Testpublic void testGetLargeNum_ 第 1 引数が大きい () { TwoNumber twoNum = new TwoNumber(6, 2); assertThat(twoNum.getLargeNum(), is(6));}

Page 61: 20150715 『続・断捨離』TDDの心得編

期待値も書いちゃう

@Testpublic void testGetLargeNum_ 第 1 引数が大きい _ 第 1 引数を返す () { TwoNumber twoNum = new TwoNumber(6, 2); assertThat(twoNum.getLargeNum(), is(6));}

Page 62: 20150715 『続・断捨離』TDDの心得編

全てのテストの共通処理

@Beforepublic void before() { System.out.println(“ テストメソッドはじめるよ");}

@Afterpublic void after() { System.out.println(“ テストメソッドおわったよ");}

Page 63: 20150715 『続・断捨離』TDDの心得編
Page 64: 20150715 『続・断捨離』TDDの心得編

全テストの最初と最後の処理

@BeforeClasspublic static void beforeClass() { System.out.println(“ テストはじめるよ ");}

@AfterClasspublic static void afterClass() { System.out.println(“ テストぜんぶおわったよ ");}

Page 65: 20150715 『続・断捨離』TDDの心得編
Page 66: 20150715 『続・断捨離』TDDの心得編

パターンテストもお掃除できる

Page 67: 20150715 『続・断捨離』TDDの心得編
Page 68: 20150715 『続・断捨離』TDDの心得編

@DataPoints で宣言したデータで@Theory のシナリオを実行する

Page 69: 20150715 『続・断捨離』TDDの心得編

テストシナリオ

テストパターン

Page 70: 20150715 『続・断捨離』TDDの心得編

( ・ `ω ・ ´)b

Page 71: 20150715 『続・断捨離』TDDの心得編

1 つだけ失敗したときにどれが失敗したかがわかりにくい

Page 72: 20150715 『続・断捨離』TDDの心得編
Page 73: 20150715 『続・断捨離』TDDの心得編

テストコードのテストコードは

プロダクトコード

Page 74: 20150715 『続・断捨離』TDDの心得編

テストのリファクタリングと

同時にプロダクトコードを変えてはいけない

Page 75: 20150715 『続・断捨離』TDDの心得編
Page 76: 20150715 『続・断捨離』TDDの心得編
Page 77: 20150715 『続・断捨離』TDDの心得編

断捨離の心得

Page 78: 20150715 『続・断捨離』TDDの心得編

継続することが大事♡

Page 79: 20150715 『続・断捨離』TDDの心得編

コピペやっつけ

動くからいっか…

時間がない変えるのが怖

Page 80: 20150715 『続・断捨離』TDDの心得編
Page 81: 20150715 『続・断捨離』TDDの心得編

TDD をやると書くコード量は増え

Page 82: 20150715 『続・断捨離』TDDの心得編

But !

Page 83: 20150715 『続・断捨離』TDDの心得編

かかる時間はそんなに変わらな

い※当人比です。

Page 84: 20150715 『続・断捨離』TDDの心得編

動いてキレイなプロダクトコードが

できる

Page 85: 20150715 『続・断捨離』TDDの心得編

改修が簡単なコードになる

Page 86: 20150715 『続・断捨離』TDDの心得編

コピペやっつけ

動くからいっか…

時間がない変えるのが怖

Page 87: 20150715 『続・断捨離』TDDの心得編
Page 88: 20150715 『続・断捨離』TDDの心得編
Page 89: 20150715 『続・断捨離』TDDの心得編

計画的に、継続的に

Page 90: 20150715 『続・断捨離』TDDの心得編

バイバイ (^_^)/~れがしーこーど