SlideShare una empresa de Scribd logo
1 de 29
TDD:
Test Driven Development
실패하는 테스트 코드부터 작성한다.
TCS/InnoQuartz Team
김지헌(jiheon.kim@innotree.com)
목차
테스트 이야기
TDD란 무엇인가?
JUnit 소개
TDD를 잘 하려면??
TDD 흉내내기
테스트 이야기
테스트 이야기
애플리케이션은
계속 변하고
복잡해져간다.
테스트 이야기
단위 테스트는 코드가 바뀌지 않는다면
매번 실행할 때마다 테스트 결과가 동일
하다.
테스트 이야기
만들어진 테스트 코드를 통해서 변경 사
항을 확인하고 빠르게 조치할 수 있다.
TDD란 무엇인가?
테스트 주도 개발
Test Driven Development
TDD란 무엇인가?
TDD != 단위 테스트
TDD란 무엇인가?
만들고자 하는 기능
의 내용을 담고 있
으면서
만들어진 코드를 검
증해줄 수 있도록
테스트 코드를 먼저
만들고!
TDD란 무엇인가?
테스트를 성공하게
해주는 코드를
작성하는 방식의
개발 방법
TDD란 무엇인가?
최대한 빨리 실패하기!!
TDD의 장점
개발의 방향을 잃지 않게 유지해
준다.
클래스 이름은 Account
기능은 세 가지
잔고balance 조회
입금deposit
출금withdraw
TDD의 장점
품질 좋은 소프트웨어 모듈 보유
자동화된 단위 테스트 케이스를 갖게 된다.
사용 설명서 & 의사소통의 수단
설계 개선
보다 자주 성공한다.
테스트를 거친 '품질이 검증된 부품'을 갖게 됨
필요한 시점에 언제든지 수행하고 확인 가능
테스트 코드 남음(문서보다 코드!)
다양한 설계 요소 고민(이름, 인자, 접근 제어자)!
테스트 주기를 짧게 하여 녹색 막대를 보며, 성취
감을!!
TDD의 최종목적:
'잘 동작하는 깔끔한 코
드' 작성
테스트 유의사항
l테스트 케이스는 이름이 중요하다.
l코드형식 보다는 테스트를 설명하는 형식으로
l한글로 작성해도 자바니까 OK~ 이왕이면 UTF-8 인코딩
l메소드명을 통해서 테스트 의도 확인
테스트 이야기
더 이상 동작하지 않는
테스트 케이스는 제거한다.
테스트 이야기
TDD는 자동화된 테스트를
만드는 것이 최종 목표가 아니다.
테스트 이야기
모든 상황에 대한
테스트 케이스를
만들 필요는 없다.
테스트 이야기
여러 개의 실패하는 테스트 케이스를
한번에 만들지 않는다.
JUnit:
테스트 자동화 프레임워크
JUnit 개념
●테스트 픽스처Test fixture
●테스트 케이스Test case와 테스트 메소드Test method
●JUnit3 vs JUnit4
JUnit 을 사용한 클래스 기본구조
@Before: 테스트에 필요한 변수나 환경설정
@Test: 실제 테스트가 진행됨
// Given: 테스트와 관련된 조건식
// When: 테스트 실행(행위, behavior)
// Then: 테스트 실행결과 확인
@After: 테스트에 사용된 뒷정리
TDD를 잘하려면?
TDD를 잘 하려면??
IDE(tool)를 잘 써야 한다.
TDD를 잘 하려면??
많이 연습해야 한다.
TDD를 잘 하려면??
테스트하기 편한 환경을 조성한다.
TDD를 잘 하려면??
잘 쪼개야 한다.
TDD를 잘 하려면??
아래에서 위로(Bottom-up) 보다는
위에서 아래로(Top-down) 방식이 좋다.
감사합니다 :)
궁금하신 사항이 있으시다면
,
jiheon.kim@innotree.com
http://innotree.slack.com

Más contenido relacionado

La actualidad más candente

E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답NAVER D2
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질도형 임
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유agilekorea
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개Young-Ho Cha
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in FlittoYongjun Kim
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 

