2014/3/30 ミニTDDBC presented by yokhama.devtesting

Hiroyuki Ohnaka
Hiroyuki OhnakaGrowth xPartners Incorporated.
TDD最初の一歩
2014/3/30 ミニTDDBC presented by yokohama.devtesting
大中浩行(@setoazusa)
Copyright 2014 Hiroyuki Ohnaka
自己紹介
• 大中浩行 (Ohnaka, Hiroyuki)
• 泣き笑いせつなポップ中年。
• yokohama.devtesting / devtesting-ja
• @setoazusa
• http://blog.fieldnotes.jp/
• Javaプログラマ
• グロースエクスパートナーズ(株)所属
Copyright 2014 Hiroyuki Ohnaka
yokohama.devtestingとは
• Developer Testing およびその周辺領域について、ディス
カッションやハンズオンなど、ゆるく行うコミュニティで
す。
• TDDBC横浜からスピンアウトしたコミュニティ
4Copyright 2014 Hiroyuki Ohnaka
TDDとは
Copyright 2014 Hiroyuki Ohnaka
TDD
• テスト
• 駆動
• 開発
• テストによって駆動される開発
Copyright 2014 Hiroyuki Ohnaka
テスト
「全てのライフサイクルを通じて実施する静的、動的なプ
ロセスにおいて、成果物が特定の要件を満足するかを判定
し、目的に合致することを実証し、欠陥を見つけるため、
ソフトウェアプロダクトや関連成果物に対し、計画、準備、
評価をすること」
ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01
Copyright 2014 Hiroyuki Ohnaka
駆動
テスト駆動開発は、プログラム中の不安を管理する方法で
ある。ここで言う不安とは悪い意味ではない。...(略)...
道理にかなった不安、すなわち「これは困難な問題だから
最初から最後までは分からない」という感覚である。
「コードをどのように書けばいいのかわからない」とい
う不安を、失敗するテストとして表現することで、開発
を駆動させる原動力とするという、制御の逆転(Inversion
of Control)を表している
「テスト駆動開発入門」から
Copyright 2014 Hiroyuki Ohnaka
開発
我々が最も価値を置くのは、価値あるソフトウェアを早いうち
から継続的にデリバリーすることを通じて顧客を満足させるこ
とである。
そのための、「価値の流れ」を構成する一連の営み
Principles behind the Agile Manifesto
http://agilemanifesto.org/principles.html
(訳は 和智・高木(2012))
9Copyright 2014 Hiroyuki Ohnaka
TDDのゴール
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコード」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
「動作するきれいなコードへの2つの道」
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
TDDのサイクル
1. 次の目標を考える
2. その目標を示すテストを書く
3. そのテストを実行して失敗させる(Red)
4. 目的のコードを書く
5. 2で書いたテストを成功させる(Green)
6. テストが通るままでリファクタリングを行う(Refator)
7. 1~6を繰り返す
Copyright 2014 Hiroyuki Ohnaka
TDDと黄金の回転
和田卓人(2014) TDDのこころ@OHC2014 より
Copyright 2014 Hiroyuki Ohnaka
キーワード
• テストファースト
• TODOリスト
• アサートファースト
• 仮実装
• 三角測量
• 明白な実装
• リファクタリング
Copyright 2014 Hiroyuki Ohnaka
TDD三原則(「クリーンコード」より)
• 失敗する単体テストのコードを書く前に、製品のコードを書い
てはならない
• コンパイルが通り、適切に失敗する単体テストができるまでは、
次の単体テストを書いてはならない
• 現在失敗している単体テストが通るまで、次の製品コードを書
いてはならない。
16Copyright 2014 Hiroyuki Ohnaka
TDDのこころ
Copyright 2014 Hiroyuki Ohnaka
• 小さく回す
• 複数を相手にしない
「わが全力をもって敵の分力を撃つ。
つねに敵をつつむがごとくに運動す
る」
司馬遼太郎「坂の上の雲」より
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:MIKASAPAINTING.jpg
Copyright 2014 Hiroyuki Ohnaka
ユニットテストあるある
• 他のテストと一緒に流したら落ちるテスト
• 他のテストと一緒に流さないと落ちるテスト
• 月が変わると落ちるテスト
• リファクタリングするとコンパイルエラーになるテスト
• 仕様変更で全滅するテスト
• バグがあるのにグリーンバーなテスト
良いテストのために優先すべきもの
• 再現性、繰り返し可能(Repeatable)
• 独立していること(Independent)
• 詳しくは、http://xunitpatterns.com/
20Copyright 2014 Hiroyuki Ohnaka
現場で戦う
荒みきったコード
疲弊しきった現場
爆弾処理のようなリリース
http://www.flickr.com/photos/okinawa-soba/2951808529/
http://www.flickr.com/photos/22719239@N04/2246462044/
http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Bomb_neutralizing_EOD_9.jpg
Copyright 2014 Hiroyuki Ohnaka
僕たちはアムロにはなれない
• TDDは銀の弾丸ではない
• 全ての問題をテクニカルなプラクティスで解決しようとしな
い
• 原理主義に走らない
• 「テストを書かなければならない」
• 「テストファーストしなければならない」
• 「全てのクラスにユニットテストがなければならない」
Copyright 2014 Hiroyuki Ohnaka
「2人目を探す」
• 「より良い開発」を目指すというコンセンサス
• 日々是改善
• そのことを考えた時に、TDDより先にやることがあるかも
しれない
• テストデータの整備
• デプロイ手順の整備
• etc…
Copyright 2014 Hiroyuki Ohnaka
もうウンザリです。何も改善できません。
「しかし、私たちにはプログラミングをする本当の
理由があるはずです。」
「もし、自分や同僚がプログラミングを楽しめるな
ら、どんなシステムに取り組んでいるかは重要では
ありません。そのシステムに対してきちんとした仕
事ができるはずで、そうでなければ待っているのは
落胆です。そうなってしまっては何の楽しみもあり
ませんし、私たちはそんな目に遭うべきではありま
せん。」
Copyright 2014 Hiroyuki Ohnaka
「レガシーコードで成功する鍵は、やりがいを見出すこと
です。」
Copyright 2014 Hiroyuki Ohnaka
「君にも君を動かしているものがあるでしょう?」
牛木義隆(2008) 夢喰いメリー(1) 芳文社
Copyright 2014 Hiroyuki Ohnaka
さいごに
「君が質の高いソフトウェアを届けることは誰にも止められ
ない。君が現場に立って、お客さんに向けてプロジェクトの
状況と、プロジェクトに必要なことを誠実に伝えることも誰
にも止められないんだ。」
Copyright 2014 Hiroyuki Ohnaka
参考文献
• Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 嘉秀(監訳)テクノロジックアート(訳) (2003) テスト駆動開発入
門 ピアソンエデュケーソン )
• Feathers, Michael C. (2005) Michael C. Feathers Working Effectively with Legacy Code Pearson Education (ウルシステムズ株式会社(監訳) 平澤章、越智典
子、稲葉信之、Fearless Change: Patterns for Introducing New Ideas田村友彦、小堀真義(訳) (2009) レガシーコード改善ガイド 翔泳社)
• Humble,Jef Farley David(2011) Continuous Delivery :Reliable Software Releases Though Build,Test,And Deployment Automation Addison-Wesley
Professional (和智右桂、高木正弘(2012)継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 アスキー・メディ
アワークス)
• Manns,Mary Linn, Rising,Linn(2004) Fearless Change: Patterns for Introducing New Ideas Addison-Wesley (川口恭伸、木村卓央(監訳) 高江洲睦、高橋一
貴、中込大祐、安井力、山口鉄平、角征典(訳) (2014) Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン 丸善出版)
• Martin, Robert C. (2009) Clean CODE: A HANDBOOK OF AGILE OFTWARE CRAFTMANSHP Pearson Education (花井志生(訳) (2009) Clean Code アジャ
イルソフトウェア達人の技 アスキー・メディアワークス)
• Meszaros, Gerard (2007) xUnit Test Patterns: Refactoring Test Code Addison-Wesley Professional
• 日本ソフトウェアテスト資格認定委員会(2012) ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01 http://jstqb.jp/dl/JSTQB-glossary.V2.2.J01.pdf
• Rasmusson, Jonathan(2010) The Agile Samurai: How Agile Masters Deliver Great Software Pragmatic Bookshelf (西村直人、角谷信太郎(監訳) 近藤修
平、角掛 拓未 アジャイルサムライ 達人開発者への道 オーム社)
• 和田卓人(2014) TDDのこころ@OHC2014 http://www.slideshare.net/t_wada/osh2014-sprit-of-tdd
1 of 28

