21
最近のTDDネタをcasual塚野 龍馬 ( @lxyuma )

最近のTDDネタをカジュアルに

Embed Size (px)

DESCRIPTION

社内LTで話したTDDの軽い話です。(2014/5/20)

Citation preview

Page 1: 最近のTDDネタをカジュアルに

最近のTDDネタをcasualに 塚野 龍馬 ( @lxyuma )

Page 2: 最近のTDDネタをカジュアルに

LTテーマ選定の条件

● ここにいるエンジニア全員に共通する話題● 最近のトピック● ついでに自己紹介もできるもの

Page 3: 最近のTDDネタをカジュアルに

最近のトピックと言えば

DHH「TDD 死んだ」

Page 4: 最近のTDDネタをカジュアルに

反応

賛否色々有り

日本でも炎上ブログ出てきた

Page 5: 最近のTDDネタをカジュアルに

今日は

今迄自分がやってたTDDを元に、

DHH周りの議論をカジュアルに

見てみようと思います。

※ついでに、自己紹介にもなるし

※QA系テストは範囲外。

Page 6: 最近のTDDネタをカジュアルに

目次

● 自分のいた現場の話● DHHのdisり所をどうしてたか?● これからのTDD

Page 7: 最近のTDDネタをカジュアルに

自分のいた現場の話

● 某CGM開発に参加○ ruby on railsで開発してた○ Front混みいった所はBackbone.js

Page 8: 最近のTDDネタをカジュアルに

テストは?

● BackEnd○ xUnit系(ですが、もう大分xSpecに近い)

● FrontEnd○ jasmine

Page 9: 最近のTDDネタをカジュアルに

やってたTDD

● Backend○ Test順:Model => Controller => View

● Frontend○ Test順:View => Controller○ Modelは殆ど処理無かったのでtestは薄かった

Page 10: 最近のTDDネタをカジュアルに

DHHのTDDのdisり論点

強引にまとめると、2点

● ①テストファースト = 悪● ②stub/mock多用したUT = 悪

それぞれ自分の現場で振り返ると

Page 11: 最近のTDDネタをカジュアルに

①テストファースト

● 使い分けていた○ 確かどこかでKentBeckも言ってた気がするが、○ 厳密に従う必要は無い。困った時の手助け。

Page 12: 最近のTDDネタをカジュアルに

テストファーストした所/してない所

● テストファーストしてた所○ Model周り、パターン化された慣れた処理○ IN / OUTが明らかに明確な所(外部API/Text処理等)

● テストファーストしなかった所○ 新しい技術使う所(試行錯誤の邪魔になる)○ Controller周りは事後が多かった気がする

Page 13: 最近のTDDネタをカジュアルに

テストファーストでない?

● 実際、テストファーストでないと言っても○ 実装を途中までやって○ 直後に部品の確認用にテスト書いて○ すぐにred=>green=>refactoringの中に入る

● 厳密にテスト先では無いが、○ やってる事は大差ない

Page 14: 最近のTDDネタをカジュアルに

テストファーストが邪魔になる時

● 逆にRefactoringの邪魔になる事多々あった○ 大抵、内部構造をテストで掴んでしまった事に起因

○ 「メソッドをtestしない。振る舞いをtestする。」というの

が、まさしく。

■ @ITで超良記事が出た。※いまさら聞けないTDD/BDD超入門(3)TDD/BDDに

おける「振る舞い」の意味するところとは何なのか (1/3)

○ どうしても内部構造掴む必要がある時もあった■ privateが掴める言語特有の悩みな気がするが..

Page 15: 最近のTDDネタをカジュアルに

②モックスタブ多用したUT問題

必要に迫られない限りmock/stub使ってない

● InsideOutだったし● dhhの言う伝統的なUTという観点は無いし

○ TDDはテストで無いのでこれで良い

※但し、Frontendはめっちゃ苦労した(後述)

Page 16: 最近のTDDネタをカジュアルに

いつモックスタブ使った?

● Backend○ 不安定な某SNSのAPI等、ごく一部に利用

● Frontend○ eventや通信等、結局、sinonで大量にモックスタブ使っ

てた(使わないとテスト書けない)

Page 17: 最近のTDDネタをカジュアルに

Frontendのテスト悩み(stub/mock)

● Backboneでtest書こうとしたら地獄○ Event掴めない、Server通信遅すぎ等で、結局毎回、

sinonでTestDoubleしてた

○ 内部構造掴んでた問題もあるが、どうしようもない所も

あった○ js MVC(MVP)はFrontendのカオスがそのまま残ってる

■ MVVMの方がtestは書きやすい(勿論、全解決しな

いが) Testし易さからも今後こちらに流れる?○ stub/mockよりhtml/dom関係が大変だった(blog参照)

Page 18: 最近のTDDネタをカジュアルに

TDDを振り返ると

● 原理原則多いけど、実際は例外だらけ。○ で、例外だらけの事をやっていて、○ これがTDDなのか?と思う事はある。

● 困るSituation多々あったが、TDDの原理原則は助けにならない方が多い○ 自分で考えないといけない。

■ それは楽しい事だが

Page 19: 最近のTDDネタをカジュアルに

DHHのTDD disり論に戻ると

● 良い問題提起だった○ 例えば先程のTestFirstしてない所等 言い易くなった

■ 議論の発展を促してくれてる

○ TDD周辺で、まだまだうまく言語化/pattern化されてない

所がある■ 見直す機会になれば良いのでは?

Page 20: 最近のTDDネタをカジュアルに

このLTでもカットした論点

● 色んな論点がある。○ TDDはtestで無いので、伝統的なtestからTDD引いた残

りをどう扱うか問題(3択ある)■ 関連してTDDのタブー問題

○ イベント駆動とTDDの相性問題(合わない)○ TDDの「不安」がふわふわな件

今後, 言語化/Pattern化されていくと良いですね

Page 21: 最近のTDDネタをカジュアルに

おしまい

今後も、よろしくお願いします。

● blog/slide系も有。○ blog => lxyuma BLOG○ slide => ryuma.tsukano

● (良ければlike下さい> <)