SlideShare a Scribd company logo
1 of 19
Download to read offline
Test Driven Development
왜 배우기 어려운가?
ojh420@gmail.com
우리가 하는 일을 정의해 보자?
우리가 하는 일은 무엇인가?
우리가 하는 일은?
Implementation is the act of Coding?
Implementation is not the act of Coding?
http://c2.com/cgi/wiki?WhatIsSoftwareDesign
What is Software Design?
The final goal of any engineering activity is to create some kind of
documentation. When a design effort is complete, the design documentation
is given to the manufacturing team. This is a different set of people with a
different set of skills from those of the design team. If the design documents
truly represent a complete design, the manufacturing team can proceed
to build the product. In fact, they can proceed to build much of the product
without further assistance from the designers.
( Jack W. Reeves, The C++ Journal Vol.2, No.2, 1992 )
Design Documentation
http://wonju.kopo.ac.kr/bbs/board.php?bo_table=m31_05&wr_id=2
What is Software Design?
After reviewing the software development life cycle today, it appears that the
only software documentation that actually seems to satisfy the criteria of
an engineering design are the source code listings.
( Jack W. Reeves, The C++ Journal Vol.2, No.2, 1992 )
우리가 하는 일은?
When you are programming, you are doing detailed
design. The manufacturing team for software is your
compiler or interpreter.
The source code is the only complete specification of
what the software will do.
http://c2.com/cgi/wiki?WhatIsSoftwareDesign
Source Code is Design Documentation
1. Software runs on computers. It is a sequence of ones and zeros. Software is not a program
listing.
2. A program listing is a document that represents a software design. Compilers, linkers, and
interpreters actually build (manufacture) software.
3. Software is very cheap to build. You just press a button.
4. Software is expensive to design because it is complicated and all phases of the
development cycle are part of the design process.
5. Programming is a design activity; a good software design process recognizes this and does
not hesitate to code when coding makes sense.
6. Coding actually makes sense more often than believed. Often the process of rendering the
design in code will reveal oversights and the need for more design effort. The earlier this
happens, the better.
7. Testing and debugging are design activities - they are the equivalents of design validation
and refinement in other engineering disciplines. They can not be short changed.
8. Formal validation methods are not of much use because it is cheaper to build software
and test it than to prove it.
( Michael Feathers )
우리가 하는 일은?
Design
Coding vs Design
우리가 코딩을 하고 있다고 생각한다면,
우리는 코딩을 하기 위해 생각할 것이고,
코딩을 위한 지식과 스킬을 쌓을 것이다.
우리가 설계를 하고 있다고 생각한다면,
우리는 설계를 하기 위해 생각할 것이고,
설계를 위한 지식과 스킬을 쌓을 것이다.
TDD 사이클
http://www.natpryce.com/articles/000780.html
TDD 의 세가지 규칙
1. You are not allowed to write any production code unless it is to make a
failing unit test pass.
2. You are not allowed to write any more of a unit test than is sufficient to
fail; and compilation failures are failures.
3. You are not allowed to write any more production code than is sufficient to
pass the one failing unit test.
Robert C. Martin
TDD 는 왜 배우기 어려운가?
TDD 규칙은 간단하다.
그런데 배우기가 어렵다.
실천하기는 더 어렵다.
TDD 는 왜 배우기 어려운가?
TDD 는 설계 방법이다.
TDD 를 잘 하려면, 설계를 생각해야 하고
설계를 생각하려면,
설계 전문용어를 알아야 한다.
설계와 관련된 용어들
알고 있는 설계 관련 용어들을 적어보자.
언제 설계를 하나요?
Design Feedback from TDD
TDD at the unit scale guides the design of the code to make the system easier to
modify, because it is easier to test code that is organised into loosely coupled, cohesive
units that have clear responsibilities.
My hunch is that TDD at the system scale works in a similar way, guiding the design
of the architecture to make the system easier to manage, because it requires the
system have machine-readable interfaces through which tools can observe and control
its activity.
( Growing Object Oriented Software guided by Tests, Steeve Freeman & Nat Pryce)
여전히 TDD 는 배우기가 어렵다.
왜?
이상한 자전거 타기
https://www.youtube.com/watch?v=MFzDaBzBlL0

More Related Content

What's hot

Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
toteb5
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projects
Agile Spain
 

What's hot (20)

A journey to_be_a_software_craftsman
A journey to_be_a_software_craftsmanA journey to_be_a_software_craftsman
A journey to_be_a_software_craftsman
 
Tdd com Java
Tdd com JavaTdd com Java
Tdd com Java
 
Agile Programming Systems # TDD intro
Agile Programming Systems # TDD introAgile Programming Systems # TDD intro
Agile Programming Systems # TDD intro
 
Tdd
TddTdd
Tdd
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
Scrum and Test-driven development
Scrum and Test-driven developmentScrum and Test-driven development
Scrum and Test-driven development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010Test Driven Development (TDD) Preso 360|Flex 2010
Test Driven Development (TDD) Preso 360|Flex 2010
 
TDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & WhereTDD vs. ATDD - What, Why, Which, When & Where
TDD vs. ATDD - What, Why, Which, When & Where
 