Recommended

分散開発チームによるAgile開発実践 ~いろいろハマった!よかった by
分散開発チームによるAgile開発実践 ~いろいろハマった!よかった分散開発チームによるAgile開発実践 ~いろいろハマった!よかった
分散開発チームによるAgile開発実践 ~いろいろハマった!よかったMakoto Iguchi
4K views57 slides
20211023 良いテストを作るためのテスト設計チュートリアルを考える by
20211023 良いテストを作るためのテスト設計チュートリアルを考える20211023 良いテストを作るためのテスト設計チュートリアルを考える
20211023 良いテストを作るためのテスト設計チュートリアルを考えるtomohiro odan
330 views51 slides
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用 by
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用0181013 warai CI(継続的インテグレーション)と実例紹介_公開用
0181013 warai CI(継続的インテグレーション)と実例紹介_公開用tomohiro odan
277 views40 slides
やろうぜ!簡易ユーザビリティテスト by
やろうぜ!簡易ユーザビリティテストやろうぜ!簡易ユーザビリティテスト
やろうぜ!簡易ユーザビリティテストTakehisa Gokaichi
2.6K views18 slides
チーム開発をスムーズにするために何ができるか by
チーム開発をスムーズにするために何ができるかチーム開発をスムーズにするために何ができるか
チーム開発をスムーズにするために何ができるかTakafumi Ikeda
13K views97 slides
0からのウェブディレクション講座:制作・開発編 ver 2.02 by
0からのウェブディレクション講座:制作・開発編 ver 2.020からのウェブディレクション講座:制作・開発編 ver 2.02
0からのウェブディレクション講座:制作・開発編 ver 2.02Yusuke Kojima
861 views50 slides

