SlideShare une entreprise Scribd logo
1  sur  50
Télécharger pour lire hors ligne
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDDのこれまで、そしてこ
れから
2016/9/24 XP祭り2016
大中浩行
#ccc_r11
Copyright 2016 Hiroyuki Onaka
テスト駆動開発(Test Driven Development)
TDDとは?
Generated by 社畜ちゃん台詞メーカー
http://blog.oukasoft.com/OS/
#ccc_r11
Copyright 2016 Hiroyuki Onaka
By National Photo Company [Public domain], via Wikimedia Commons
https://en.wikipedia.org/wiki/Bulletproof_vest
テストファーストしたら?
#ccc_r11
Copyright 2016 Hiroyuki Onaka
?
By NASA [Public domain], via Wikimedia Commons
https://en.wikipedia.org/wiki/Self-replicating_machine
テストが自動化されたら?
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDDとは
#ccc_r11
Copyright 2016 Hiroyuki Onaka
By Improve It (Flickr: Kent Beck no Workshop Mapping XP.) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via
Wikimedia Commons
https://en.wikipedia.org/wiki/Kent_Beck
Kent Beck
#ccc_r11
Copyright 2016 Hiroyuki Onaka ※絶版
TDDとは
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「テスト駆動開発入門」にTDDの定義って書い
てないんですよね...
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDDは何をする、というのは書いてある
1.素早くテストを追加する。
2.すべてのテストを実行し、新しいテストの失敗を確
認する。
3.小さな修正を行う。
4.すべてのテストを実行し、すべての成功を確認する。
5.重複を取り除くためにリファクタリングを行う。
ケント・ベック(著)長瀬嘉秀(訳)「テスト駆動開発入門」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「実践テスト駆動開発」では
テスト駆動開発(TDD:Test-Driven
Development)の考え方は、一見簡単そうに思
える。すまわち、コードを書く前にテストを書
け、というだけだからだ。
Steve Freeman Nat Pryce(著) 和智右桂 髙木正弘(訳)
「実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
とはいうものの、「テストを先に書く」という
のは、TDDだけに見られるものではない
#ccc_r11
Copyright 2016 Hiroyuki Onaka
Shift left Testing
By DonFiresmith (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)],
via Wikimedia Commons
https://en.wikipedia.org/wiki/Shift_left_testing
#ccc_r11
Copyright 2016 Hiroyuki Onaka
Test Early and Often
https://msdn.microsoft.com/library/ee330950.aspx
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDDとは
「TDDとは、プログラミングとテストすること
を工程として統合した開発スタイルです。」
- @setoazusa
#ccc_r11
Copyright 2016 Hiroyuki Onaka
ただ、プログラマーとして手札は多いほうがよ
いので、スキルとしてテストファーストできる
にこしたことはないです。
#ccc_r11
Copyright 2016 Hiroyuki Onaka
今日のお題
• TDDとは
• なぜTDDするのか
• なぜTDDするのか(もう一回)
• どうテストするか
#ccc_r11
Copyright 2016 Hiroyuki Onaka
なぜTDDする
のか
#ccc_r11
Copyright 2016 Hiroyuki Onaka
最初に答えをいいます
「継続的インテグレーションをもたらすための
核心である素早いフィードバックは、ユニット
テストのカバレッジが十分にないと可能になら
ないのだ」
Jez Humble,David Farley(著) 和智右桂(訳)
「継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「エラーが自動的に増殖するのがDevOps」
https://twitter.com/devops_borat/status/41587168870797312
#ccc_r11
Copyright 2016 Hiroyuki Onaka
サービス開発は、開発者だけで行うものではない
• プロダクトオーナー
• QAエンジニア
• インフラエンジニア
• 運用エンジニア(SRE)
• リモート開発(オフショア/ニアショア)
• etc…
#ccc_r11
Copyright 2016 Hiroyuki Onaka
DevOpsの各種プラクティス
• いずれも、プロダクトの品質が安定している
ことが前提条件
• A/Bテスト
• オートスケール
• カナリヤテスト / ダークカナリヤ
• Blue-Green Deployment
#ccc_r11
Copyright 2016 Hiroyuki Onaka
• 安定したプロダクトの品質が、チーム相互の
信頼をもたらす。
• 継続的インテグレーション(CI)を軸としたデ
リバリーのワークフローの確立のために、自
動化されたテストが足場として必要。
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「安全性を前提条件に」
http://www.slideshare.net/imagire/ss-64457130
出典:https://www.industriallogic.com/blog/modern-agile/
#ccc_r11
Copyright 2016 Hiroyuki Onaka
なぜTDDする
のか(もう一回)
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDD is dead.
http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html
#ccc_r11
Copyright 2016 Hiroyuki Onaka
テストなんて書かなくて良い?
http://mosa-siru.hatenablog.com/entry/2016/03/06/173930
#ccc_r11
Copyright 2016 Hiroyuki Onaka
…タイトルで釣るのはいけないと思います!
(目をそらしながら)
#ccc_r11
Copyright 2016 Hiroyuki Onaka
迅速なサービス開発にテストは必要ないのか?
…その前に、ちょっと寄り道をします。
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「日本で世界最先端のDevOpsチームに追いつき追い越す方法」
https://docs.com/ushio-tsuyoshi/6313
#ccc_r11
Copyright 2016 Hiroyuki Onaka
#ccc_r11
Copyright 2016 Hiroyuki Onaka
ソフトウェア業
インターネット付随サービス業
総務省「ICTの経済分析に関する調査報告書」から作成
http://www.soumu.go.jp/johotsusintokei/link/link03_03.html
#ccc_r11
Copyright 2016 Hiroyuki Onaka
• 「赤字サービスは付加価値を生んだことにな
らない」から
• 速く作ればいいというものではない
• 生み出したプロダクトの総量 != 生産性
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「ビジネスに貢献するテストであるべきだ!」
https://www.flickr.com/photos/cognizant-worldwide/19037152723
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「ビジネスゴールは計測可能であるべきだ!」
DocChewbacca
https://www.flickr.com/photos/st3f4n/2865510059/
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「そしてそれは金である!」
Tracy O
https://www.flickr.com/photos/tracy_olson/61056391
#ccc_r11
Copyright 2016 Hiroyuki Onaka
…と、「BDD in Action」
ではおっしゃるわけです
が…
#ccc_r11
Copyright 2016 Hiroyuki Onaka
やはりポイントは「価値」
…価値とは?
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「ソフトウェア品質知識体系ガイド」では
「すなわち、品質とは顧客が認識した価値に対
する顧客の評価である。」
SQuBOK 策定部会(編)
ソフトウェア品質知識体系ガイド(第2版)-SQuBOK® Guide V2-
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「価値をテストする」
John Ferguson Smart 「BDD in Action Behavior-Driven Development for the whole software lifecycle」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
• コンポーネントのテスト
• シナリオのテスト
• メトリクスの計測
が相互に連携している状態があるべき姿。
#ccc_r11
Copyright 2016 Hiroyuki Onaka
どうテストす
るか
#ccc_r11
Copyright 2016 Hiroyuki Onaka
最近よく聞く話
• ユニットテスト
• 「このコンポーネントのテストモックだらけでわ
かりづらいんですけど…」
• エンドツーエンドのテスト
• 「テストケースが増えてきてメンテナンスがつら
いです…」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
• AWS上でのサービス構築に代表されるように、
テストを書くときに依存するサービス/ミド
ルウェアが増えた
• マイクロサービスアーキテクチャーがその流
れを加速
#ccc_r11
Copyright 2016 Hiroyuki Onaka
それにも拘わらず、テストをはじめとして開発
の方法論がいわゆる三層アーキテクチャーに最
適化されすぎているが故の問題
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「テスト自動化ピラミッド」
Mike Cohn 「Suceeding with agile」
#ccc_r11
Copyright 2016 Hiroyuki Onaka
「テスト自動化ピラミッド」
• 「マイクロサービスアーキテクチャ」で取り
上げられる
• エンドツーエンドのテストとユニットテスト
の間に、UIをバイパスしてサービスをテスト
する層を挟む
#ccc_r11
Copyright 2016 Hiroyuki Onaka
まとめ
#ccc_r11
Copyright 2016 Hiroyuki Onaka
TDDは死んだ?
• 単独の開発プラクティスが開発プロセス全体
を駆動する時代の終焉
• プログラミング、テスト、デリバリーなどの
プラクティスを総合して価値あるソフトウェ
アをデリバリーする時代へ
#ccc_r11
Copyright 2016 Hiroyuki Onaka
• その中で、ユニットテストをすること、テス
トファーストすることは、変わらず重要であ
り続けます。
• なので、安心してテストを書いてください。
#ccc_r11
Copyright 2016 Hiroyuki Onaka
ありがとうございました!
• 大中浩行(Onaka,Hiroyuki)
• @setoazusa
• グロースエクスパートナーズ株式会社
アーキテクチャソリューション部
テクニカルリード
• http://blog.fieldnotes.jp/

