SlideShare a Scribd company logo
1 of 13
Download to read offline
TDD / BDD
송헌용
TDD와 BDD는 어떻게 다른가?
• TDD가 먼저 나왔다.
• BDD는 TDD의 개념을 승계해서 탄생했다.
TDD는 왜 탄생했나?
• 테스트 코드 없이 그냥 개발하던 시절이 있었다.
• Kent Beck이라는 사람이 테스트로 검증된 코드로 실제 코드를 작성하자고 업계
에서 주장
• 이 사람 주도 하에 TDD가 발전
개발 전에 테스트 코드를
먼저 쓰자는 TDD??
• 꼭 그렇진 않다.
• 문제를 정의하고 해답을 찾아가는 과정이라는 게 TDD의 기본 취지
• 개발자가 뭘 개발 해야되는지를 확실히 알고 개발하자는 게 TDD의 취지
• 테스트 코드는 그 철학을 이행하는 도구일 뿐
TDD는 테스트 코드를 어떻게?
• 유닛을 위한 테스트 셋을 정의
• 개발 코드로 유닛을 구현
• 마지막으로 유닛에 대한 구현이 테스트를 통과 하는지 검증
TDD의 기본 인터페이스
• 유닛을 위한 테스트 셋을 정의
• 개발 코드로 유닛을 구현
• 유닛에 대한 구현이 테스트를 통과 하는지 검
증
테스트 코드를 먼저 짜고,
그 다음에 개발 코드를 짜는 건 맞지 않는가?
• 맞음
• Red - Green - Refactor 방식으로 진행
• 하지만 테스트 코드로 개발을 먼저 시작하자는 게 TDD의 기본 철학은 아님
근데 왜 BDD가 나오게 되었나?
• TDD 개념으로 다른 개발자들에게 코치를 하던 Dan north라는 사람
• 어느날 TDD에서의 빈틈을 느끼기 시작
• 프로세스의 어디서 부터 시작해야 하는가
• 무엇을 테스트하고 또 무엇을 하지 말아야 하는가
• 한번에 얼마만큼 테스트해야 하는가
• 테스트를 어떻게 명명해야 하는가
• 테스트가 실패 하는 지에 대해 어떻게 이해해야 하는가
TDD의 한계를 느꼈다는 말인 것 같은데,
그럼 그 빈틈을 어떻게 해결하고자 했는가?
• 특정 값이 주어지고 (Given)
• 어떤 이벤트가 발생했을 때 (When)
• 그에 대한 결과를 보장해야한다 (Then)
• 위의 형식을 만들어서 테스트 코드를 짜기 시작
그 형식을 쓰는 것만으로도
BDD라고 볼 수 있는 건가?
• Dan north는 애초에 Test라는 단어를 쓰지 않는 게 TDD의 원리를 더 파악하기
쉽다고 생각
• Test라는 단어보다는 Behavior 이라는 표현을 쓰는 게 더 낫다고 판단
기존의 TDD 인터페이스에는 suit - test
형식이 있었는데 그럼 바뀐다는 말인가?
• test라는 단어를 없앰
• describe - it - should라는 패턴으로 변경
test라는 단어만 없고 결국 TDD
인터페이스랑 비슷한 것 같은데?
• 맞다. 둘다 별 차이가 없다.
• BDD는 기술 언어가 아닌 자연어에 가깝게 테스트 스펙을 기술한다는 것이 포인
트
• TDD와 BDD 중 뭐가 낫고 별로냐는 논쟁은 소모적인 논쟁
결국 TDD와 BDD는 테스트 코
드 인터페이스만 다를 거 아닌가?
• 맞다.
• 둘 다 Red - Green - Refactor 흐름으로 진행
• given - when - then 패턴으로 테스트 코드가 작성된다고 보면 됨

More Related Content

What's hot

TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기Ji Heon Kim
 
코드의 품질 (Code Quality)
코드의 품질 (Code Quality)코드의 품질 (Code Quality)
코드의 품질 (Code Quality)ChulHui Lee
 
2016 C++스터디 1주차
2016 C++스터디 1주차2016 C++스터디 1주차
2016 C++스터디 1주차Seungwee  Choi
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
왜 Swift를 해야할까요?
왜 Swift를 해야할까요?왜 Swift를 해야할까요?
왜 Swift를 해야할까요?선협 이
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개Young-Ho Cha
 
Test driven development
Test driven developmentTest driven development
Test driven developmentJinho Song
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1ukjinkwoun
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)영주 박
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9ukjinkwoun
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자Taeyeop Kim
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Sangcheol Hwang
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료Vong Sik Kong
 

What's hot (17)

TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기
 
TDD
TDDTDD
TDD
 
코드의 품질 (Code Quality)
코드의 품질 (Code Quality)코드의 품질 (Code Quality)
코드의 품질 (Code Quality)
 
2016 C++스터디 1주차
2016 C++스터디 1주차2016 C++스터디 1주차
2016 C++스터디 1주차
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
왜 Swift를 해야할까요?
왜 Swift를 해야할까요?왜 Swift를 해야할까요?
왜 Swift를 해야할까요?
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개
 
Test driven development
Test driven developmentTest driven development
Test driven development
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
Clean code chapter1
Clean code chapter1Clean code chapter1
Clean code chapter1
 