More Related Content

What's hot

テスト駆動開発の進化 by
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
20.2K views51 slides
アジャイルチームのためのソフトウェアテスト勉強会 by
アジャイルチームのためのソフトウェアテスト勉強会アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会Taisuke Shiratori
1.6K views42 slides
どうやらテスト駆動型開発は死んだようです。これからのCI by
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
18.2K views14 slides
はじめてのScrum by
はじめてのScrumはじめてのScrum
はじめてのScrumKenji Morita
1.8K views40 slides
CEDEC2015講演 チーム開発をスムーズにするために by
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするためにTakafumi Ikeda
12.7K views122 slides
Dev love kansai by
Dev love kansaiDev love kansai
Dev love kansaiTakafumi Ikeda
3.4K views133 slides

What's hot(16)

テスト駆動開発の進化 by Yukei Wachi
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
Yukei Wachi20.2K views
アジャイルチームのためのソフトウェアテスト勉強会 by Taisuke Shiratori
アジャイルチームのためのソフトウェアテスト勉強会アジャイルチームのためのソフトウェアテスト勉強会
アジャイルチームのためのソフトウェアテスト勉強会
Taisuke Shiratori1.6K views
どうやらテスト駆動型開発は死んだようです。これからのCI by Koichiro Sumi
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
Koichiro Sumi18.2K views
はじめてのScrum by Kenji Morita
はじめてのScrumはじめてのScrum
はじめてのScrum
Kenji Morita1.8K views
CEDEC2015講演 チーム開発をスムーズにするために by Takafumi Ikeda
CEDEC2015講演 チーム開発をスムーズにするためにCEDEC2015講演 チーム開発をスムーズにするために
CEDEC2015講演 チーム開発をスムーズにするために
Takafumi Ikeda12.7K views
TDD研究会 デブサミ2012 コミュニティLT by Yasui Tsutomu
TDD研究会 デブサミ2012 コミュニティLTTDD研究会 デブサミ2012 コミュニティLT
TDD研究会 デブサミ2012 コミュニティLT
Yasui Tsutomu1.8K views
Re-collection of embedded software qa in the last decade by Yasuharu Nishi
Re-collection of embedded software qa in the last decadeRe-collection of embedded software qa in the last decade
Re-collection of embedded software qa in the last decade
Yasuharu Nishi5.3K views
ドメイン駆動設計再入門 by Yukei Wachi
ドメイン駆動設計再入門ドメイン駆動設計再入門
ドメイン駆動設計再入門
Yukei Wachi14.8K views
メトリクスによる「見える化」のススメ: エッセンシャル・リーン by Hiroyuki Ito
メトリクスによる「見える化」のススメ: エッセンシャル・リーンメトリクスによる「見える化」のススメ: エッセンシャル・リーン
メトリクスによる「見える化」のススメ: エッセンシャル・リーン
Hiroyuki Ito47.2K views
TDDはじめる前に by Yasui Tsutomu
TDDはじめる前にTDDはじめる前に
TDDはじめる前に
Yasui Tsutomu4.2K views
探索的テストを探索する by Masao Tsuzuki
探索的テストを探索する探索的テストを探索する
探索的テストを探索する
Masao Tsuzuki7.4K views
How to let them in house of quality by Takahiro Toku
How to let them in house of qualityHow to let them in house of quality
How to let them in house of quality
Takahiro Toku674 views
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス by Hiroyuki Ito
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
世界と事例から学ぶ、プロダクトオーナーの「素養」としてのアジャイルメトリクス
Hiroyuki Ito17.5K views