Contenu connexe

Tendances

VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMyy yank
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)Hiroyuki Ohnaka
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)Hiroyuki Ohnaka
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応Masaru Horioka
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Masaru Horioka
 
静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応Masaru Horioka
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」Hiroyuki Ohnaka
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめTDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめKei Sawada
 
静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携Masaru Horioka
 
Klocwork 2017.1アップデート
Klocwork 2017.1アップデートKlocwork 2017.1アップデート
Klocwork 2017.1アップデートMasaru Horioka
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門Shuji Watanabe
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告Masaki Nakagawa
 
Jjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxJjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxtorutk
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ将 高野
 
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Masaru Horioka
 
WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略Masaki Nakagawa
 
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社Game Tools & Middleware Forum
 

Tendances (20)

VMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VMVMの歩む道。 Dalvik、ART、そしてJava VM
VMの歩む道。 Dalvik、ART、そしてJava VM
 
XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)XP祭り2017 LT 「DevOps再考」(改題)
XP祭り2017 LT 「DevOps再考」(改題)
 
TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)TDDはじめて物語Second Season(updated)
TDDはじめて物語Second Season(updated)
 
静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応静的解析ツール Klocworkによる 機能安全規格への対応
静的解析ツール Klocworkによる 機能安全規格への対応
 
Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介Klocwork カスタムチェッカー紹介
Klocwork カスタムチェッカー紹介
 
