TDDの導入とエンドツーエンドテスト自動化の実践まとめ


###[TDDの導入とエンドツーエンドテスト自動化の実践](http://devlove.doorkeeper.jp/events/8444#description)
2014/02/13に行われた[TDDの導入とエンドツーエンドテスト自動化の実践](http://devlove.doorkeeper.jp/events/8444#description)の内容を簡単にまとめました。

##「Growing Learning Feedback Loop, Guided by TDD & Patterns」家永英治氏

### TDDとは？
- [テスト駆動開発](http://ja.wikipedia.org/wiki/%E3%83%86%E3%82%B9%E3%83%88%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA)
- コードを書く前にテストを書く

### なぜTDDをやるのか？
#### テストとリファクタリングできれいなコードを保つ
![TDDと黄金の回転](http://cdn-ak.f.st-hatena.com/images/fotolife/a/absj31/20110801/20110801204643.jpg)


#### 悪循環から好循環のループに持っていく
##### 好循環ループとは
![TDDの学習フィードバック](https://github-camo.global.ssl.fastly.net/7c8e7499c9365487c5cf34806c9ad61758752226/687474703a2f2f6661726d342e737461746963666c69636b722e636f6d2f333732362f31303630373032313239345f656239343466663636655f632e6a7067)

![学習のコアとなる3つの要素](https://github-camo.global.ssl.fastly.net/ce3853a4082975068ada9474e8ceca206237685a/687474703a2f2f6661726d342e737461746963666c69636b722e636f6d2f333739312f31303630373033363138365f613266626534616535665f622e6a7067)
- テストを書くことによって継続的にデモを行うことが出来る

### TDDの落とし穴
![kinkyu.JPG](https://qiita-image-store.s3.amazonaws.com/0/17429/5bd7bc0a-deb8-fc16-afc9-78269b81b25d.jpeg "kinkyu.JPG")

![otoshiana.JPG](https://qiita-image-store.s3.amazonaws.com/0/17429/e46d5bed-01e8-97e0-e449-72d0db025f78.jpeg "otoshiana.JPG")

- カバレッジ率だけ追っても意味が無い
- 大切なことは”リーダブルコードを保つ”ということ
  - [リーダブルコード](http://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%80%E3%83%96%E3%83%AB%E3%82%B3%E3%83%BC%E3%83%89-%E2%80%95%E3%82%88%E3%82%8A%E8%89%AF%E3%81%84%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E6%9B%B8%E3%81%8F%E3%81%9F%E3%82%81%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%A7%E5%AE%9F%E8%B7%B5%E7%9A%84%E3%81%AA%E3%83%86%E3%82%AF%E3%83%8B%E3%83%83%E3%82%AF-Theory-practice-Boswell/dp/4873115655)を読みましょう！
  - [リーン開発の現場](http://www.amazon.co.jp/%E3%83%AA%E3%83%BC%E3%83%B3%E9%96%8B%E7%99%BA%E3%81%AE%E7%8F%BE%E5%A0%B4-%E3%82%AB%E3%83%B3%E3%83%90%E3%83%B3%E3%81%AB%E3%82%88%E3%82%8B%E5%A4%A7%E8%A6%8F%E6%A8%A1%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AE%E9%81%8B%E5%96%B6-Henrik-Kniberg/dp/427406932X/ref=wl_it_dp_o_pC_nS_nC?ie=UTF8&colid=3L6C62C8PXHWM&coliid=I1MO6VJY3Z84QX)
  - [レガシーコード改善ガイド](http://www.amazon.co.jp/%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E6%94%B9%E5%96%84%E3%82%AC%E3%82%A4%E3%83%89-Object-Oriented-SELECTION-%E3%83%9E%E3%82%A4%E3%82%B1%E3%83%AB%E3%83%BBC%E3%83%BB%E3%83%95%E3%82%A7%E3%82%B6%E3%83%BC%E3%82%BA/dp/4798116831/ref=sr_1_1?ie=UTF8&qid=1392221363&sr=8-1&keywords=%E3%83%AC%E3%82%AC%E3%82%B7%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E6%94%B9%E5%96%84%E3%82%AC%E3%82%A4%E3%83%89)



### TDDを身につける
- [TDDBC](http://devtesting.jp/tddbc)
  - TDDを実践演習で教えてもらう
- 素振り（写経）
  - [Rails Tutorial](http://railstutorial.jp/)をやる

### TDDをはじめる
- 一人でひっそり
- 気の合う同僚
- 界王拳(自発的残業)

### TDDを広げる
- [アイデアを組織に広めるための48のパターン](http://www.amazon.co.jp/Fearless-Change-%E3%82%A2%E3%82%B8%E3%83%A3%E3%82%A4%E3%83%AB%E3%81%AB%E5%8A%B9%E3%81%8F-%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A2%E3%82%92%E7%B5%84%E7%B9%94%E3%81%AB%E5%BA%83%E3%82%81%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AE48%E3%81%AE%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3-Manns/dp/462108786X/ref=sr_1_sc_1?ie=UTF8&qid=1392221899&sr=8-1-spell&keywords=fareless+change)
  - 感謝を伝える
  - 個人的な接触


## 「テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜」福井修氏

### エンドツーエンドテストとは
- e2eテスト
- システム全体が正しく動作することを確認する

### テスト自動化のアプローチ拡張トレンド
<iframe src="http://www.slideshare.net/slideshow/embed_code/31120254" width="427" height="356" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border:1px solid #CCC; border-width:1px 1px 0; margin-bottom:5px; max-width: 100%;" allowfullscreen> </iframe> <div style="margin-bottom:5px"> <strong> <a href="https://www.slideshare.net/FUKUIOsamu/20140212-develove" title="20140212 develove" target="_blank">20140212 develove</a> </strong> from <strong><a href="http://www.slideshare.net/FUKUIOsamu" target="_blank">Fukui Osamu</a></strong> </div>

### Gherkin + Capybara + Turnipによるe2eテストの自動化
- [エンドツーエンドテストの自動化は Cucumber から Turnip へ](http://magazine.rubyist.net/?0042-FromCucumberToTurnip)

- ボトムアップのテスト
  - エンジニア視点
  - Unitテストなど
- トップダウンのテスト
  - ユーザ視点
  - 仕様書からの掘り下げ
  - Excelなどでテスト項目を列挙するテスト方案など

### Gherkin
- テストが自然言語で書ける

```view01.feature
# encoding: utf-8
# language: ja
機能: 1.画面表示確認
  シナリオ: 1.トップページ確認
  前提 対象ページを表示する
  ならば 'ようこそ 関西Ruby会議05'が表示されて いること
```

- これがテストコードです
- 日本語で書けます
- プログラミングが出来なくても書けるかも？
- [Cucumber のフィーチャの文法 - Gherkin](http://blog.eiel.info/blog/2013/02/12/gherkin/)

### テスト管理ツールをExcelからWebDBへ
- Rtestdeck近日公開