Learning Code Review & Commit Message with Google
Learning Code Review & Commit Message with GoogleLearning Code Review & Commit Message with Google
Learning Code Review & Commit Message with Google
 
The WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpecThe WHY behind TDD/BDD and the HOW with RSpec
The WHY behind TDD/BDD and the HOW with RSpec
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Test Driven Development
Test Driven DevelopmentTest Driven Development
Test Driven Development
 
Scrum is not enough - being a successful agile engineer
Scrum is not enough - being a successful agile engineerScrum is not enough - being a successful agile engineer
Scrum is not enough - being a successful agile engineer
 
TDD = bra design?
TDD = bra design?TDD = bra design?
TDD = bra design?
 
Test Driven Development (TDD)
Test Driven Development (TDD)Test Driven Development (TDD)
Test Driven Development (TDD)
 
Cas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projectsCas2010 is-there-space-for-testers-in-agile-projects
Cas2010 is-there-space-for-testers-in-agile-projects
 

Viewers also liked

테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
Bingu Shim
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
bbongcsu
 
Clean code
Clean codeClean code
Clean code
bbongcsu
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg ws
bbongcsu
 

Viewers also liked (14)

IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
Refactoring tutorial
Refactoring tutorialRefactoring tutorial
Refactoring tutorial
 
Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]Refactoring tutorial 1주차[refactoring 개요]
Refactoring tutorial 1주차[refactoring 개요]
 
The roadtocodecraft
The roadtocodecraftThe roadtocodecraft
The roadtocodecraft
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 
애자일 마인드셋
애자일 마인드셋애자일 마인드셋
애자일 마인드셋
 
Clean code
Clean codeClean code
Clean code
 
Bnf seeg
Bnf seegBnf seeg
Bnf seeg
 
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
애자일 개발 프로세스를 이용한 고품질 소프트웨어 개발
 
Bnf seeg ws
Bnf seeg wsBnf seeg ws
Bnf seeg ws
 
인수테스트 주도 개발
인수테스트 주도 개발인수테스트 주도 개발
인수테스트 주도 개발
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 

Similar to Tdd 왜 배우기 어려운가

Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
Svetlin Nakov
 

Similar to Tdd 왜 배우기 어려운가 (20)

BDD presentation
BDD presentationBDD presentation
BDD presentation
 
Being Test-Driven: It's not really about testing
Being Test-Driven: It's not really about testingBeing Test-Driven: It's not really about testing
Being Test-Driven: It's not really about testing
 
Topic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolutionTopic tdd-and-bdd b4usolution
Topic tdd-and-bdd b4usolution
 
Test driven development and react js application go hand in hand
Test driven development and react js application go hand in handTest driven development and react js application go hand in hand
Test driven development and react js application go hand in hand
 
xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012xUnit and TDD: Why and How in Enterprise Software, August 2012
xUnit and TDD: Why and How in Enterprise Software, August 2012
 
A Study: The Analysis of Test Driven Development And Design Driven Test
A Study: The Analysis of Test Driven Development And Design Driven TestA Study: The Analysis of Test Driven Development And Design Driven Test
A Study: The Analysis of Test Driven Development And Design Driven Test
 
Introducing Continuous Integration Using Vsts
Introducing Continuous Integration Using VstsIntroducing Continuous Integration Using Vsts
Introducing Continuous Integration Using Vsts
 
To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...To document or not to document? An exploratory study on developers' motivatio...
To document or not to document? An exploratory study on developers' motivatio...
 
Test driven development in meteor
Test driven development in meteorTest driven development in meteor
Test driven development in meteor
 
Test-Driven Development
Test-Driven DevelopmentTest-Driven Development
Test-Driven Development
 
Agile Methodologies And Extreme Programming
Agile Methodologies And Extreme ProgrammingAgile Methodologies And Extreme Programming
Agile Methodologies And Extreme Programming
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven Development
 
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
Joe Cisar - Everything I Know About TDD - Agile Midwest 2019
 
Agile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin NakovAgile Methodologies And Extreme Programming - Svetlin Nakov
Agile Methodologies And Extreme Programming - Svetlin Nakov
 
Test Driven Development - Overview and Adoption
Test Driven Development - Overview and AdoptionTest Driven Development - Overview and Adoption
Test Driven Development - Overview and Adoption
 
TDD - Agile
TDD - Agile TDD - Agile
TDD - Agile
 
Understanding Why Testing is Importaint
Understanding Why Testing is ImportaintUnderstanding Why Testing is Importaint
Understanding Why Testing is Importaint
 
The Essentials Of Test Driven Development
The Essentials Of Test Driven Development The Essentials Of Test Driven Development
The Essentials Of Test Driven Development
 
TDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - OpensouthcodeTDD - Seriously, try it! - Opensouthcode
TDD - Seriously, try it! - Opensouthcode
 
Devops interview-questions-PDF
Devops interview-questions-PDFDevops interview-questions-PDF
Devops interview-questions-PDF
 

Recently uploaded

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
masabamasaba
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
masabamasaba
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
masabamasaba
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
chiefasafspells
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
VictoriaMetrics
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
masabamasaba
 