静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応静的解析ツールKlocwork によるCERT-C/CWE対応
静的解析ツールKlocwork によるCERT-C/CWE対応
 
「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」「GebとSpockではじめるシステムテスト自動化」
「GebとSpockではじめるシステムテスト自動化」
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめTDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
TDDを実践してわかったTDDつまづくあるあると自分なりの乗り越え方まとめ
 
Klocworkのご紹介
Klocworkのご紹介Klocworkのご紹介
Klocworkのご紹介
 
静的解析のROI
静的解析のROI静的解析のROI
静的解析のROI
 
静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携静的解析Klocwork とJenkins CIの連携
静的解析Klocwork とJenkins CIの連携
 
Klocwork 2017.1アップデート
Klocwork 2017.1アップデートKlocwork 2017.1アップデート
Klocwork 2017.1アップデート
 
テスト駆動開発入門
テスト駆動開発入門テスト駆動開発入門
テスト駆動開発入門
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
Jjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafxJjugccc2017spring m6 javafx
Jjugccc2017spring m6 javafx
 
Tddのすゝめ
TddのすゝめTddのすゝめ
Tddのすゝめ
 
Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要Klocwork C/C++解析チューニング 概要
Klocwork C/C++解析チューニング 概要
 
WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略WebサービスのソフトウェアQAと自動テスト戦略
WebサービスのソフトウェアQAと自動テスト戦略
 
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
GTMF 2015: バグを減らそう。テストを楽にしよう。静的解析が開発者を救う。 | 日本シノプシス合同会社
 

En vedette