Similar to 2014/3/30 ミニTDDBC presented by yokhama.devtesting

TDDはじめて物語 Second Season #tddbc by
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbcHiroyuki Ohnaka
4.3K views87 slides
devreljapan2022evaadvoc-final.pdf by
devreljapan2022evaadvoc-final.pdfdevreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdfShotaro Suzuki
186 views33 slides
5分で解るocp by
5分で解るocp5分で解るocp
5分で解るocpKoichi Ise
1.8K views28 slides
Aj2016 toyama feedback by
Aj2016 toyama feedbackAj2016 toyama feedback
Aj2016 toyama feedbackYasuhiro Morikawa
220 views24 slides
ソフトウェアだんどり by
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどりTakashi Imagire
1.5K views103 slides
開発者のためのUIデザイン入門 by
開発者のためのUIデザイン入門開発者のためのUIデザイン入門
開発者のためのUIデザイン入門Hiroyuki Mori
337 views32 slides

Similar to 2014/3/30 ミニTDDBC presented by yokhama.devtesting(20)

TDDはじめて物語 Second Season #tddbc by Hiroyuki Ohnaka
TDDはじめて物語 Second Season #tddbcTDDはじめて物語 Second Season #tddbc
TDDはじめて物語 Second Season #tddbc
Hiroyuki Ohnaka4.3K views
devreljapan2022evaadvoc-final.pdf by Shotaro Suzuki
devreljapan2022evaadvoc-final.pdfdevreljapan2022evaadvoc-final.pdf
devreljapan2022evaadvoc-final.pdf
Shotaro Suzuki186 views
5分で解るocp by Koichi Ise
5分で解るocp5分で解るocp
5分で解るocp
Koichi Ise1.8K views
ソフトウェアだんどり by Takashi Imagire
ソフトウェアだんどりソフトウェアだんどり
ソフトウェアだんどり
Takashi Imagire1.5K views
開発者のためのUIデザイン入門 by Hiroyuki Mori
開発者のためのUIデザイン入門開発者のためのUIデザイン入門
開発者のためのUIデザイン入門
Hiroyuki Mori337 views
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004) by Naoya Maekawa
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
組込みだからこそアジャイルやろうよ! (JASA中部セミナー20131004)
Naoya Maekawa6K views
卒論パワポVer3 伊東純平 by 純平 伊東
卒論パワポVer3 伊東純平卒論パワポVer3 伊東純平
卒論パワポVer3 伊東純平
純平 伊東16.1K views
神戸電子専門学校 業界セミナー 20170422 by Aya Tokura
神戸電子専門学校 業界セミナー 20170422神戸電子専門学校 業界セミナー 20170422
神戸電子専門学校 業界セミナー 20170422
Aya Tokura420 views
アジャイルマニフェストから始めるアジャイル by You&I
アジャイルマニフェストから始めるアジャイルアジャイルマニフェストから始めるアジャイル
アジャイルマニフェストから始めるアジャイル
You&I960 views
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用 by Naoya Maekawa
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
SPI Japan 2012 「SEPG活動とアジャイルの親和性を考える」ポジショントーク用
Naoya Maekawa1.3K views
SPI Japan2013 アジャイルチュートリアル by Naoya Maekawa
SPI Japan2013 アジャイルチュートリアルSPI Japan2013 アジャイルチュートリアル
SPI Japan2013 アジャイルチュートリアル
Naoya Maekawa2.4K views
20151126 cookpad talk_test_engineer by Kazuaki Matsuo
20151126 cookpad talk_test_engineer20151126 cookpad talk_test_engineer
20151126 cookpad talk_test_engineer
Kazuaki Matsuo11.1K views
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜 by Koichi ITO
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
俺も受託開発〜準委任契約によるふつうのソフトウェア開発〜
Koichi ITO6.6K views
スクラムプロジェクト準備(公開用) No.31 by Sukusuku Scrum
スクラムプロジェクト準備(公開用) No.31スクラムプロジェクト準備(公開用) No.31
スクラムプロジェクト準備(公開用) No.31
Sukusuku Scrum2.2K views
ソフトウェア開発の現場風景 by Koichi ITO
ソフトウェア開発の現場風景ソフトウェア開発の現場風景
ソフトウェア開発の現場風景
Koichi ITO4.2K views
アジャイルマニフェストから見るインセプションデッキ by You&I
アジャイルマニフェストから見るインセプションデッキアジャイルマニフェストから見るインセプションデッキ
アジャイルマニフェストから見るインセプションデッキ
You&I2.3K views
A Report on process Assessment for open source projects by Kiyoshi Ogawa
A Report on process Assessment for open source projectsA Report on process Assessment for open source projects
A Report on process Assessment for open source projects
Kiyoshi Ogawa543 views
デブサミ2014 オフィシャルコミュニティ募集要項 by Developers Summit
デブサミ2014 オフィシャルコミュニティ募集要項デブサミ2014 オフィシャルコミュニティ募集要項
デブサミ2014 オフィシャルコミュニティ募集要項
Developers Summit10.5K views