La actualidad más candente (18)

E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답
 
Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
애자일 도입과 사례 공유
애자일 도입과 사례 공유애자일 도입과 사례 공유
애자일 도입과 사례 공유
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
Tdd
TddTdd
Tdd
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
TEST?
TEST?TEST?
TEST?
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 

Destacado

퍼스널 브랜딩 윤혜자
퍼스널 브랜딩 윤혜자퍼스널 브랜딩 윤혜자
퍼스널 브랜딩 윤혜자Heiza Yoon
 
2 111009035503-phpapp01
2 111009035503-phpapp012 111009035503-phpapp01
2 111009035503-phpapp01상준 이
 
브랜드시스템디자인
브랜드시스템디자인브랜드시스템디자인
브랜드시스템디자인Q&COMPANY
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316Rhea Strike
 
카카오게임 첫 도전기 <돼지러너>
카카오게임 첫 도전기 <돼지러너>카카오게임 첫 도전기 <돼지러너>
카카오게임 첫 도전기 <돼지러너>Kim Min
 
공유경제시작학교 : 브랜딩 워크샵(이지윤)
공유경제시작학교 : 브랜딩 워크샵(이지윤)공유경제시작학교 : 브랜딩 워크샵(이지윤)
공유경제시작학교 : 브랜딩 워크샵(이지윤)oeclab
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Sangcheol Hwang
 

Destacado (7)

퍼스널 브랜딩 윤혜자
퍼스널 브랜딩 윤혜자퍼스널 브랜딩 윤혜자
퍼스널 브랜딩 윤혜자
 
2 111009035503-phpapp01
2 111009035503-phpapp012 111009035503-phpapp01
2 111009035503-phpapp01
 
브랜드시스템디자인
브랜드시스템디자인브랜드시스템디자인
브랜드시스템디자인
 
Rhea smart product130316
Rhea smart product130316Rhea smart product130316
Rhea smart product130316
 
카카오게임 첫 도전기 <돼지러너>
카카오게임 첫 도전기 <돼지러너>카카오게임 첫 도전기 <돼지러너>
카카오게임 첫 도전기 <돼지러너>
 
공유경제시작학교 : 브랜딩 워크샵(이지윤)
공유경제시작학교 : 브랜딩 워크샵(이지윤)공유경제시작학교 : 브랜딩 워크샵(이지윤)
공유경제시작학교 : 브랜딩 워크샵(이지윤)
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
 

Similar a TDD: Test Driven Development 첫번째 이야기

엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드Mijeong Park
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824AWSKRUG - AWS한국사용자모임
 
Learning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingLearning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingJongchan Kim
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기현승 배
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestDoyKim
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서Kim kyoung-song
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)VMware Tanzu Korea
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드NAVER Engineering
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)SangIn Choung
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료Vong Sik Kong
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)Jay Park
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsTaeyoung Kim
 

Similar a TDD: Test Driven Development 첫번째 이야기 (20)

엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_ausg_20170824
 
Learning Unit Testing with Pair Programming
Learning Unit Testing with Pair ProgrammingLearning Unit Testing with Pair Programming
Learning Unit Testing with Pair Programming
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit Test
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
Tdd bdd
Tdd bddTdd bdd
Tdd bdd
 
사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서사내 TDD 도입을 위한 설명 문서
사내 TDD 도입을 위한 설명 문서
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
꿀밋업시리즈3탄_Spring Boot를 활용한 마이크로서비스 개발과 페어프로그래밍(TDD)
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
 
개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)개발이 테스트를 만났을 때(Shift left testing)
개발이 테스트를 만났을 때(Shift left testing)
 
TDD in gameserver 발표자료
TDD in gameserver 발표자료TDD in gameserver 발표자료
TDD in gameserver 발표자료
 
깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)깨끗한 코드 (클린 코드, Clean Code)
깨끗한 코드 (클린 코드, Clean Code)
 
ALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOpsALM과 DevOps 그리고 Azure DevOps
ALM과 DevOps 그리고 Azure DevOps
 

Último

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 

Último (6)

캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 

TDD: Test Driven Development 첫번째 이야기