実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記Hiroyuki Ohnaka
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証Yasuharu Nishi
 
ID管理/認証システム導入の理想と現実
ID管理/認証システム導入の理想と現実ID管理/認証システム導入の理想と現実
ID管理/認証システム導入の理想と現実Naohiro Fujie
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護Naohiro Fujie
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころTakuto Wada
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIKoichiro Sumi
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方Shuji Watanabe
 
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料Takashi Imagire
 
テスト駆動開発へようこそ
テスト駆動開発へようこそテスト駆動開発へようこそ
テスト駆動開発へようこそShuji Watanabe
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編株式会社 NTTテクノクロス
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料Yasui Tsutomu
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門ESM SEC
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE真吾 吉田
 
糖質とプログラミングと私
糖質とプログラミングと私糖質とプログラミングと私
糖質とプログラミングと私Akira Suenami
 
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)VirtualTech Japan Inc.
 
No-Ops で大量データ処理基盤を簡単に実現する
No-Ops で大量データ処理基盤を簡単に実現するNo-Ops で大量データ処理基盤を簡単に実現する
No-Ops で大量データ処理基盤を簡単に実現するKiyoshi Fukuda
 
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とはNarichika Kajihara
 
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れようAndroidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れよう kan-notice
 

En vedette (19)

実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記実録Blue-Green Deployment導入記
実録Blue-Green Deployment導入記
 
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
QAアーキテクチャの設計による説明責任の高いテスト・品質保証QAアーキテクチャの設計による説明責任の高いテスト・品質保証
QAアーキテクチャの設計による 説明責任の高いテスト・品質保証
 
ID管理/認証システム導入の理想と現実
ID管理/認証システム導入の理想と現実ID管理/認証システム導入の理想と現実
ID管理/認証システム導入の理想と現実
 
OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護OAuth2.0によるWeb APIの保護
OAuth2.0によるWeb APIの保護
 
TDD のこころ
TDD のこころTDD のこころ
TDD のこころ
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
 
Bambooによる継続的デリバリー
Bambooによる継続的デリバリーBambooによる継続的デリバリー
Bambooによる継続的デリバリー
 
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
TDD Boot Camp Tokyo for c++ 2014-01 デモ用資料
 
テスト駆動開発へようこそ
テスト駆動開発へようこそテスト駆動開発へようこそ
テスト駆動開発へようこそ
 
Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編Androidテスティング実践3 ユニットテスト・CI編
Androidテスティング実践3 ユニットテスト・CI編
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
Pull Request & TDD 入門
Pull Request & TDD 入門Pull Request & TDD 入門
Pull Request & TDD 入門
 
ITサービスマネジメントとSRE
ITサービスマネジメントとSREITサービスマネジメントとSRE
ITサービスマネジメントとSRE
 
糖質とプログラミングと私
糖質とプログラミングと私糖質とプログラミングと私
糖質とプログラミングと私
 
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
 
No-Ops で大量データ処理基盤を簡単に実現する
No-Ops で大量データ処理基盤を簡単に実現するNo-Ops で大量データ処理基盤を簡単に実現する
No-Ops で大量データ処理基盤を簡単に実現する
 
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
正しくプロダクトを作り、リリースプランニングするためのプロダクトオーナーの役割とは
 
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れようAndroidアプリ開発にクリーンアーキテクチャを取り入れよう
Androidアプリ開発にクリーンアーキテクチャを取り入れよう
 

Similaire à TDDのこれまで、そしてこれから

Fearless Change RSG Japan English.pdf
Fearless Change RSG Japan English.pdfFearless Change RSG Japan English.pdf
Fearless Change RSG Japan English.pdfDaniel Teng
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告aha_oretama
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)Keizo Tatsumi
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについてMasahito Zembutsu
 
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QJasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QYoshihito Kuranuki
 
DevOps and Compliance and Security
DevOps and Compliance and SecurityDevOps and Compliance and Security
DevOps and Compliance and SecurityKazushi Kamegawa
 