More from Hiroyuki Ohnaka

remote Docker over SSHが熱い by
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱いHiroyuki Ohnaka
713 views11 slides
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験 by
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験Hiroyuki Ohnaka
675 views23 slides
Remote Development with Visual Studio Code & A clean dev env, working every ... by
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
455 views13 slides
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話 by
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話Hiroyuki Ohnaka
1.1K views41 slides
「WindowsデスクトップでWeb開発 改訂版」サンプル by
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプルHiroyuki Ohnaka
672 views24 slides
Mackerelの薄い本 by
Mackerelの薄い本Mackerelの薄い本
Mackerelの薄い本Hiroyuki Ohnaka
2K views18 slides

More from Hiroyuki Ohnaka(20)

VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験 by Hiroyuki Ohnaka
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
Hiroyuki Ohnaka675 views
Remote Development with Visual Studio Code & A clean dev env, working every ... by Hiroyuki Ohnaka
Remote Development with Visual Studio Code &  A clean dev env, working every ...Remote Development with Visual Studio Code &  A clean dev env, working every ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
Hiroyuki Ohnaka455 views
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話 by Hiroyuki Ohnaka
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
Hiroyuki Ohnaka1.1K views
「WindowsデスクトップでWeb開発 改訂版」サンプル by Hiroyuki Ohnaka
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル
Hiroyuki Ohnaka672 views
Microsoft DocsにContributeした話 by Hiroyuki Ohnaka
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話
Hiroyuki Ohnaka940 views
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 by Hiroyuki Ohnaka
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
Hiroyuki Ohnaka2.6K views
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版 by Hiroyuki Ohnaka
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
Hiroyuki Ohnaka737 views
仮想通貨始めました~GethではじめるEthereum~ by Hiroyuki Ohnaka
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~
Hiroyuki Ohnaka1.3K views
錬金術MeetUpへのお誘い by Hiroyuki Ohnaka
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い
Hiroyuki Ohnaka1.5K views
Mackerelではじめる お手軽サーバー監視 by Hiroyuki Ohnaka
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
Hiroyuki Ohnaka4.1K views
「GebとSpockではじめるシステムテスト自動化」 by Hiroyuki Ohnaka
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
Hiroyuki Ohnaka9.8K views
TDDはじめて物語Second Season(updated) by Hiroyuki Ohnaka
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)
Hiroyuki Ohnaka1.3K views
XP祭り2017 LT 「DevOps再考」(改題) by Hiroyuki Ohnaka
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
Hiroyuki Ohnaka2.6K views
JDK9の真の目玉機能はこれだ! by Hiroyuki Ohnaka
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!
Hiroyuki Ohnaka2.9K views
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~ by Hiroyuki Ohnaka
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Java8移行は怖くない~エンタープライズ案件でのJava8移行事例~
Hiroyuki Ohnaka10.3K views
「すいーとみゅーじっく」のできるまで by Hiroyuki Ohnaka
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで
Hiroyuki Ohnaka904 views
pact-jvmではじめるコンシューマー駆動契約 by Hiroyuki Ohnaka
pact-jvmではじめるコンシューマー駆動契約pact-jvmではじめるコンシューマー駆動契約
pact-jvmではじめるコンシューマー駆動契約
Hiroyuki Ohnaka10.4K views