Recently uploaded (20)

%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
%+27788225528 love spells in Toronto Psychic Readings, Attraction spells,Brin...
 
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With SimplicityWSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
WSO2Con2024 - Enabling Transactional System's Exponential Growth With Simplicity
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
%+27788225528 love spells in Boston Psychic Readings, Attraction spells,Bring...
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
tonesoftg
tonesoftgtonesoftg
tonesoftg
 
WSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security ProgramWSO2CON 2024 - How to Run a Security Program
WSO2CON 2024 - How to Run a Security Program
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
%+27788225528 love spells in new york Psychic Readings, Attraction spells,Bri...
 
WSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - KeynoteWSO2Con204 - Hard Rock Presentation - Keynote
WSO2Con204 - Hard Rock Presentation - Keynote
 
What Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the SituationWhat Goes Wrong with Language Definitions and How to Improve the Situation
What Goes Wrong with Language Definitions and How to Improve the Situation
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
Large-scale Logging Made Easy: Meetup at Deutsche Bank 2024
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
%+27788225528 love spells in Colorado Springs Psychic Readings, Attraction sp...
 
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
%in kaalfontein+277-882-255-28 abortion pills for sale in kaalfontein
 

Tdd 왜 배우기 어려운가

  • 1. Test Driven Development 왜 배우기 어려운가? ojh420@gmail.com
  • 2. 우리가 하는 일을 정의해 보자? 우리가 하는 일은 무엇인가?
  • 3. 우리가 하는 일은? Implementation is the act of Coding? Implementation is not the act of Coding? http://c2.com/cgi/wiki?WhatIsSoftwareDesign
  • 4. What is Software Design? The final goal of any engineering activity is to create some kind of documentation. When a design effort is complete, the design documentation is given to the manufacturing team. This is a different set of people with a different set of skills from those of the design team. If the design documents truly represent a complete design, the manufacturing team can proceed to build the product. In fact, they can proceed to build much of the product without further assistance from the designers. ( Jack W. Reeves, The C++ Journal Vol.2, No.2, 1992 )
  • 6. What is Software Design? After reviewing the software development life cycle today, it appears that the only software documentation that actually seems to satisfy the criteria of an engineering design are the source code listings. ( Jack W. Reeves, The C++ Journal Vol.2, No.2, 1992 )
  • 7. 우리가 하는 일은? When you are programming, you are doing detailed design. The manufacturing team for software is your compiler or interpreter. The source code is the only complete specification of what the software will do. http://c2.com/cgi/wiki?WhatIsSoftwareDesign
  • 8. Source Code is Design Documentation 1. Software runs on computers. It is a sequence of ones and zeros. Software is not a program listing. 2. A program listing is a document that represents a software design. Compilers, linkers, and interpreters actually build (manufacture) software. 3. Software is very cheap to build. You just press a button. 4. Software is expensive to design because it is complicated and all phases of the development cycle are part of the design process. 5. Programming is a design activity; a good software design process recognizes this and does not hesitate to code when coding makes sense. 6. Coding actually makes sense more often than believed. Often the process of rendering the design in code will reveal oversights and the need for more design effort. The earlier this happens, the better. 7. Testing and debugging are design activities - they are the equivalents of design validation and refinement in other engineering disciplines. They can not be short changed. 8. Formal validation methods are not of much use because it is cheaper to build software and test it than to prove it. ( Michael Feathers )
  • 10. Coding vs Design 우리가 코딩을 하고 있다고 생각한다면, 우리는 코딩을 하기 위해 생각할 것이고, 코딩을 위한 지식과 스킬을 쌓을 것이다. 우리가 설계를 하고 있다고 생각한다면, 우리는 설계를 하기 위해 생각할 것이고, 설계를 위한 지식과 스킬을 쌓을 것이다.
  • 12. TDD 의 세가지 규칙 1. You are not allowed to write any production code unless it is to make a failing unit test pass. 2. You are not allowed to write any more of a unit test than is sufficient to fail; and compilation failures are failures. 3. You are not allowed to write any more production code than is sufficient to pass the one failing unit test. Robert C. Martin
  • 13. TDD 는 왜 배우기 어려운가? TDD 규칙은 간단하다. 그런데 배우기가 어렵다. 실천하기는 더 어렵다.
  • 14. TDD 는 왜 배우기 어려운가? TDD 는 설계 방법이다. TDD 를 잘 하려면, 설계를 생각해야 하고 설계를 생각하려면, 설계 전문용어를 알아야 한다.
  • 15. 설계와 관련된 용어들 알고 있는 설계 관련 용어들을 적어보자.
  • 17. Design Feedback from TDD TDD at the unit scale guides the design of the code to make the system easier to modify, because it is easier to test code that is organised into loosely coupled, cohesive units that have clear responsibilities. My hunch is that TDD at the system scale works in a similar way, guiding the design of the architecture to make the system easier to manage, because it requires the system have machine-readable interfaces through which tools can observe and control its activity. ( Growing Object Oriented Software guided by Tests, Steeve Freeman & Nat Pryce)
  • 18. 여전히 TDD 는 배우기가 어렵다. 왜?