Movatterモバイル変換


[0]ホーム

URL:


Shuji Watanabe, profile picture
Uploaded byShuji Watanabe
6,015 views

TDD BootCamp in JJUG CCC - レガシーコード対策編 -

JJUG CCC 2014 Soringで行ったユニットテストハンズオンでの資料です。

Embed presentation

Downloaded 46 times
TDD BootCampin JJUG CCC2014.05.17 JJUG CCC 2014 SpringShuji Watanabe (@shuji_w6e)1#ccc_r53 #jjug_ccchttps://github.com/shuji/legacy-hanbai-kanri
自己紹介
渡辺 修司 / @shuji_w6e札幌JavaコミュニティやさしいデスマーチJUnit実践入門Java, Groovy, JavaScript, AWS, TDDロードバイク, スノーボード, トレランNEW4刷!
累計1万部
最近のお仕事...昨年8月に転職株式会社クラスメソッド札幌にて在宅勤務AWS利用者向けシステムの開発主にフロントエンドや自動化などを担当Spring, Ember.js, d3-dataブログ業務
クラスメソッド札幌オフィス開設!AWSエンジニア / iOSエンジニアU/Iターン歓迎!7月初旬開設予定!アプリ屋から移籍可能
Special Thanks TA@i_takehiro@grimrose@sue445@setoazusa@torazuka@uasano@yujiorama
TDDBCへようこそ
http://devtesting.jp/tddbc/TDD Boot Camp(TDDBC) とは、テスト駆動開発(Test Driven Development)について、座学だけでなく、実習形式で手を動かして体得することを目的とするイベントです。
ショートバージョン2時間しかないのでダイジェストで!TDDとは?TDDは死んだ?レガシーコード体験レガシーコード改善モデリングユニットテストハンズオン
本家TDDBCとの違いショートバージョン(本家は1日)ペアプログラミングは行わないレビュー大会は行わないテストファーストに拘らないプロダクションコードは8分組みレガシーコードからTDDを体験する
テスト駆動開発とは?
テスト駆動開発とは?ソフトウェアの開発手法テスト駆動開発の1サイクルはじめにテストコードを書くテストが成功する必要最低限のコードを書くテスト成功を維持してリファクタリングする上記サイクルを素早くテンポ良く繰り返す1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
TDDのサイクル1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
TDD 品質保証テスト品質保証テストはソフトウェアを対象とし、品質担当者が高い品質を担保するために実施TDDは品質を担保するわけではない結果的に品質は高まるが主目的ではない開発者が安心して開発できるための開発手法TDDは設計やプログラム自体を対象とする
汚いコードは動かない密結合多重ネスト巨大なクラス多すぎる引数多すぎる責務
http://www.flickr.com/photos/peakman2/1017866785/レガシーコード!
レガシーコード生成のプロセス1. 最初の仕様でコードを書く2. 追加機能で増築する3. 仕様変更で改築する4. 似たような機能はコピペして作る5. これらのプロセスが秘伝のタレとなる
http://www.flickr.com/photos/jas_132/5403388208TDDで解決?
レガシーコードへの道設計
きれいな動くコードへの道動かない 動くきれい汚い
1.設計する動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
2.テストを書く動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
3.コードを書く動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
4.テストを成功させる動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
5.リファクタリング動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
1.設計する動かない 動くきれい汚い1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
TDDのポイントテストを意識した設計(テストファースト)テストによる安心リファクタリングイテレーティブな開発サイクル
TDDのこころ©和田卓人
小さく  個別に  すばやく
ひとつずつ、一歩ずつ小さなステップで大きなものは小さく分割確実に、堅実に手戻りを小さく
ひとりずつ、仕留めるテストは個別撃破する次のテストを作らない
すばやくまわす小さく回す早く回すすぐに対応リズム重要1.設計する2.テストを書く3.コードを書く4.テストを成功させる5.リファクタリングHeuristics
使う  作る  伝える
自分が最初のユーザー使いにくいものは使いにくい自分で評価する納得できるか?恥ずかしくないか?解りやすいか?
道具にこだわる最高のパフォーマンスを維持するプロとしてのこだわり少しでも使いやすく日々、研究・工夫
未来の自分が読むテストコードは保守される読みにくいコードは悪シンプルに名前重要型
どうして、  テスト駆動開発を  導入するのか?
http://www.flickr.com/photos/yopse/3772030400/不安スキル不足複雑な要件仕様変更経験不足
http://www.flickr.com/photos/32010000@N08/2987901256/安全を確保する
なぜ、TDDを実践するか?ソフトウェアは思った以上に複雑パーフェクトプログラマなんかいない不安だからユニットテストを書くセーフティネットとしてのユニットテストすばやく回し、すばやいフィードバック
TDDが目指すところ安心できる健康な開発変更に強い健康なコード
テスト駆動開発は死んだ?
http://www.flickr.com/photos/palermobootcamp/5464512672/TDD!TDD!テストファースト!
TDDは死んだ、無益だ!
http://www.flickr.com/photos/bsom/4625185702/貴様のプロジェクトでは、効果的なテストをしてるか?
TDDが無益とか有益とか語る前に...(ユニット)テスティングできてますか?テストファーストはテクニックのひとつTDDはユニットテストを学ぶ教科書常時TDDをやる必要もありませんTDDの考え方を学ぶ価値は大きくあります
Long live testinggoing with the practice of testing
where no testing had happened before
レガシーコード体験NO TESTING
レガシーコードを読んでみようよくない点を列挙してみようどうしてそうなったのかを想像してみよう5∼10分したらディスカッションします
気になった部分(1)コンストラクタで在庫決め打ちいいの?シングルトンフィールド名とか日本語(ローマ字)が気持ち悪い注文メソッドが色々やりすぎ過去の編集履歴税率がハードコーディングIntegerとintが混在「なんでマイナス?」
気になった部分(2)全体1クラススレッドセーフでないジェネリクスが使われていないロガーが使われていない例外処理JavaDocがあったりなかったり値の検査がないのでマイナス在庫?
レガシーコード改善
ユニットテストを活用した改善対象をテストで保護し(仕様化テスト)、リファクタリングしていくレガシーコード仕様化テストクラスクラスクラスクラスユニットテスト
http://www.flickr.com/photos/alisdair/2398525854/やって
られっか!?
仕様化テストだけで大変テストできない部分も多いコードが複雑でクラス化難しいそもそもバグが...辛い、ただ辛い
汚いコードは動かない密結合深いネスト巨大なクラス多すぎる引数多すぎる責務
綺麗なコードは変更に強い疎結合浅いネスト小さなクラス適度な引数適度な責務
http://www.flickr.com/photos/k1netik/50298297/設計麻痺に注意
モデリング
+テスト駆動開発
モデリング
モデリングとは?要求(業務)をモデルに抽象化することAs-Is から To-Be へ大雑把に言えば「設計」概要を掴むための荒いモデリング詳細を詰めるための詳細なモデリング特定の目的のためのモデリング
ドメインモデリング業務ドメインでの主要データ静的モデルクラス図の基盤Is-AHas-A *1xxxxxxxxxxxxxxx*1xxx*1*1
ドメインモデリングの目的問題領域を把握するため用語を統一するためユースケースを作成する基盤とするため静的な設計のスタート地点とするため
汎化と集約汎化(Is-A)と集約(Has-A)を使う他の細かい関係は重要ではない(今は)用語整理と問題領域の理解が目的95%はカバーできる
参考)システム境界システムと外部との接点どこからがシステムの機能・データなのか?ユーザーインターフェイス(画面)外部インターフェイスユーザシステム境界システム外部システム機能 データ
参考)入出力(なにを)入力ファイル、フォームデータ出力画面、帳票、ファイルシステム境界システム入力出力
モデリングの例ざっくりと単語(名詞)を抽出
モデリングの例属性などを追加していく
Enjoy Testing!
ハンズオンの進め方ひとつのメソッドを選んでテストしてみようテストケースを増やす?別のメソッドをテストを書く?仕様変更する?上から下まで通すテストを書く?TAに相談してみよう!