테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
 
Clean code chapter9
Clean code chapter9Clean code chapter9
Clean code chapter9
 
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료
 

Similar to Tdd bdd

[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기Ahreum Kim
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기현승 배
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드Mijeong Park
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with SpockSukjin Yun
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018devCAT Studio, NEXON
 
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDDCONNECT FOUNDATION
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601Suho Kwon
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰Myeongseok Baek
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어CONNECT FOUNDATION
 
[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선Jong Pil Won
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할Hoyoung Choi
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드NAVER Engineering
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestDoyKim
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원NAVER D2
 

Similar to Tdd bdd (20)

TDD
TDDTDD
TDD
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
BDD with Spock
BDD with SpockBDD with Spock
BDD with Spock
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
 
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
 
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
 
SWDeveloprStory201601
SWDeveloprStory201601SWDeveloprStory201601
SWDeveloprStory201601
 
2022 01-okky-코드리뷰
2022 01-okky-코드리뷰2022 01-okky-코드리뷰
2022 01-okky-코드리뷰
 
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
[부스트캠퍼세미나]조성동_야_너두_TDD_할_수_있어
 
[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선[2012 03 17]clean_code 14장 점진적개선
[2012 03 17]clean_code 14장 점진적개선
 
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
 
Chean code chapter 1
Chean code chapter 1Chean code chapter 1
Chean code chapter 1
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit Test
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원131 deview 2013 yobi-채수원
131 deview 2013 yobi-채수원
 

Tdd bdd

  • 2. TDD와 BDD는 어떻게 다른가? • TDD가 먼저 나왔다. • BDD는 TDD의 개념을 승계해서 탄생했다.
  • 3. TDD는 왜 탄생했나? • 테스트 코드 없이 그냥 개발하던 시절이 있었다. • Kent Beck이라는 사람이 테스트로 검증된 코드로 실제 코드를 작성하자고 업계 에서 주장 • 이 사람 주도 하에 TDD가 발전
  • 4. 개발 전에 테스트 코드를 먼저 쓰자는 TDD?? • 꼭 그렇진 않다. • 문제를 정의하고 해답을 찾아가는 과정이라는 게 TDD의 기본 취지 • 개발자가 뭘 개발 해야되는지를 확실히 알고 개발하자는 게 TDD의 취지 • 테스트 코드는 그 철학을 이행하는 도구일 뿐
  • 5. TDD는 테스트 코드를 어떻게? • 유닛을 위한 테스트 셋을 정의 • 개발 코드로 유닛을 구현 • 마지막으로 유닛에 대한 구현이 테스트를 통과 하는지 검증
  • 6. TDD의 기본 인터페이스 • 유닛을 위한 테스트 셋을 정의 • 개발 코드로 유닛을 구현 • 유닛에 대한 구현이 테스트를 통과 하는지 검 증
  • 7. 테스트 코드를 먼저 짜고, 그 다음에 개발 코드를 짜는 건 맞지 않는가? • 맞음 • Red - Green - Refactor 방식으로 진행 • 하지만 테스트 코드로 개발을 먼저 시작하자는 게 TDD의 기본 철학은 아님
  • 8. 근데 왜 BDD가 나오게 되었나? • TDD 개념으로 다른 개발자들에게 코치를 하던 Dan north라는 사람 • 어느날 TDD에서의 빈틈을 느끼기 시작 • 프로세스의 어디서 부터 시작해야 하는가 • 무엇을 테스트하고 또 무엇을 하지 말아야 하는가 • 한번에 얼마만큼 테스트해야 하는가 • 테스트를 어떻게 명명해야 하는가 • 테스트가 실패 하는 지에 대해 어떻게 이해해야 하는가
  • 9. TDD의 한계를 느꼈다는 말인 것 같은데, 그럼 그 빈틈을 어떻게 해결하고자 했는가? • 특정 값이 주어지고 (Given) • 어떤 이벤트가 발생했을 때 (When) • 그에 대한 결과를 보장해야한다 (Then) • 위의 형식을 만들어서 테스트 코드를 짜기 시작
  • 10. 그 형식을 쓰는 것만으로도 BDD라고 볼 수 있는 건가? • Dan north는 애초에 Test라는 단어를 쓰지 않는 게 TDD의 원리를 더 파악하기 쉽다고 생각 • Test라는 단어보다는 Behavior 이라는 표현을 쓰는 게 더 낫다고 판단
  • 11. 기존의 TDD 인터페이스에는 suit - test 형식이 있었는데 그럼 바뀐다는 말인가? • test라는 단어를 없앰 • describe - it - should라는 패턴으로 변경
  • 12. test라는 단어만 없고 결국 TDD 인터페이스랑 비슷한 것 같은데? • 맞다. 둘다 별 차이가 없다. • BDD는 기술 언어가 아닌 자연어에 가깝게 테스트 스펙을 기술한다는 것이 포인 트 • TDD와 BDD 중 뭐가 낫고 별로냐는 논쟁은 소모적인 논쟁
  • 13. 결국 TDD와 BDD는 테스트 코 드 인터페이스만 다를 거 아닌가? • 맞다. • 둘 다 Red - Green - Refactor 흐름으로 진행 • given - when - then 패턴으로 테스트 코드가 작성된다고 보면 됨