SlideShare a Scribd company logo
Lightning Talk

10分で分かる TDD
TDD とは?
・   Test-Driven Development( テスト駆動開発 )
・ プログラミング手法
・ 基本サイクル
   ① RED
     - 失敗するテストを書く
   ② GREEN
     - テストを成功させる最低限のソースを書く
   ③ REFACTOR
     - コードをリファクタリングしてきれいにする
   ※①~③を短いスパンで繰り返す
基本サイクル概要




● テストファーストによる追加・変更
  - RED→GREEN の繰り返しによりプログラミングを進め
  る

● リファクタリングによる設計改善
  - テストファーストでプログラミングを進めた結果、
  ソースコードが粗雑になったらリファクタリング!
  リファクタリング後の回帰テストも実施・・
実際にやってみよう!
実装環境
プラットフォーム: NetBeans
テスト支援フレームワーク: JUnit
うるう年判定関数
● 簡単な仕様設計

 うるう年の判定条件は?

 条件①: 4 で割り切れる年はうるう年と判定
 条件②:ただし、 100 で割り切れる年はうるう年でないと判定
 条件③:ただし、 400 で割り切れる年はうるう年と判定




            テストリスト
テスト主導型開発のメリットは?
・ すばやいフィードバックの確保
・ 要求の理解の促進
・ リファクタリングの支援、クリーンコードの促進
・ 自動テストによるデグレート検知




   プログラマが持つ不安の解消!
     心の健康をもたらす!
参考文献
・テスト駆動開発の基礎
   - http://appkitbox.com/knowledge/test/2013/01/15/tdd_basic
・ JS 開発における TDD と自動テストツール利用の勘
  所
   - http://www.slideshare.net/KojiNakamura/jstdd

More Related Content

Viewers also liked

Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...
Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...
Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...Morgan Davis
 
Electricidad siiiiiiiiii
Electricidad siiiiiiiiiiElectricidad siiiiiiiiii
Electricidad siiiiiiiiiibedwell222
 
Cartel publicidad ciclo 2015
Cartel publicidad ciclo 2015Cartel publicidad ciclo 2015
Cartel publicidad ciclo 2015
marlucasfe
 
evolución de seguridad
evolución de seguridadevolución de seguridad
evolución de seguridad
Jaime Cruz
 
Tạo lịch hẹn trong khách hàng
Tạo lịch hẹn trong khách hàngTạo lịch hẹn trong khách hàng
Tạo lịch hẹn trong khách hàng
Getfly CRM
 
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM #12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
Getfly CRM
 
Tema 5 música iberoamericana
Tema 5 música iberoamericanaTema 5 música iberoamericana
Tema 5 música iberoamericana
jopape72
 
NAVITAS - cata jan 2016
NAVITAS - cata jan 2016NAVITAS - cata jan 2016
NAVITAS - cata jan 2016Khaled Nukho
 
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
Hakka Labs
 
History of media laws in Sub continent and Pakistan
History of media laws in Sub continent and PakistanHistory of media laws in Sub continent and Pakistan
History of media laws in Sub continent and Pakistan
Adan Butt
 
Computer Literacy Lesson 27
Computer Literacy Lesson 27Computer Literacy Lesson 27
Computer Literacy Lesson 27
cpashke
 

Viewers also liked (13)

Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...
Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...
Arizona General Education Curriculum (AGEC-A) with Distinction_Morgan Deann D...
 
Electricidad siiiiiiiiii
Electricidad siiiiiiiiiiElectricidad siiiiiiiiii
Electricidad siiiiiiiiii
 
Cumple coso!
Cumple coso!Cumple coso!
Cumple coso!
 
السيرة الذاتية
السيرة الذاتيةالسيرة الذاتية
السيرة الذاتية
 
Cartel publicidad ciclo 2015
Cartel publicidad ciclo 2015Cartel publicidad ciclo 2015
Cartel publicidad ciclo 2015
 
evolución de seguridad
evolución de seguridadevolución de seguridad
evolución de seguridad
 
Tạo lịch hẹn trong khách hàng
Tạo lịch hẹn trong khách hàngTạo lịch hẹn trong khách hàng
Tạo lịch hẹn trong khách hàng
 
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM #12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
#12 Chiến dịch kinh doanh - Hướng dẫn sử dụng phần mềm GetFly CRM
 
Tema 5 música iberoamericana
Tema 5 música iberoamericanaTema 5 música iberoamericana
Tema 5 música iberoamericana
 
NAVITAS - cata jan 2016
NAVITAS - cata jan 2016NAVITAS - cata jan 2016
NAVITAS - cata jan 2016
 
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
DataEngConf: Uri Laserson (Data Scientist, Cloudera) Scaling up Genomics with...
 