Recommended

PDF
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
PDF
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
PDF
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
PDF
インフラエンジニアってなんでしたっけ(仮)
PDF
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
PDF
最近のSpringFramework2013 #jjug #jsug #SpringFramework
PDF
我が家のフロントエンド開発事情
PDF
第八回 #渋谷Java 最近のjava PaaS事情
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
PPTX
JavaScript使いのためのTypeScript実践入門
PDF
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
PDF
OpenShift のある生活
PDF
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
PPTX
Spring starterによるSpring Boot Starter
PDF
iPhoneアプリを Javaで書くよ?
PDF
中の下のエンジニアを脱出するための仕事術
PDF
angular1脳で見るangular2
PDF
2015/11/15 Javaでwebアプリケーション入門
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PDF
Spring Bootキャンプ @関ジャバ #kanjava_sbc
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PPTX
React meetup 3_eight
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
PDF
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
PDF
Rubyのススメ
PDF
2013 08-19 jjug
 
PDF
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
PDF
テスト駆動開発へようこそ

More Related Content

PDF
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
PDF
サーバサイドエンジニアが 1年間まじめにSPAやってみた
PDF
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
PDF
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
PDF
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
PDF
インフラエンジニアってなんでしたっけ(仮)
PDF
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
PDF
最近のSpringFramework2013 #jjug #jsug #SpringFramework
Spring Boot + Doma + AngularJSで作るERP 〜JavaQneバージョン〜 #jqfk
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Java開発で活かしてほしいGit,CI,そして継続的デリバリー #jjug_ccc #ccc_r13
JavaFXとRoboVMを使ってiOS上で動くアプリを試してみた
SeleniumIDEとSelenium WebDriver × Node.js Seleniumで業務効率化する15分
インフラエンジニアってなんでしたっけ(仮)
Spring Boot + Doma + AngularJSで作るERP (LINE Fukuoka Meetup版)
最近のSpringFramework2013 #jjug #jsug #SpringFramework