20191029 automation struggle
20191029 automation struggle 20191029 automation struggle
20191029 automation struggle Sadaaki Emura
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーYukei Wachi
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能Yoshifumi Kawai
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2近藤 繁延
 
Open stack概要とよくある議論
Open stack概要とよくある議論Open stack概要とよくある議論
Open stack概要とよくある議論shintaro mizuno
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Kazushi Kamegawa
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpYahoo!デベロッパーネットワーク
 
MagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシMagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシKohei Tai
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンドTakehara Ryo
 
「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐKazushi Kamegawa
 
テスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することテスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することyuichi_kuwahara
 

Similaire à TDDのこれまで、そしてこれから (20)

Fearless Change RSG Japan English.pdf
Fearless Change RSG Japan English.pdfFearless Change RSG Japan English.pdf
Fearless Change RSG Japan English.pdf
 
SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告SeleniumConf Chicago 参加報告
SeleniumConf Chicago 参加報告
 
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)SQuBOKの変遷 (SQuBOK V3発行記念イベント)
SQuBOKの変遷 (SQuBOK V3発行記念イベント)
 
2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて2014年を振り返る 今年の技術トレンドとDockerについて
2014年を振り返る 今年の技術トレンドとDockerについて
 
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12QJasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
Jasst12九州 倉貫資料:アジャイル・Ruby・クラウド(ARC)を活用したビジネスにおけるテストの実践 #jasst12Q
 
DevOps and Compliance and Security
DevOps and Compliance and SecurityDevOps and Compliance and Security
DevOps and Compliance and Security
 
20191029 automation struggle
20191029 automation struggle 20191029 automation struggle
20191029 automation struggle
 
第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部第9回しゃちほこオラクル倶楽部
第9回しゃちほこオラクル倶楽部
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
SGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリーSGT技術トークス 継続的デリバリー
SGT技術トークス 継続的デリバリー
 
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
ライブラリ作成のすゝめ - 事例から見る個人OSS開発の効能
 
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
AITCシニア技術者勉強会 「今さら聞けないWebサイト開発」 vol2
 
160724 jtf2016sre
160724 jtf2016sre160724 jtf2016sre
160724 jtf2016sre
 
Open stack概要とよくある議論
Open stack概要とよくある議論Open stack概要とよくある議論
Open stack概要とよくある議論
 
Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)Ignite 2021 振り返り(DevOps)
Ignite 2021 振り返り(DevOps)
 
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #SeleniumjpSeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
SeleniumE2Eテストフレームワークを使用したテスト自動化事例 #Seleniumjp
 
MagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシMagicPodで自動化率を爆上げしたハナシ
MagicPodで自動化率を爆上げしたハナシ
 
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
自動化ーニバルだよ!GDC16に見る自動化技術とテストのトレンド
 
「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ「何もしないのにCIが失敗した」を防ぐ
「何もしないのにCIが失敗した」を防ぐ
 
テスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決することテスト自動化の現場で困ること SI-Toolkitが解決すること
テスト自動化の現場で困ること SI-Toolkitが解決すること
 

Plus de Hiroyuki Ohnaka

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱いHiroyuki Ohnaka
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験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 ...
Remote Development with Visual Studio Code & A clean dev env, working every ...Hiroyuki Ohnaka
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話Hiroyuki Ohnaka
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプルHiroyuki Ohnaka
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Hiroyuki Ohnaka
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescriptHiroyuki Ohnaka
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版Hiroyuki Ohnaka
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版Hiroyuki Ohnaka
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~Hiroyuki Ohnaka
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘いHiroyuki Ohnaka
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Hiroyuki Ohnaka
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!Hiroyuki Ohnaka
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまでHiroyuki Ohnaka
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
Reading java-property-file-from-ruby
Reading java-property-file-from-rubyReading java-property-file-from-ruby
Reading java-property-file-from-rubyHiroyuki Ohnaka
 
SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」Hiroyuki Ohnaka
 
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化Hiroyuki Ohnaka
 

Plus de Hiroyuki Ohnaka (19)

