Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
書籍『テスト駆動開発』7つの魅力のご紹介
Search
eiji.ienaga
January 25, 2018
1
1.1k
書籍『テスト駆動開発』7つの魅力のご紹介
2018 アジャイル事業部 年始のご挨拶 LTの資料。
ぜんぜん最後までいかなかったけどね
eiji.ienaga
January 25, 2018
Tweet
Share
More Decks by eiji.ienaga
See All by eiji.ienaga
テストオートメーションと末長くお付き合いするための17のこと
haru01
3
460
20240913知識ポートフォリオ
haru01
0
19
Agile Studioウェビナー~モブプログラミング&テスト駆動開発はじめの一歩~
haru01
0
220
XP祭り2022 xUnit Test Patterns勉強会
haru01
0
710
心理的安全性とリファクタリングステップでモブプログラミングはめっちゃ輝く
haru01
4
2k
agile459-feedback
haru01
1
1.8k
書籍『テスト駆動開発』の紹介(みんなのPython勉強会#37 の発表資料)
haru01
2
7.6k
いえぴょんによる弾丸特急フィードバック講座
haru01
5
600
アプレンティスシップ・パターンの紹介
haru01
0
330
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
48
2.2k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
28
900
Rails Girls Zürich Keynote
gr2m
94
13k
Speed Design
sergeychernyshev
25
670
Bash Introduction
62gerente
608
210k
A designer walks into a library…
pauljervisheath
204
24k
Transcript
1/24 アジャイル事業部 年始のご挨拶 @fkino に代わりまして 代打 家永英治 書籍『テスト駆動開発』 7つの魅力のご紹介
(最後のページに辿りつけなさそうなので) 2018も Happy Programming!!
祝!2017年秋 新訳!
Q: • 買った人? • 付録Cだけ読んだ人? • 一通り読んだ人は? • 1部、2部実際に手を動かして試した人?
新訳出版のピッチ ”『テスト駆動開発』は、自分たちのコードに自信を持って開発を続けたいプログラマ、 チームリーダー向けの書籍である。これはテスト駆動開発の考案者自身によって書か れた原典であり、テスト駆動開発とは単にテスト自動化を行うことではなく、ユニットテ ストとリファクタリングを両輪とした小さいサイクルを回すことで不確実性を制御し、不 断の設計進化を可能にする手法であることを、読者は実例を通して学ぶことができる。 http://t-wada.hatenablog.jp/entry/tddbook
”テスト駆動開発とは単に テスト自動化を行うことで はなく http://t-wada.hatenablog.jp/entry/tddbook
”ユニットテストとリファクタリング を両輪とした http://t-wada.hatenablog.jp/entry/tddbook
http://t-wada.hatenablog.jp/entry/tddbook ”小さいサイクルを回すことで不 確実性を制御し
”不断の設計進化を可能にする 手法であることを http://t-wada.hatenablog.jp/entry/tddbook
”読者は実例を通して学ぶことが できる http://t-wada.hatenablog.jp/entry/tddbook
それが!
None
ソフトウェアのバージョンを最新に(JUnit5、Python3) 判型を小さく(持ち運びやすさUP) 脱落しにくい構成に(写経ビリティUP) 新規書き下ろしの訳者解説を追加(付録Cで歴史が学べる) http://t-wada.hatenablog.jp/entry/tddbook 新訳版の工夫
お買い得です! 未だな人は今すくクリックを!
今日は、テスト駆動開発本の見どころを私 の独断と偏見を交えながら、弾丸特急でお 伝えします
(1)
(1)表紙がかっこいい!
None
None
None
(1) かっこいい! ジャケ買いだね
(1) ね!
(2)
(2)章末のコード全部入りに注 目!
(2) 写経時に迷わない!
(2) 写経ビリティUP!
(2) t-wadaに感謝!
(2) ありがとう!!
(2) 実際に手で動かして学ぶ (写経)はまじでオスス メ!
”本書『 テスト 駆動 開発』 の第 I 部、第II部が特殊な書き方をさ れているのは、 この「 過程」を読者に追体験してもらうためです。
テスト駆動開発の本質 をつかむためには、 まとまった量の、手 を動かしながら学べる良質なチュートリアルが必要なのです。 KentBeck. テスト駆動開発 (Kindle の位置No.5260-5263). Kindle 版. 付録Cより
(3)
(3)TODOリストの変更過程に 注目!
(3) 途中までTODOを追って みましょう!
None
None
None
None
None
None
(3) TODOリスト≒ テスト項目+リファクタリング項目
アウトプットから 学びを得て、 (3)
TODOリストを更新
遠目で眺めれば、 エクストリームプログラミングや リーンスタートアップと やってることは、だいたい一緒
だいたい一緒
try and error!するほど 憂鬱になるではなく
try and error!するほど やったー!!となる
“テスト駆動開発 は、 プログラミング中の不安をコントロールす る手法だ。ここでは「 不安」を悪い意味で使って いるのではない (我々は 赤ちゃんでは ないからね)。「 これは困難な問題なの
で、最初からすべてを見通せるわけではない」という真っ当な感 覚のことだ。 KentBeck . テスト駆動開発 (Kindle の位置No.59-62). Kindle 版.
写経以外にも、TODOリストを追ってみるも おすすめの学習方法!
(3)
(3)各章ごとの ふりかえりに注目!
何が書いてあるか少し 追って見ましょう
None
どうなったら嬉しいかを小さいテ ストコードで表現した
大罪!?
None
恥知らずにコピー&ペー スト!?
重複を取り除くまでは 家に帰らない!!
None
感情をテストに翻訳する!?
1. 気分を交えながらやったことを短く書い ている 2. まれに、考察が入る ふりかえりに書いていること
写経で迷子になったら各章のふりかえがオ ススメ。 ふりかえりの項目を読んでわからない箇所があれば、わからない箇所を中心に章の文を追って、KentBeckがやってみせたこと、感じたことをもう一度トレースする。 ふりかえりの他、1部は章タイトル(日本語)からも推測できるように t-wadaが工夫している。
(4)おちゃめなKentBeckに注 目!
そう、あれは私が若かったころ。とてもとても昔の話だ。あのころ はビットを雪の中から掘り出して、バケツいっぱいのビットを裸足 で仕事場に運ばなければならなかった。小さい足は血まみれに なり、その足跡をオオカミがつけてきたものだった……失敬、思い 出に浸ってしまったようだ。 KentBeck.テスト駆動開発 (Kindle の位置No.3215-3217). Kindle 版.
オオカミ?血? 唐突に思い出に浸る!? なんだ? (4)
(4) KentBeck流の Singletonの説明
“Singleton パターン グローバル変数の無いプログラミング言語でグローバル変数を作るにはどうすればよい だろうか―― 決してやってはならない。そんなことを考える時間は設計に回して、コード をきれいにしよう。 KentBeck. テスト駆動開発 (Kindle の位置No.4323-4324).
Kindle 版. (4)
決してやってはならな い。
そんなことを考える時間は設計 に回して、コードをきれいにしよ う。
以上!!
わかった。グローバル変 数やりません☻ (4)
KentBeck流の説明が時々 「ぬ!?」「 」もありますがそれ も楽しみましょう!
(5)
(5)3部のパターンに注目!!
(5) 3部はTDDのためのパターン集 です!名前を眺めてみよう!
第 III 部 テスト駆動開発のパターン テスト駆動開発のパターン • テスト(名詞) • 独立したテスト •
TODOリスト • テストファースト • アサートファースト • テストデータ • 明示的なデータ レッドバーのパターン • 一歩を示すテスト • はじめのテスト • 説明的なテスト • 学習用テスト • 脱線はTODOリストへ • 回帰テスト • 休憩 • やり直す • 安い机に良い椅子
第 III 部 テスト駆動開発のパターン テスティングのパターン • 小さいテスト • Mock Object
• Self Shunt • Long String • Crash Test Dummy • 失敗させたままのテスト • きれいなチェックイン グリーンバーのパターン • 仮実装を経て本実装へ • 三角測量 • 明白な実装 • 一から多
第 III 部 テスト駆動開発のパターン xUnitのパターン • アサート • フィクスチャー •
外部フィクスチャー • テストメソッド • 例外のテスト • まとめテスト デザインパターン • Command • Value Object • Null Object • Template Method • Pluggable Object • Pluggable Selector • Factory Method • Imposter • Composite • Collecting Parameter • Singletone
第 III 部 テスト駆動開発のパターン リファクタリング • 差異をなくす • 変更の差分 •
データ構造の変更 • メソッドの抽出 • メソッドのインライン化 • インタフェースの抽出 • メソッドの移動 • メソッドオブジェクト • パラメータの追加 • メソッド から コンス トラクタ への パラメータ の 移動
パターンなので、「全部やれ!」ではなく、 (5)
(5) 【自分】が感じている課題感に沿って、 合いそうなパターンを【取捨選択】し、 課題を解消するか試すが肝
1.有機的秩序の原理 2.参加の原理 3.漸進的成長の原理 4.パタンの原理 5.診断の原理 6.調整の原理 (オレゴン大学の実験)
自分で考えて選 択!!
不安に立ち向かう
(5) ちょっとづつプログラミン グの好循環ループを育て ていく
課題は自分の今の感情に気付 くところから (5)
憂鬱な悪循環ループ
(5) 「わからないことがたくさん。どこ から手をつけたら良いのやら ><」
(5) 「問題が大き過ぎて解けないよ ><」
(5) 「つまり期待結果は なに?」
「何回も打鍵&クリック操 作で、指がつかれたよ」 (5)
(5) 「このコードさっぱり理解 できない><」
(5) 「目視確認で目がショボ ショボ><」
「確認作業は 単調で退屈だなぁ」 (5)
(5) 「ログが流れて確認が辛 い!」
(5) 「毎回確認めんどくさい な。後にするか」
(5) 「結果わかるまで時間かかる なぁ。めんどくさいなぁ。 後にするか」
(5) 「やゔぇぇ。動かない!? いつ壊れたんだろう ??><」
「現実装の仕様がわかんない よ!何が期待通りなの>< トホホ」 (5)
(5) 「修正したけど動くの かなぁ><」
(5) 「ごめん壊しちゃっ た!!」
(5) 「なにこれ!コピペの嵐。 ><」
(5) 「似たIf文が増殖!?。 これは。。」
(5) 「ありゃりゃうまくいかな い。袋小路だ」
(コードを見て or 作業して、感じて) うぎゃー (5)
うぎゃー (5)
憂鬱な悪循環ループ
憂鬱な悪循環ループのデベロッパー体験 をどうやって抜け出す? (5)
ヒントが3部に! (5)
実装がうまく行かなかっ たらどうする? (5)
(5) 休憩 疲れたり手詰まりになったりしたときはどうすればいいだろうか ―― 休憩 を 取ろ う。 KentBeck. テスト駆動開発
(Kindle の位置No.3473-3474). Kindle 版.
(5) やり直す 手詰まりで途方に暮れてしまったときはどうするべきか ―― コードを捨てて、やり直そう。 KentBeck. テスト駆動開発 (Kindle の位置No.3502-3503). Kindle
版.
(5) 僕達には 休んだり・来た道を戻る 選択肢がある!
• リファクタリングを強化してみる ◦ 差異をなくす ◦ メソッドの抽出 • 更にTDDのRedGreenRefactorのリズムに近づ く ◦
テストファースト ◦ アサートファースト • うまく行かなかったら ◦ パターン適用を一旦中断し、適切なタイミ ングで再度チャレンジする 悪循環ループから抜け出し 好循環ループを育てていこう • 例えば少し制約を緩めて次から始める ◦ TODOリスト ◦ テスト(名詞) ◦ 小さいテスト ◦ 明白な実装 • 実装につまずいたら ◦ ”仮実装を経て本実装へ ”で歩幅を小さく するを試す
まだ多すぎるというのなら、この2つから 仮実装を経て本実装へ テスト(名詞)
仮実装を経て本実装へ 実装で躓いた場合はこれ!! まだ多すぎるというなら 1つから
ベイビーステップ(漸近的成長) でつくる真髄がこのパターンの 中に! 仮実装を得て本実装へ(Fake It)
TDD自体をはじめてみる に不安を感じたら? (5)
(5) ベイビーステップTDD ---TDDを始めるのが難しいと思ったら? 安心して失敗できる写経からはじめてみよう。テストファーストは後にして、小さなリファ クタリングのみを試してみよう。不安で立ち止まってしまうよりもずっと良い。 うまく行けば更に課題感にそって優先順の高そうな解決案を1つ試そう。うまく行かな かったら、休憩するか、やり直そう。プログラミング体験のカイゼンTRYのステップ幅を 小さくして、ゆっくりで再度トライしよう。 (eiji.ienaga)
パターンなので、参照するだけでなく、 繰り返し発生している課題と解について自 分で書いて整理するのも良い! (5)
プログラミング中の 悪循環から好循環へ トランスフォームの ヒントは3部の中に (5)
(6)
(6)電子書籍に注目!
電子書籍なら気軽にジャンプできていサマリーが読めてオススメ
リアル本もいよ!
サインがもらえる!
用途に合わせて 複数冊、 買いましょう!
(7)
(7)付録Cに注目!
歴史、これから等が記載されて 良いことたくさんありますが 今日は1つだけピックアップ
”テスト駆動開発におけるテストは、確認を繰り返すことによっ て、 既知の領域の輪郭線を際立たせ、そこから未知の領域に踏 み込んでいくための相棒なのです。未知の領域を進むための明 かりが足りないと思ったとき、テスト駆動開発を思い出してみてく ださい。 KentBeck. テスト駆動開発 (Kindle の位置No.5301-5303).
Kindle 版. 付録C
確認を繰り返すことによって
既知の領域の輪郭線を際立た せ、
未知の領域に踏み込ん でいくための相棒
それが!
None
try and error するほ ど強くなる!!
テスト駆動開発 は、 プログラミング中の不安をコントロールする 手法だ。ここでは「 不安」を悪い意味で使っているのではない (我々は 赤ちゃんでは ないからね)。「 これは困難な問題なの で、最初からすべてを見通せるわけではない」という真っ当な感
覚のことだ。 KentBeck . テスト駆動開発 (Kindle の位置No.59-62). Kindle 版.
2018年も未知の領域に対して、 期待と不安の入り混じった感情を もちながらも プログラミングを 楽しんでいきましょう
2018も Happy Programming!!