What's hot

PDF
我が家のフロントエンド開発事情
PDF
第八回 #渋谷Java 最近のjava PaaS事情
PDF
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
PPTX
JavaScript使いのためのTypeScript実践入門
PDF
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
PDF
OpenShift のある生活
PDF
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
PPTX
Spring starterによるSpring Boot Starter
PDF
iPhoneアプリを Javaで書くよ?
PDF
中の下のエンジニアを脱出するための仕事術
PDF
angular1脳で見るangular2
PDF
2015/11/15 Javaでwebアプリケーション入門
PDF
インフラエンジニアの綺麗で優しい手順書の書き方
PDF
Spring Bootキャンプ @関ジャバ #kanjava_sbc
PDF
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
PPTX
React meetup 3_eight
PDF
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
PDF
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
PDF
Rubyのススメ
PDF
2013 08-19 jjug
 
我が家のフロントエンド開発事情
第八回 #渋谷Java 最近のjava PaaS事情
Spring Frameworkの今 (2013年版) #jjug_ccc #ccc_r17 #springframework
JavaScript使いのためのTypeScript実践入門
第六回 #渋谷java Javaを書き始めて 1年半が経って思うこと
OpenShift のある生活
アプリエンジニアからクラウド専用のインフラエンジニアになってみて
Spring starterによるSpring Boot Starter
iPhoneアプリを Javaで書くよ?
中の下のエンジニアを脱出するための仕事術
angular1脳で見るangular2
2015/11/15 Javaでwebアプリケーション入門
インフラエンジニアの綺麗で優しい手順書の書き方
Spring Bootキャンプ @関ジャバ #kanjava_sbc
2015年GMOペパボ新卒エンジニア研修 Webオペレーション研修イントロダクション
React meetup 3_eight
[Japanese] Skinny Framework で始める Scala #jjug_ccc #ccc_r24
20160402 JAWS-UG大分 AWS初心者向け勉強会@おおいた2016春
Rubyのススメ
2013 08-19 jjug
 