remote Docker over SSHが熱い
remote Docker over SSHが熱いremote Docker over SSHが熱い
remote Docker over SSHが熱い
 
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
VSCode Remote Container & GitHub Codespacesで拓く次世代のJava開発体験
 
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 ...
Remote Development with Visual Studio Code & A clean dev env, working every ...
 
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
ChefとItamaeをニコイチしてAnsibleにマイグレーションした話
 
「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル「WindowsデスクトップでWeb開発 改訂版」サンプル
「WindowsデスクトップでWeb開発 改訂版」サンプル
 
Mackerelの薄い本
Mackerelの薄い本Mackerelの薄い本
Mackerelの薄い本
 
Microsoft DocsにContributeした話
Microsoft DocsにContributeした話Microsoft DocsにContributeした話
Microsoft DocsにContributeした話
 
Azure functions+typescript
Azure functions+typescriptAzure functions+typescript
Azure functions+typescript
 
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版 技術書典4  く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
技術書典4 く-35「錬金術MeetUp」 Alchemist Vol.1 サンプル版
 
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
4/22 技術書典4 か-16「ふぃーるどのーつ」 新刊「すいーとみゅーじっく vol.5Mackerelではじめるお手軽サーバー監視」サンプル版
 
仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~仮想通貨始めました~GethではじめるEthereum~
仮想通貨始めました~GethではじめるEthereum~
 
錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い錬金術MeetUpへのお誘い
錬金術MeetUpへのお誘い
 
Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視Mackerelではじめる お手軽サーバー監視
Mackerelではじめる お手軽サーバー監視
 
JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!JDK9の真の目玉機能はこれだ!
JDK9の真の目玉機能はこれだ!
 
「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで「すいーとみゅーじっく」のできるまで
「すいーとみゅーじっく」のできるまで
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
Reading java-property-file-from-ruby
Reading java-property-file-from-rubyReading java-property-file-from-ruby
Reading java-property-file-from-ruby
 
SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」SQLアンチパターン「ディプロマティック・イミュニティ」
SQLアンチパターン「ディプロマティック・イミュニティ」
 
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化
CIサーバーとSchemaSpyでデータベースのドキュメント作成を自動化
 