History of media laws in Sub continent and Pakistan
History of media laws in Sub continent and PakistanHistory of media laws in Sub continent and Pakistan
History of media laws in Sub continent and Pakistan
 
Computer Literacy Lesson 27
Computer Literacy Lesson 27Computer Literacy Lesson 27
Computer Literacy Lesson 27
 

Similar to 10分で分かるTDD

nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会ko ty
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
Masashi Shibata
 
TDDの自殺 #TDDeX
TDDの自殺 #TDDeXTDDの自殺 #TDDeX
TDDの自殺 #TDDeX
kyon mm
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
Go Sueyoshi (a.k.a sue445)
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
Yuuki Takezawa
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
Yasui Tsutomu
 
Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
Yasui Tsutomu
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめ
Kyota Yasuda
 
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUpUnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
kyon mm
 
Coderetreat
CoderetreatCoderetreat
Coderetreat
YAMANE Toshiaki
 
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
seichi23
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~Tomomi Kajita
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
 
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメpytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
iRidge, Inc.
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発lnial
 
DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①
iPride Co., Ltd.
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
Toshiyuki Hirata
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
Takayoshi Tanaka
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...tkawashita
 

Similar to 10分で分かるTDD (20)

nseg第5回勉強会
nseg第5回勉強会nseg第5回勉強会
nseg第5回勉強会
 
テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2テスト駆動開発入門 - C4K Meetup#2
テスト駆動開発入門 - C4K Meetup#2
 
TDDの自殺 #TDDeX
TDDの自殺 #TDDeXTDDの自殺 #TDDeX
TDDの自殺 #TDDeX
 
Sue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hackSue445 Style TDD #atest_hack
Sue445 Style TDD #atest_hack
 
phpspecで始めるBDD
phpspecで始めるBDDphpspecで始めるBDD
phpspecで始めるBDD
 
CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料CodeZineAcademy TDD実践講座PR資料
CodeZineAcademy TDD実践講座PR資料
 
Hey It's Not My TDD!
Hey It's Not My TDD!Hey It's Not My TDD!
Hey It's Not My TDD!
 
TDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめTDD、ペアプログラミングのすすめ
TDD、ペアプログラミングのすすめ
 
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUpUnitTestは最もTDDしやすいか否か? #TDDMeetUp
UnitTestは最もTDDしやすいか否か? #TDDMeetUp
 
Coderetreat
CoderetreatCoderetreat
Coderetreat
 
TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)TDDってなんなの?(What is TDD)
TDDってなんなの?(What is TDD)
 
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
TDDを一年やってみました ~シロート集団がTDDをやってはまったこと~
 
Test Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるかTest Yourself - テストを書くと何がどう変わるか
Test Yourself - テストを書くと何がどう変わるか
 
pytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメpytest × TDD テスト駆動開発のススメ
pytest × TDD テスト駆動開発のススメ
 
少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発少し分かった気になるテスト駆動開発
少し分かった気になるテスト駆動開発
 
DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①DrupalでBDDテストを実施してみる①
DrupalでBDDテストを実施してみる①
 
Tdd
TddTdd
Tdd
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
20201127 .NET 5
20201127 .NET 520201127 .NET 5
20201127 .NET 5
 
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
20140115 potato tips No.3 Android App Test Development Driven and Jenkins CI ...
 

10分で分かるTDD

Editor's Notes

  1. プログラミング手法=正しく動くソフトウェアを確実に作り上げるためのテクニック リファクタリング=テストのパスを保持したままコードの重複を除去する 【余談】 なぜ RED 、 GREEN ? JUnit など TDD で多用されるテスティングフレームワークの多くがテスト失敗を赤色表示で、テスト成功を緑色表示で通知することに由来しています。
  2. リファクタリングを行ったら、テストの結果が変化していないことをチェックすることで、意図しないバグや副作用が混入していないことを確認
  3. 【 JUnit 】 NetBeans には標準で JUnit が入っている
  4. テストリスト 【 JUnit 】 NetBeans には標準で JUnit が入っている [ 新規プロジェクト – Java – Java アプリケーション ] で CheckLeapYear クラスを作成 [ プロジェクト上で右クリック – 新規 – その他 – 単体テスト – 既存クラスのテスト ] でテストクラスを自動生成 assertEquals⇒ 引数①と引数②が等しいかを検証する @test⇒ メソッドがテストメソッドであることを明記する。 Test アノテーションがついたメソッドが実行される テスト駆動開発では、コードに手を付ける前にしばしば開発対象の仕様をテストリストとして整理するらしい