Similar to TDD BootCamp in JJUG CCC - レガシーコード対策編 -

PDF
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
PDF
テスト駆動開発へようこそ
PDF
java-ja TDD 2nd
PDF
C# から java へのプログラム移植で体験したtddの効果は?
PDF
『JUnit実践入門』写経・実践会 in 横浜 #2
PDF
Hey It's Not My TDD!
PDF
Tddのすゝめ
PDF
TDDワークショップ(第2回)
PDF
SeasarCon 2009 White TDD
PPTX
TDDをやってみた
PDF
CodeZineAcademy TDD実践講座PR資料
PPT
Sue445 Style TDD #atest_hack
PDF
nseg第5回勉強会
 
PPT
wankuma #28
PDF
2014/3/30 ミニTDDBC presented by yokhama.devtesting
PDF
#tdd4ec is back!!〜テスト駆動開発による 組み込みプログラミングの集い〜
KEY
TDD #NagoyaTesting
PDF
Agileツール適合化分科会(tddとbdd)
PPT
10分で分かるTDD
 
PDF
TDDについて
Javaアプリケーション開発におけるユニットテストとTDDの実践 Java Day Tokyo 2014
テスト駆動開発へようこそ
java-ja TDD 2nd
C# から java へのプログラム移植で体験したtddの効果は?
『JUnit実践入門』写経・実践会 in 横浜 #2
Hey It's Not My TDD!
Tddのすゝめ
TDDワークショップ(第2回)
SeasarCon 2009 White TDD
TDDをやってみた
CodeZineAcademy TDD実践講座PR資料
Sue445 Style TDD #atest_hack
nseg第5回勉強会
 
wankuma #28
2014/3/30 ミニTDDBC presented by yokhama.devtesting
#tdd4ec is back!!〜テスト駆動開発による 組み込みプログラミングの集い〜
TDD #NagoyaTesting
Agileツール適合化分科会(tddとbdd)
10分で分かるTDD
 
TDDについて

More from Shuji Watanabe

PDF
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
PDF
CloudSearchによる全文検索 - CM:道 2014/08/01
PDF
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
KEY
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
KEY
テスト駆動開発入門
PDF
テスト駆動開発のはじめ方
KEY
テストコードのリファクタリング
PPTX
AWSによるWebサイト構築と運用 - concrete5 編 -
PPTX
ELBの概要と勘所
PDF
ユースケースからテスト駆動開発へ
PDF
Ansible ハンズオン on AWS - DevelopersIO 2017
PDF
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
PDF
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
KEY
テスト駆動開発の導入ーペアプログラミングの学習効果ー
PDF
Serverless - Developers.IO 2019
KEY
Jenkins導入事例
KEY
アジャイルテスティング
PDF
SSMでマネージドEC2 #reinvent #cmdevio
PDF
TDDをはじめよう
PDF
テストリストの見つけ方
s3+cloud frontによる静的コンテンツ配信 - Sphinx編 #cmdevio
CloudSearchによる全文検索 - CM:道 2014/08/01
Cloud FormationによるBlue-Green Deployment - Dev io mtup11 003
JUnit実践入門 xUnitTestPatternsで学ぶユニットテスト
テスト駆動開発入門
テスト駆動開発のはじめ方
テストコードのリファクタリング
AWSによるWebサイト構築と運用 - concrete5 編 -
ELBの概要と勘所
ユースケースからテスト駆動開発へ
Ansible ハンズオン on AWS - DevelopersIO 2017
クラスメソッド会社説明会in札幌 — メンバー紹介 #cmdevio
プロビジョニングの今 ーフルマネージド・サービスを目指してー #cmdevio2016 #E
テスト駆動開発の導入ーペアプログラミングの学習効果ー
Serverless - Developers.IO 2019
Jenkins導入事例
アジャイルテスティング
SSMでマネージドEC2 #reinvent #cmdevio
TDDをはじめよう
テストリストの見つけ方

TDD BootCamp in JJUG CCC - レガシーコード対策編 -


[8]ページ先頭

©2009-2025 Movatter.jp