14
[Confidential] © 2013 Actcat, Inc. 08/24/2022 Actcat, Inc. どどどどどどどどどどどどどどどどどどどど どどど どど CI

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

Embed Size (px)

DESCRIPTION

SideCI主催のVenturesCI.rb #1のLT資料です。 「どうやらテスト駆動型開発は死んだようです。これからのCI」です。 要約すると、TDD死んじゃった。テスト自体は否定しないし有用だと思う。でも、ユーザに触れるEndToEndの振る舞いのテストを主に書き、テストカバレッジ100%を目指す時代は終わった(コストが高過ぎる。自転車の補助輪のようなものだ、テスト駆動型はもう外そう!)。EndToEndテストはCapybaraがよさそうだね。という内容です。

Citation preview

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

[Confidential] © 2013 Actcat, Inc.

04/10/2023Actcat, Inc.

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

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

[Confidential] © 2013 Actcat, Inc.

速報 : 一昨日、

TDDが死にました。

2

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

[Confidential] © 2013 Actcat, Inc.

どうやら皆が愛して憎んでやまない、テスト駆動型開発が死んだらしいのです。

「小さなチーム、大きな仕事」などの著書でも有名な会社の CTOであり Railsの開発者である Davidさんが 2014/4/23に下記のような投稿をしました。「 TDD is dead. Long live testing.」

「 TDD 死んだ」でググると翻訳している人がたくさんいますので参考にどうぞ

3

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

[Confidential] © 2013 Actcat, Inc.

そもそも TDD とは何だったのか?

テスト駆動型開発 (TDD)。テストを書いてから、コードを書こう。テストを満たすコードを書こう。

そうしたらコードカバレッジも 100%になるし、テスタブルなコードになるし、リーダブルになるし、いいことづくめだよね

サービスの変更にもテストがあるから安心して臨めるよね

4

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

[Confidential] © 2013 Actcat, Inc.

TDD で作ったテストは継続的インテグレーションしよう

Jenkins, TravisCIなどで自動テストをCOMMIT毎や Push毎、 NightyBuildでしよう

テストが通ったらデプロイ出来る、という状態を維持しよう

そして、デプロイを高速化しよう

5

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

[Confidential] © 2013 Actcat, Inc.

でも、 TDD はお亡くなりになりました

TDDは主にユニットテスト (部分的なコードのテスト )を行ってました

しかしながら、結合した時の問題点については TDDの体制では書きづらかったり

そして、結合テストをコードで書く文化・技術が新しく出てきたので、ユニットテストファーストな時代は終わったという

6

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

[Confidential] © 2013 Actcat, Inc.

代表的なツール

Capybara

7

https://github.com/jnicklas/capybara

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

[Confidential] © 2013 Actcat, Inc.

テストシナリオを DSL で書ける

8

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

[Confidential] © 2013 Actcat, Inc.

Rspec とも同居できる

9

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

[Confidential] © 2013 Actcat, Inc.

Selenium VS Capybara

Capybaraはコードで書くテストなので、Seleniumとは時代と使用するユーザが代わる

Selenium: ブラウザでテストを作るテスト職人

Capybara: プログラマ

10

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

[Confidential] © 2013 Actcat, Inc.

テストの作成はプログラマの仕事に

TDDでもテストの作成はプログラマの仕事だった

それが結合テストを作るのがプログラマの仕事に変わる、と思われる

以降、結合テストは全て自動で CIサーバで実行されるようになる、だろう

11

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

[Confidential] © 2013 Actcat, Inc.

TDD => 結合テスト のメリット

12

プロジェクトスタート リリース

ユーザは公開物しか見ない

結合テストがカバレッジ100%+Successならリリース可能テスト

書く

開発

テスト書く

結合テスト開発

リリース開発の積み重ねによるテストカバレッジ 100%は厳しく、テストの寿命も短い

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

[Confidential] © 2013 Actcat, Inc.

なぜ単体テストのほうが寿命が短いか?

ロジックはころころ変更になる

結合テストはたしかにテキストレベルまで追うと変更コストが非常に高い、が、ユーザ体験・機能レベルなら変更は多くない

結合テストはユーザ体験だけテストすればよい。単体テストは今後、単体で機能を有するものにだけ書くようにすればいいと思う

13

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

[Confidential] © 2013 Actcat, Inc.

というわけで、 Capybara へ

Capybara

14

https://github.com/jnicklas/capybara