[Confidential] © 2013 Actcat, Inc.
2014/4/28
Actcat, Inc.
どうやらテスト駆動型開発は死
んだようです。これからのCI
[Confidential] © 2013 Actcat, Inc.
速報:
一昨日、
TDDが死にました。
2
[Confidential] © 2013 Actcat, Inc.
どうやら皆が愛して憎んでやまない、
テスト駆動型開発が死んだらしいのです。
「小さなチーム、大きな仕事」などの著
書でも有名な会社のCTOでありRailsの開発
者であるDavidさんが2014/4/23に下記のよ
うな投稿をしました。
「TDD is dead. Long live testing.」
「TDD 死んだ」でググると翻訳している
人がたくさんいますので参考にどうぞ
3
[Confidential] © 2013 Actcat, Inc.
そもそもTDDとは何だったのか?
 テスト駆動型開発(TDD)。テストを書いてか
ら、コードを書こう。テストを満たすコード
を書こう。
 そうしたらコードカバレッジも100%になる
し、テスタブルなコードになるし、リーダブ
ルになるし、いいことづくめだよね
 サービスの変更にもテストがあるから安心し
て臨めるよね
4
[Confidential] © 2013 Actcat, Inc.
TDDで作ったテストは
継続的インテグレーションしよう
Jenkins,TravisCIなどで自動テストを
COMMIT毎やPush毎、NightyBuildでしよう
テストが通ったらデプロイ出来る、とい
う状態を維持しよう
そして、デプロイを高速化しよう
5
[Confidential] © 2013 Actcat, Inc.
でも、TDDはお亡くなりになりました
TDDは主にユニットテスト(部分的なコー
ドのテスト)を行ってました
しかしながら、結合した時の問題点につ
いてはTDDの体制では書きづらかったり
そして、結合テストをコードで書く文
化・技術が新しく出てきたので、ユニッ
トテストファーストな時代は終わったと
いう
6
[Confidential] © 2013 Actcat, Inc.
代表的なツール
Capybara
7
https://github.com/jnicklas/capybara
[Confidential] © 2013 Actcat, Inc.
テストシナリオをDSLで書ける
8
[Confidential] © 2013 Actcat, Inc.
Rspecとも同居できる
9
[Confidential] © 2013 Actcat, Inc.
Selenium VS Capybara
Capybaraはコードで書くテストなので、
Seleniumとは時代と使用するユーザが代わ
る
Selenium: ブラウザでテストを作るテスト
職人
Capybara: プログラマ
10
[Confidential] © 2013 Actcat, Inc.
テストの作成はプログラマの仕事に
TDDでもテストの作成はプログラマの仕事
だった
それが結合テストを作るのがプログラマ
の仕事に変わる、と思われる
以降、結合テストは全て自動でCIサーバで
実行されるようになる、だろう
11
[Confidential] © 2013 Actcat, Inc.
TDD => 結合テスト のメリット
12
プロジェクト
スタート
リリース
ユーザは公開物
しか見ない
結合テストが
カバレッジ
100%+Successな
ら
リリース可能
テスト
書く
開発
テスト
書く
結合
テスト
開発
リリース
開発の積み重ねによるテスト
カバレッジ100%は厳しく、
テストの寿命も短い
[Confidential] © 2013 Actcat, Inc.
なぜ単体テストのほうが寿命が短いか?
 ロジックはころころ変更になる
 結合テストはたしかにテキストレベルまで追
うと変更コストが非常に高い、が、
ユーザ体験・機能レベルなら変更は多くない
 結合テストはユーザ体験だけテストすればよ
い。単体テストは今後、単体で機能を有する
ものにだけ書くようにすればいいと思う
13
[Confidential] © 2013 Actcat, Inc.
というわけで、Capybaraへ
Capybara
14
https://github.com/jnicklas/capybara