TDDのこれまで、そしてこれから

  • 1. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDのこれまで、そしてこ れから 2016/9/24 XP祭り2016 大中浩行
  • 2. #ccc_r11 Copyright 2016 Hiroyuki Onaka テスト駆動開発(Test Driven Development) TDDとは? Generated by 社畜ちゃん台詞メーカー http://blog.oukasoft.com/OS/
  • 3. #ccc_r11 Copyright 2016 Hiroyuki Onaka By National Photo Company [Public domain], via Wikimedia Commons https://en.wikipedia.org/wiki/Bulletproof_vest テストファーストしたら?
  • 4. #ccc_r11 Copyright 2016 Hiroyuki Onaka ? By NASA [Public domain], via Wikimedia Commons https://en.wikipedia.org/wiki/Self-replicating_machine テストが自動化されたら?
  • 6. #ccc_r11 Copyright 2016 Hiroyuki Onaka By Improve It (Flickr: Kent Beck no Workshop Mapping XP.) [CC BY-SA 2.0 (http://creativecommons.org/licenses/by-sa/2.0)], via Wikimedia Commons https://en.wikipedia.org/wiki/Kent_Beck Kent Beck
  • 7. #ccc_r11 Copyright 2016 Hiroyuki Onaka ※絶版 TDDとは
  • 8. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト駆動開発入門」にTDDの定義って書い てないんですよね...
  • 9. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDは何をする、というのは書いてある 1.素早くテストを追加する。 2.すべてのテストを実行し、新しいテストの失敗を確 認する。 3.小さな修正を行う。 4.すべてのテストを実行し、すべての成功を確認する。 5.重複を取り除くためにリファクタリングを行う。 ケント・ベック(著)長瀬嘉秀(訳)「テスト駆動開発入門」
  • 10. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「実践テスト駆動開発」では テスト駆動開発(TDD:Test-Driven Development)の考え方は、一見簡単そうに思 える。すまわち、コードを書く前にテストを書 け、というだけだからだ。 Steve Freeman Nat Pryce(著) 和智右桂 髙木正弘(訳) 「実践テスト駆動開発 テストに導かれてオブジェクト指向ソフトウェアを育てる」
  • 11. #ccc_r11 Copyright 2016 Hiroyuki Onaka とはいうものの、「テストを先に書く」という のは、TDDだけに見られるものではない
  • 12. #ccc_r11 Copyright 2016 Hiroyuki Onaka Shift left Testing By DonFiresmith (Own work) [CC BY-SA 4.0 (http://creativecommons.org/licenses/by-sa/4.0)], via Wikimedia Commons https://en.wikipedia.org/wiki/Shift_left_testing
  • 13. #ccc_r11 Copyright 2016 Hiroyuki Onaka Test Early and Often https://msdn.microsoft.com/library/ee330950.aspx
  • 14. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDとは 「TDDとは、プログラミングとテストすること を工程として統合した開発スタイルです。」 - @setoazusa
  • 15. #ccc_r11 Copyright 2016 Hiroyuki Onaka ただ、プログラマーとして手札は多いほうがよ いので、スキルとしてテストファーストできる にこしたことはないです。
  • 16. #ccc_r11 Copyright 2016 Hiroyuki Onaka 今日のお題 • TDDとは • なぜTDDするのか • なぜTDDするのか(もう一回) • どうテストするか
  • 17. #ccc_r11 Copyright 2016 Hiroyuki Onaka なぜTDDする のか
  • 18. #ccc_r11 Copyright 2016 Hiroyuki Onaka 最初に答えをいいます 「継続的インテグレーションをもたらすための 核心である素早いフィードバックは、ユニット テストのカバレッジが十分にないと可能になら ないのだ」 Jez Humble,David Farley(著) 和智右桂(訳) 「継続的デリバリー 信頼できるソフトウェアリリースのためのビルド・テスト・デプロイメントの自動化」
  • 19. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「エラーが自動的に増殖するのがDevOps」 https://twitter.com/devops_borat/status/41587168870797312
  • 20. #ccc_r11 Copyright 2016 Hiroyuki Onaka サービス開発は、開発者だけで行うものではない • プロダクトオーナー • QAエンジニア • インフラエンジニア • 運用エンジニア(SRE) • リモート開発(オフショア/ニアショア) • etc…
  • 21. #ccc_r11 Copyright 2016 Hiroyuki Onaka DevOpsの各種プラクティス • いずれも、プロダクトの品質が安定している ことが前提条件 • A/Bテスト • オートスケール • カナリヤテスト / ダークカナリヤ • Blue-Green Deployment
  • 22. #ccc_r11 Copyright 2016 Hiroyuki Onaka • 安定したプロダクトの品質が、チーム相互の 信頼をもたらす。 • 継続的インテグレーション(CI)を軸としたデ リバリーのワークフローの確立のために、自 動化されたテストが足場として必要。
  • 23. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「安全性を前提条件に」 http://www.slideshare.net/imagire/ss-64457130 出典:https://www.industriallogic.com/blog/modern-agile/
  • 24. #ccc_r11 Copyright 2016 Hiroyuki Onaka なぜTDDする のか(もう一回)
  • 25. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDD is dead. http://david.heinemeierhansson.com/2014/tdd-is-dead-long-live-testing.html
  • 26. #ccc_r11 Copyright 2016 Hiroyuki Onaka テストなんて書かなくて良い? http://mosa-siru.hatenablog.com/entry/2016/03/06/173930
  • 27. #ccc_r11 Copyright 2016 Hiroyuki Onaka …タイトルで釣るのはいけないと思います! (目をそらしながら)
  • 28. #ccc_r11 Copyright 2016 Hiroyuki Onaka 迅速なサービス開発にテストは必要ないのか? …その前に、ちょっと寄り道をします。
  • 29. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「日本で世界最先端のDevOpsチームに追いつき追い越す方法」 https://docs.com/ushio-tsuyoshi/6313
  • 31. #ccc_r11 Copyright 2016 Hiroyuki Onaka ソフトウェア業 インターネット付随サービス業 総務省「ICTの経済分析に関する調査報告書」から作成 http://www.soumu.go.jp/johotsusintokei/link/link03_03.html
  • 32. #ccc_r11 Copyright 2016 Hiroyuki Onaka • 「赤字サービスは付加価値を生んだことにな らない」から • 速く作ればいいというものではない • 生み出したプロダクトの総量 != 生産性
  • 33. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ビジネスに貢献するテストであるべきだ!」 https://www.flickr.com/photos/cognizant-worldwide/19037152723
  • 34. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ビジネスゴールは計測可能であるべきだ!」 DocChewbacca https://www.flickr.com/photos/st3f4n/2865510059/
  • 35. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「そしてそれは金である!」 Tracy O https://www.flickr.com/photos/tracy_olson/61056391
  • 36. #ccc_r11 Copyright 2016 Hiroyuki Onaka …と、「BDD in Action」 ではおっしゃるわけです が…
  • 37. #ccc_r11 Copyright 2016 Hiroyuki Onaka やはりポイントは「価値」 …価値とは?
  • 38. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「ソフトウェア品質知識体系ガイド」では 「すなわち、品質とは顧客が認識した価値に対 する顧客の評価である。」 SQuBOK 策定部会(編) ソフトウェア品質知識体系ガイド(第2版)-SQuBOK® Guide V2-
  • 39. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「価値をテストする」 John Ferguson Smart 「BDD in Action Behavior-Driven Development for the whole software lifecycle」
  • 40. #ccc_r11 Copyright 2016 Hiroyuki Onaka • コンポーネントのテスト • シナリオのテスト • メトリクスの計測 が相互に連携している状態があるべき姿。
  • 41. #ccc_r11 Copyright 2016 Hiroyuki Onaka どうテストす るか
  • 42. #ccc_r11 Copyright 2016 Hiroyuki Onaka 最近よく聞く話 • ユニットテスト • 「このコンポーネントのテストモックだらけでわ かりづらいんですけど…」 • エンドツーエンドのテスト • 「テストケースが増えてきてメンテナンスがつら いです…」
  • 43. #ccc_r11 Copyright 2016 Hiroyuki Onaka • AWS上でのサービス構築に代表されるように、 テストを書くときに依存するサービス/ミド ルウェアが増えた • マイクロサービスアーキテクチャーがその流 れを加速
  • 44. #ccc_r11 Copyright 2016 Hiroyuki Onaka それにも拘わらず、テストをはじめとして開発 の方法論がいわゆる三層アーキテクチャーに最 適化されすぎているが故の問題
  • 45. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト自動化ピラミッド」 Mike Cohn 「Suceeding with agile」
  • 46. #ccc_r11 Copyright 2016 Hiroyuki Onaka 「テスト自動化ピラミッド」 • 「マイクロサービスアーキテクチャ」で取り 上げられる • エンドツーエンドのテストとユニットテスト の間に、UIをバイパスしてサービスをテスト する層を挟む
  • 48. #ccc_r11 Copyright 2016 Hiroyuki Onaka TDDは死んだ? • 単独の開発プラクティスが開発プロセス全体 を駆動する時代の終焉 • プログラミング、テスト、デリバリーなどの プラクティスを総合して価値あるソフトウェ アをデリバリーする時代へ
  • 49. #ccc_r11 Copyright 2016 Hiroyuki Onaka • その中で、ユニットテストをすること、テス トファーストすることは、変わらず重要であ り続けます。 • なので、安心してテストを書いてください。
  • 50. #ccc_r11 Copyright 2016 Hiroyuki Onaka ありがとうございました! • 大中浩行(Onaka,Hiroyuki) • @setoazusa • グロースエクスパートナーズ株式会社 アーキテクチャソリューション部 テクニカルリード • http://blog.fieldnotes.jp/