Enviar búsqueda
Cargar
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
•
20 recomendaciones
•
5,983 vistas
Shuji Watanabe
Seguir
JJUG CCC 2014 Soringで行ったユニットテストハンズオンでの資料です。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 71
Descargar ahora
Descargar para leer sin conexión
Recomendados
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
智治 長沢
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
学 松崎
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
学 松崎
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
Akihiro Kuwano
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
Recomendados
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
智治 長沢
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
松田 千尋
最近のSpringFramework2013 #jjug #jsug #SpringFramework
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Toshiaki Maki
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
Satoshi Takami
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
学 松崎
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
学 松崎
インフラエンジニアってなんでしたっけ(仮)
インフラエンジニアってなんでしたっけ(仮)
Akihiro Kuwano
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Toshio Ehara
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Rubyのススメ
Rubyのススメ
Daisuke Yamaguchi
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Ryosuke Uchitate
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
Takahiro Okumura
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Sato Shun
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
Midori Ikegami
2013 08-19 jjug
2013 08-19 jjug
sk44_
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
Naoki Yamada
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
React meetup 3_eight
React meetup 3_eight
Hideharu Okuma
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
angular1脳で見るangular2
angular1脳で見るangular2
Moriyuki Arakawa
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
使ってみよう! Cloud Automator
使ってみよう! Cloud Automator
保彦 坂井田
Más contenido relacionado
La actualidad más candente
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
Toshio Ehara
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
Kazuhiro Serizawa
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
Kazuhiro Serizawa
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Kazuhiro Sera
Rubyのススメ
Rubyのススメ
Daisuke Yamaguchi
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Shumpei Shiraishi
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Ryosuke Uchitate
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Toshiaki Maki
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
Takahiro Okumura
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Sato Shun
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Toshiaki Maki
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
Shohei Koyama
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
Midori Ikegami
2013 08-19 jjug
2013 08-19 jjug
sk44_
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
Asami Abe
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
Naoki Yamada
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
React meetup 3_eight
React meetup 3_eight
Hideharu Okuma
OpenShift のある生活
OpenShift のある生活
Yoshimasa Tanabe
angular1脳で見るangular2
angular1脳で見るangular2
Moriyuki Arakawa
La actualidad más candente
(20)
iPhoneアプリを Javaで書くよ?
iPhoneアプリを Javaで書くよ?
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
第八回 #渋谷Java 最近のjava PaaS事情
第八回 #渋谷Java 最近のjava PaaS事情
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
Rubyのススメ
Rubyのススメ
JavaScript使いのためのTypeScript実践入門
JavaScript使いのためのTypeScript実践入門
Spring starterによるSpring Boot Starter
Spring starterによるSpring Boot Starter
Spring Bootキャンプ @関ジャバ #kanjava_sbc
Spring Bootキャンプ @関ジャバ #kanjava_sbc
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
インフラエンジニアの綺麗で優しい手順書の書き方
インフラエンジニアの綺麗で優しい手順書の書き方
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
2013 08-19 jjug
2013 08-19 jjug
2015/11/15 Javaでwebアプリケーション入門
2015/11/15 Javaでwebアプリケーション入門
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
React meetup 3_eight
React meetup 3_eight
OpenShift のある生活
OpenShift のある生活
angular1脳で見るangular2
angular1脳で見るangular2
Similar a TDD BootCamp in JJUG CCC - レガシーコード対策編 -
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Shuji Watanabe
使ってみよう! Cloud Automator
使ってみよう! Cloud Automator
保彦 坂井田
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Yasuaki Matsuda
テスト駆動開発へようこそ
テスト駆動開発へようこそ
Shuji Watanabe
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところ
Masaki Yamamoto
Azure Functions あれこれ
Azure Functions あれこれ
Yasuaki Matsuda
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
Takashi Someda
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
Terui Masashi
俺と AWS Summit 2019 振り返り
俺と AWS Summit 2019 振り返り
Masayuki KaToH
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
Kazuhiro Serizawa
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
kyon mm
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
Tomoyuki Sugita
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
Mitsuhiro Yamashita
AWS認定クラウド プラクティショナー って何?
AWS認定クラウド プラクティショナー って何?
Mitsuhiro Yamashita
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
Koichiro Nishijima
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Takashi Someda
LocalStack
LocalStack
chibochibo
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
Noriaki Sakata
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
Mitsuhiro Yamashita
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
Masatoshi Tada
Similar a TDD BootCamp in JJUG CCC - レガシーコード対策編 -
(20)
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
使ってみよう! Cloud Automator
使ってみよう! Cloud Automator
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
Azure Function GAした!Visual Studio Tools for Azure Functions もプレビューだ!
テスト駆動開発へようこそ
テスト駆動開発へようこそ
Azure使いから見たAWSの良いところ
Azure使いから見たAWSの良いところ
Azure Functions あれこれ
Azure Functions あれこれ
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
AWS を活用して小さなチームで 世界で使われるサービスを運用する方法 - JAWS Days 2013
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
俺と AWS Summit 2019 振り返り
俺と AWS Summit 2019 振り返り
じっくりコトコト煮込んだJavaスープ
じっくりコトコト煮込んだJavaスープ
詳解!自動結合テスト #jasst
詳解!自動結合テスト #jasst
事業会社で働くエンジニアのマインドセット - DevLOVE関西
事業会社で働くエンジニアのマインドセット - DevLOVE関西
アウトプットはスキルアップもするしトクもする
アウトプットはスキルアップもするしトクもする
AWS認定クラウド プラクティショナー って何?
AWS認定クラウド プラクティショナー って何?
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
JAWS-UG沖縄第1回勉強会 EBS/RDSがなくてもwrite massiveに耐えるDBの作り方
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
Backlog、Cacoo にみるAWS運用の勘所 - JAWS UG 三都物語
LocalStack
LocalStack
関数プロキシを使って REST APIっぽくを使ってみる
関数プロキシを使って REST APIっぽくを使ってみる
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
ブログを大阪リージョンに移行して東京リージョンをDRサイトにしています。その理由とRTO/RPOそしてコスト。
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
NetBeansでかんたんJava EE ○分間クッキング! #kuwaccho lt
Más de Shuji Watanabe
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
Shuji Watanabe
Ansible ハンズオン on AWS - DevelopersIO 2017
Ansible ハンズオン on AWS - DevelopersIO 2017
Shuji Watanabe
SSMでマネージドEC2 #reinvent #cmdevio
SSMでマネージドEC2 #reinvent #cmdevio
Shuji Watanabe
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
Shuji Watanabe
ELBの概要と勘所
ELBの概要と勘所
Shuji Watanabe
AWSによるWebサイト構築と運用 - concrete5 編 -
AWSによるWebサイト構築と運用 - concrete5 編 -
Shuji Watanabe
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Shuji Watanabe
CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01
Shuji Watanabe
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
Shuji Watanabe
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
Shuji Watanabe
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
Shuji Watanabe
ユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へ
Shuji Watanabe
テスト駆動開発入門
テスト駆動開発入門
Shuji Watanabe
テストコードのリファクタリング
テストコードのリファクタリング
Shuji Watanabe
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Shuji Watanabe
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
Shuji Watanabe
アジャイルテスティング
アジャイルテスティング
Shuji Watanabe
テストリストの見つけ方
テストリストの見つけ方
Shuji Watanabe
TDDをはじめよう
TDDをはじめよう
Shuji Watanabe
Jenkins導入事例
Jenkins導入事例
Shuji Watanabe
Más de Shuji Watanabe
(20)
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
Ansible ハンズオン on AWS - DevelopersIO 2017
Ansible ハンズオン on AWS - DevelopersIO 2017
SSMでマネージドEC2 #reinvent #cmdevio
SSMでマネージドEC2 #reinvent #cmdevio
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
ELBの概要と勘所
ELBの概要と勘所
AWSによるWebサイト構築と運用 - concrete5 編 -
AWSによるWebサイト構築と運用 - concrete5 編 -
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
CloudSearchによる全文検索 - CM:道 2014/08/01
CloudSearchによる全文検索 - CM:道 2014/08/01
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
テスト駆動開発のはじめ方
テスト駆動開発のはじめ方
ユースケースからテスト駆動開発へ
ユースケースからテスト駆動開発へ
テスト駆動開発入門
テスト駆動開発入門
テストコードのリファクタリング
テストコードのリファクタリング
テスト駆動開発の導入ーペアプログラミングの学習効果ー
テスト駆動開発の導入ーペアプログラミングの学習効果ー
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
アジャイルテスティング
アジャイルテスティング
テストリストの見つけ方
テストリストの見つけ方
TDDをはじめよう
TDDをはじめよう
Jenkins導入事例
Jenkins導入事例
TDD BootCamp in JJUG CCC - レガシーコード対策編 -
1.
TDD BootCamp in JJUG
CCC 2014.05.17 JJUG CCC 2014 Spring Shuji Watanabe (@shuji_w6e) 1 #ccc_r53 #jjug_ccc https://github.com/shuji/legacy-hanbai-kanri
2.
自己紹介
3.
渡辺 修司 /
@shuji_w6e 札幌Javaコミュニティ やさしいデスマーチ JUnit実践入門 Java, Groovy, JavaScript, AWS, TDD ロードバイク, スノーボード, トレラン NEW 4刷! 累計1万部
4.
最近のお仕事... 昨年8月に転職 株式会社クラスメソッド 札幌にて在宅勤務 AWS利用者向けシステムの開発 主にフロントエンドや自動化などを担当 Spring, Ember.js, d3-data ブログ業務
5.
クラスメソッド札幌オフィス開設! AWSエンジニア / iOSエンジニア U/Iターン歓迎! 7月初旬 開設予定! アプリ屋から 移籍可能
6.
Special Thanks TA @i_takehiro @grimrose @sue445 @setoazusa @torazuka @uasano @yujiorama
7.
8.
TDDBCへ ようこそ
9.
http://devtesting.jp/tddbc/ TDD Boot Camp(TDDBC)
とは、テスト 駆動開発(Test Driven Development)につ いて、座学だけでなく、実習形式で手を 動かして体得することを目的とするイベ ントです。
10.
ショートバージョン 2時間しかないのでダイジェストで! TDDとは? TDDは死んだ? レガシーコード体験 レガシーコード改善 モデリング ユニットテストハンズオン
11.
本家TDDBCとの違い ショートバージョン(本家は1日) ペアプログラミングは行わない レビュー大会は行わない テストファーストに拘らない プロダクションコードは8分組み レガシーコードからTDDを体験する
12.
テスト駆動開発とは?
13.
テスト駆動開発とは? ソフトウェアの開発手法 テスト駆動開発の1サイクル はじめにテストコードを書く テストが成功する必要最低限のコードを書く テスト成功を維持してリファクタリングする 上記サイクルを素早くテンポ良く繰り返す 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
14.
TDDのサイクル 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
15.
TDD 品質保証テスト 品質保証テストはソフトウェアを対象とし、 品質担当者が高い品質を担保するために実施 TDDは品質を担保するわけではない 結果的に品質は高まるが主目的ではない 開発者が安心して開発できるための開発手法 TDDは設計やプログラム自体を対象とする
16.
汚いコードは動かない 密結合 多重ネスト 巨大なクラス 多すぎる引数 多すぎる責務
17.
http://www.flickr.com/photos/peakman2/1017866785/ レガシーコード!
18.
レガシーコード生成のプロセス 1. 最初の仕様でコードを書く 2. 追加機能で増築する 3.
仕様変更で改築する 4. 似たような機能はコピペして作る 5. これらのプロセスが秘伝のタレとなる
19.
http://www.flickr.com/photos/jas_132/5403388208 TDDで解決?
20.
レガシーコードへの道 設計
21.
きれいな動くコードへの道 動かない 動く きれい 汚い
22.
1.設計する 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
23.
2.テストを書く 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
24.
3.コードを書く 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
25.
4.テストを成功させる 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
26.
5.リファクタリング 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
27.
1.設計する 動かない 動く きれい 汚い 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
28.
TDDのポイント テストを意識した設計(テストファースト) テストによる安心 リファクタリング イテレーティブな開発サイクル
29.
TDDのこころ ©和田卓人
30.
小さく 個別に すばやく
31.
ひとつずつ、一歩ずつ 小さなステップで 大きなものは小さく分割 確実に、堅実に 手戻りを小さく
32.
ひとりずつ、仕留める テストは個別撃破する 次のテストを作らない
33.
すばやくまわす 小さく回す 早く回す すぐに対応 リズム重要 1.設計する 2.テストを書く 3.コードを書く 4.テストを成功させる 5.リファクタリング Heuristics
34.
使う 作る 伝える
35.
自分が最初のユーザー 使いにくいものは使いにくい 自分で評価する 納得できるか? 恥ずかしくないか? 解りやすいか?
36.
道具にこだわる 最高のパフォーマンスを維持する プロとしてのこだわり 少しでも使いやすく 日々、研究・工夫
37.
未来の自分が読む テストコードは保守される 読みにくいコードは悪 シンプルに 名前重要 型
38.
どうして、 テスト駆動開発を 導入するのか?
39.
http://www.flickr.com/photos/yopse/3772030400/ 不安 スキル不足 複雑な要件 仕様変更 経験不足
40.
http://www.flickr.com/photos/32010000@N08/2987901256/ 安全を確保する
41.
なぜ、TDDを実践するか? ソフトウェアは思った以上に複雑 パーフェクトプログラマなんかいない 不安だからユニットテストを書く セーフティネットとしてのユニットテスト すばやく回し、すばやいフィードバック
42.
TDDが目指すところ 安心できる健康な開発 変更に強い健康なコード
43.
テスト駆動開発は死んだ?
44.
http://www.flickr.com/photos/palermobootcamp/5464512672/ TDD!TDD! テストファースト!
45.
TDDは死んだ、無益だ!
46.
http://www.flickr.com/photos/bsom/4625185702/ 貴様のプロジェクトでは、 効果的なテストをしてるか?
47.
TDDが無益とか有益とか語る前に... (ユニット)テスティングできてますか? テストファーストはテクニックのひとつ TDDはユニットテストを学ぶ教科書 常時TDDをやる必要もありません TDDの考え方を学ぶ価値は大きくあります
48.
Long live testing going
with the practice of testing where no testing had happened before
49.
レガシーコード体験 NO TESTING
50.
レガシーコードを読んでみよう よくない点を列挙してみよう どうしてそうなったのかを想像してみよう 5∼10分したらディスカッションします
51.
気になった部分(1) コンストラクタで在庫決め打ちいいの? シングルトン フィールド名とか日本語(ローマ字)が気持ち悪い 注文メソッドが色々やりすぎ 過去の編集履歴 税率がハードコーディング Integerとintが混在 「なんでマイナス?」
52.
気になった部分(2) 全体1クラス スレッドセーフでない ジェネリクスが使われていない ロガーが使われていない 例外処理 JavaDocがあったりなかったり 値の検査がないのでマイナス在庫?
53.
レガシーコード改善
54.
ユニットテストを活用した改善 対象をテストで保護し(仕様化テスト)、 リファクタリングしていく レガシーコード仕様化テスト クラス クラス クラス クラス ユニットテスト
55.
http://www.flickr.com/photos/alisdair/2398525854/ やって られっか!?
56.
仕様化テストだけで大変 テストできない部分も多い コードが複雑でクラス化難しい そもそもバグが... 辛い、ただ辛い
57.
汚いコードは動かない 密結合 深いネスト 巨大なクラス 多すぎる引数 多すぎる責務
58.
綺麗なコードは変更に強い 疎結合 浅いネスト 小さなクラス 適度な引数 適度な責務
59.
http://www.flickr.com/photos/k1netik/50298297/ 設計麻痺に注意
60.
モデリング + テスト駆動開発
61.
モデリング
62.
モデリングとは? 要求(業務)をモデルに抽象化すること As-Is から To-Be
へ 大雑把に言えば「設計」 概要を掴むための荒いモデリング 詳細を詰めるための詳細なモデリング 特定の目的のためのモデリング
63.
ドメインモデリング 業務ドメインでの主要データ 静的モデル クラス図の基盤 Is-A Has-A * 1 xxx xxx xxx xxx xxx * 1 xxx * 1 * 1
64.
ドメインモデリングの目的 問題領域を把握するため 用語を統一するため ユースケースを作成する基盤とするため 静的な設計のスタート地点とするため
65.
汎化と集約 汎化(Is-A)と集約(Has-A)を使う 他の細かい関係は重要ではない(今は) 用語整理と問題領域の理解が目的 95%はカバーできる
66.
参考)システム境界 システムと外部との接点 どこからがシステムの機能・データなのか? ユーザーインターフェイス(画面) 外部インターフェイス ユーザ システム境界 システム 外部システム 機能 データ
67.
参考)入出力(なにを) 入力 ファイル、フォームデータ 出力 画面、帳票、ファイル システム境界 システム 入力 出力
68.
モデリングの例 ざっくりと単語(名詞)を抽出
69.
モデリングの例 属性などを追加していく
70.
Enjoy Testing!
71.
ハンズオンの進め方 ひとつのメソッドを選んでテストしてみよう テストケースを増やす? 別のメソッドをテストを書く? 仕様変更する? 上から下まで通すテストを書く? TAに相談してみよう!
Descargar ahora