2014/3/30 ミニTDDBC presented by yokhama.devtesting

  • 1. TDD最初の一歩 2014/3/30 ミニTDDBC presented by yokohama.devtesting 大中浩行(@setoazusa)
  • 2. Copyright 2014 Hiroyuki Ohnaka 自己紹介 • 大中浩行 (Ohnaka, Hiroyuki) • 泣き笑いせつなポップ中年。 • yokohama.devtesting / devtesting-ja • @setoazusa • http://blog.fieldnotes.jp/ • Javaプログラマ • グロースエクスパートナーズ(株)所属
  • 3. Copyright 2014 Hiroyuki Ohnaka yokohama.devtestingとは • Developer Testing およびその周辺領域について、ディス カッションやハンズオンなど、ゆるく行うコミュニティで す。 • TDDBC横浜からスピンアウトしたコミュニティ
  • 4. 4Copyright 2014 Hiroyuki Ohnaka TDDとは
  • 5. Copyright 2014 Hiroyuki Ohnaka TDD • テスト • 駆動 • 開発 • テストによって駆動される開発
  • 6. Copyright 2014 Hiroyuki Ohnaka テスト 「全てのライフサイクルを通じて実施する静的、動的なプ ロセスにおいて、成果物が特定の要件を満足するかを判定 し、目的に合致することを実証し、欠陥を見つけるため、 ソフトウェアプロダクトや関連成果物に対し、計画、準備、 評価をすること」 ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01
  • 7. Copyright 2014 Hiroyuki Ohnaka 駆動 テスト駆動開発は、プログラム中の不安を管理する方法で ある。ここで言う不安とは悪い意味ではない。...(略)... 道理にかなった不安、すなわち「これは困難な問題だから 最初から最後までは分からない」という感覚である。 「コードをどのように書けばいいのかわからない」とい う不安を、失敗するテストとして表現することで、開発 を駆動させる原動力とするという、制御の逆転(Inversion of Control)を表している 「テスト駆動開発入門」から
  • 8. Copyright 2014 Hiroyuki Ohnaka 開発 我々が最も価値を置くのは、価値あるソフトウェアを早いうち から継続的にデリバリーすることを通じて顧客を満足させるこ とである。 そのための、「価値の流れ」を構成する一連の営み Principles behind the Agile Manifesto http://agilemanifesto.org/principles.html (訳は 和智・高木(2012))
  • 9. 9Copyright 2014 Hiroyuki Ohnaka TDDのゴール
  • 10. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコード」 和田卓人(2014) TDDのこころ@OHC2014 より
  • 11. Copyright 2014 Hiroyuki Ohnaka 「動作するきれいなコードへの2つの道」 和田卓人(2014) TDDのこころ@OHC2014 より
  • 12. Copyright 2014 Hiroyuki Ohnaka TDDのサイクル 1. 次の目標を考える 2. その目標を示すテストを書く 3. そのテストを実行して失敗させる(Red) 4. 目的のコードを書く 5. 2で書いたテストを成功させる(Green) 6. テストが通るままでリファクタリングを行う(Refator) 7. 1~6を繰り返す
  • 13. Copyright 2014 Hiroyuki Ohnaka TDDと黄金の回転 和田卓人(2014) TDDのこころ@OHC2014 より
  • 14. Copyright 2014 Hiroyuki Ohnaka キーワード • テストファースト • TODOリスト • アサートファースト • 仮実装 • 三角測量 • 明白な実装 • リファクタリング
  • 15. Copyright 2014 Hiroyuki Ohnaka TDD三原則(「クリーンコード」より) • 失敗する単体テストのコードを書く前に、製品のコードを書い てはならない • コンパイルが通り、適切に失敗する単体テストができるまでは、 次の単体テストを書いてはならない • 現在失敗している単体テストが通るまで、次の製品コードを書 いてはならない。
  • 16. 16Copyright 2014 Hiroyuki Ohnaka TDDのこころ
  • 17. Copyright 2014 Hiroyuki Ohnaka • 小さく回す • 複数を相手にしない 「わが全力をもって敵の分力を撃つ。 つねに敵をつつむがごとくに運動す る」 司馬遼太郎「坂の上の雲」より http://ja.wikipedia.org/wiki/%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:MIKASAPAINTING.jpg
  • 18. Copyright 2014 Hiroyuki Ohnaka ユニットテストあるある • 他のテストと一緒に流したら落ちるテスト • 他のテストと一緒に流さないと落ちるテスト • 月が変わると落ちるテスト • リファクタリングするとコンパイルエラーになるテスト • 仕様変更で全滅するテスト • バグがあるのにグリーンバーなテスト
  • 20. 20Copyright 2014 Hiroyuki Ohnaka 現場で戦う
  • 22. Copyright 2014 Hiroyuki Ohnaka 僕たちはアムロにはなれない • TDDは銀の弾丸ではない • 全ての問題をテクニカルなプラクティスで解決しようとしな い • 原理主義に走らない • 「テストを書かなければならない」 • 「テストファーストしなければならない」 • 「全てのクラスにユニットテストがなければならない」
  • 23. Copyright 2014 Hiroyuki Ohnaka 「2人目を探す」 • 「より良い開発」を目指すというコンセンサス • 日々是改善 • そのことを考えた時に、TDDより先にやることがあるかも しれない • テストデータの整備 • デプロイ手順の整備 • etc…
  • 24. Copyright 2014 Hiroyuki Ohnaka もうウンザリです。何も改善できません。 「しかし、私たちにはプログラミングをする本当の 理由があるはずです。」 「もし、自分や同僚がプログラミングを楽しめるな ら、どんなシステムに取り組んでいるかは重要では ありません。そのシステムに対してきちんとした仕 事ができるはずで、そうでなければ待っているのは 落胆です。そうなってしまっては何の楽しみもあり ませんし、私たちはそんな目に遭うべきではありま せん。」
  • 25. Copyright 2014 Hiroyuki Ohnaka 「レガシーコードで成功する鍵は、やりがいを見出すこと です。」
  • 26. Copyright 2014 Hiroyuki Ohnaka 「君にも君を動かしているものがあるでしょう?」 牛木義隆(2008) 夢喰いメリー(1) 芳文社
  • 27. Copyright 2014 Hiroyuki Ohnaka さいごに 「君が質の高いソフトウェアを届けることは誰にも止められ ない。君が現場に立って、お客さんに向けてプロジェクトの 状況と、プロジェクトに必要なことを誠実に伝えることも誰 にも止められないんだ。」
  • 28. Copyright 2014 Hiroyuki Ohnaka 参考文献 • Beck,Kent(2002) Test Driven Development: By Example Addison-Wesley Professional (長瀬 嘉秀(監訳)テクノロジックアート(訳) (2003) テスト駆動開発入 門 ピアソンエデュケーソン ) • Feathers, Michael C. (2005) Michael C. Feathers Working Effectively with Legacy Code Pearson Education (ウルシステムズ株式会社(監訳) 平澤章、越智典 子、稲葉信之、Fearless Change: Patterns for Introducing New Ideas田村友彦、小堀真義(訳) (2009) レガシーコード改善ガイド 翔泳社) • Humble,Jef Farley David(2011) Continuous Delivery :Reliable Software Releases Though Build,Test,And Deployment Automation Addison-Wesley Professional (和智右桂、高木正弘(2012)継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化 アスキー・メディ アワークス) • Manns,Mary Linn, Rising,Linn(2004) Fearless Change: Patterns for Introducing New Ideas Addison-Wesley (川口恭伸、木村卓央(監訳) 高江洲睦、高橋一 貴、中込大祐、安井力、山口鉄平、角征典(訳) (2014) Fearless Change アジャイルに効く アイデアを組織に広めるための48のパターン 丸善出版) • Martin, Robert C. (2009) Clean CODE: A HANDBOOK OF AGILE OFTWARE CRAFTMANSHP Pearson Education (花井志生(訳) (2009) Clean Code アジャ イルソフトウェア達人の技 アスキー・メディアワークス) • Meszaros, Gerard (2007) xUnit Test Patterns: Refactoring Test Code Addison-Wesley Professional • 日本ソフトウェアテスト資格認定委員会(2012) ソフトウェアテスト標準用語集 日本語版 Version 2.2.J01 http://jstqb.jp/dl/JSTQB-glossary.V2.2.J01.pdf • Rasmusson, Jonathan(2010) The Agile Samurai: How Agile Masters Deliver Great Software Pragmatic Bookshelf (西村直人、角谷信太郎(監訳) 近藤修 平、角掛 拓未 アジャイルサムライ 達人開発者への道 オーム社) • 和田卓人(2014) TDDのこころ@OHC2014 http://www.slideshare.net/t_wada/osh2014-sprit-of-tdd