どうやらテスト駆動型開発は死んだようです。これからのCI

  • 1.
    [Confidential] © 2013Actcat, Inc. 2014/4/28 Actcat, Inc. どうやらテスト駆動型開発は死 んだようです。これからのCI
  • 2.
    [Confidential] © 2013Actcat, Inc. 速報: 一昨日、 TDDが死にました。 2
  • 3.
    [Confidential] © 2013Actcat, Inc. どうやら皆が愛して憎んでやまない、 テスト駆動型開発が死んだらしいのです。 「小さなチーム、大きな仕事」などの著 書でも有名な会社のCTOでありRailsの開発 者であるDavidさんが2014/4/23に下記のよ うな投稿をしました。 「TDD is dead. Long live testing.」 「TDD 死んだ」でググると翻訳している 人がたくさんいますので参考にどうぞ 3
  • 4.
    [Confidential] © 2013Actcat, Inc. そもそもTDDとは何だったのか?  テスト駆動型開発(TDD)。テストを書いてか ら、コードを書こう。テストを満たすコード を書こう。  そうしたらコードカバレッジも100%になる し、テスタブルなコードになるし、リーダブ ルになるし、いいことづくめだよね  サービスの変更にもテストがあるから安心し て臨めるよね 4
  • 5.
    [Confidential] © 2013Actcat, Inc. TDDで作ったテストは 継続的インテグレーションしよう Jenkins,TravisCIなどで自動テストを COMMIT毎やPush毎、NightyBuildでしよう テストが通ったらデプロイ出来る、とい う状態を維持しよう そして、デプロイを高速化しよう 5
  • 6.
    [Confidential] © 2013Actcat, Inc. でも、TDDはお亡くなりになりました TDDは主にユニットテスト(部分的なコー ドのテスト)を行ってました しかしながら、結合した時の問題点につ いてはTDDの体制では書きづらかったり そして、結合テストをコードで書く文 化・技術が新しく出てきたので、ユニッ トテストファーストな時代は終わったと いう 6
  • 7.
    [Confidential] © 2013Actcat, Inc. 代表的なツール Capybara 7 https://github.com/jnicklas/capybara
  • 8.
    [Confidential] © 2013Actcat, Inc. テストシナリオをDSLで書ける 8
  • 9.
    [Confidential] © 2013Actcat, Inc. Rspecとも同居できる 9
  • 10.
    [Confidential] © 2013Actcat, Inc. Selenium VS Capybara Capybaraはコードで書くテストなので、 Seleniumとは時代と使用するユーザが代わ る Selenium: ブラウザでテストを作るテスト 職人 Capybara: プログラマ 10
  • 11.
    [Confidential] © 2013Actcat, Inc. テストの作成はプログラマの仕事に TDDでもテストの作成はプログラマの仕事 だった それが結合テストを作るのがプログラマ の仕事に変わる、と思われる 以降、結合テストは全て自動でCIサーバで 実行されるようになる、だろう 11
  • 12.
    [Confidential] © 2013Actcat, Inc. TDD => 結合テスト のメリット 12 プロジェクト スタート リリース ユーザは公開物 しか見ない 結合テストが カバレッジ 100%+Successな ら リリース可能 テスト 書く 開発 テスト 書く 結合 テスト 開発 リリース 開発の積み重ねによるテスト カバレッジ100%は厳しく、 テストの寿命も短い
  • 13.
    [Confidential] © 2013Actcat, Inc. なぜ単体テストのほうが寿命が短いか?  ロジックはころころ変更になる  結合テストはたしかにテキストレベルまで追 うと変更コストが非常に高い、が、 ユーザ体験・機能レベルなら変更は多くない  結合テストはユーザ体験だけテストすればよ い。単体テストは今後、単体で機能を有する ものにだけ書くようにすればいいと思う 13
  • 14.
    [Confidential] © 2013Actcat, Inc. というわけで、Capybaraへ Capybara 14 https://github.com/jnicklas/capybara