SlideShare une entreprise Scribd logo
1  sur  24
Made by. Lee Jung Woo 
TDD (Test-Driven 
Development) 
Maker 시그 TED 
14.12.04 
24-1기 이정우 
테스트 주도 개발
Chapter1 
Test-Driven Development(테스트 주도 개발) 
1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 
소프트웨어 회사 약 77.5% 이상이 TDD 적용 
소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까? 
디자인 코드 작성 테스트(수동) 
TDD란? 
설계 수정 
기존의 개발 프로세스 
TDD의 소개 
Maker Sig
Chapter1 
디자인 Test 코드 작성 코드 작성 
TDD란? 
설계 수정 
TDD 프로세스 
TDD의 소개 
Maker Sig 
Test-Driven Development(테스트 주도 개발) 
1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 
소프트웨어 회사 약 77.5% 이상이 TDD 적용 
소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까?
Chapter1 TDD의 소개 
TDD의 장점 
• 보다 튼튼한 객체지향적인 코드 생산 가능 
• 재설계 시간 단축 
• 디버깅 시간 단축 
• 테스트 문서의 대체 가능 
• 추가 구현의 용이함 
TDD가 코드의 재 사용성 보장 
사전에 확고하게 정의된 코드 정체성 
모든 레이어 디버깅 X 유닛 테스트 결과에 따름 
테스트 자동화 → 보다 정확한 테스트 근거 
새 기능 추가가 기존 코드에 미치는 영향력 쉽게 검증 
Maker Sig
Chapter1 TDD의 소개 
TDD의 단점 
• 코드 생산성 하락 
1. 빠른 결과물을 원하는 환경이라면 도입이 어려움 
2. 예외 대처에 취약한 테스트 원칙 
3. 실제 코드를 수정 해야 할 시 오히려 늘어나는 유지보수 작업 
정확한 프로그래밍 목적을 디자인 단계에서 반드시 미리 정의해야 
만 하고 또 무엇을 테스트해야 할지 확실히 정의해야만 한다. 
그래도 실보다 득이 훨씬 많다! 
Maker Sig
Chapter1 TDD의 소개 
TDD 순서도 
Maker Sig 
테스트 
(재)작성 
테스트가 
실패하는가? 
업무 코드 
작성 
작성한 테스트 
들을 실행 
코드 정련 
테스트 통과 
테스트 실패 
실패하는 
테스트 존재 
모든 테스트 
통과 
반복
Chapter2 예제로 살펴보는 TDD 개발 
1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 
를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 
일반적인 
개발자 
바로 소스코드 작성 후 
실행 테스트 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 
를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 
1. 테스트 요소 분석 
• 숫자가 3의 배수일 때 JOEL 반환 
• 숫자가 5의 배수일 때 SARAH 반환 
• 숫자가 3과 5의 배수일 때 JOEL SARAH 반환 
• 숫자가 3의 배수도 5의 배수도 아닐 때 숫자를 반환 
TDD 이용 
개발자 
Maker Sig 
가장 중요한 단계!!
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 
TDD 이용 
개발자 
Maker Sig 
UnitTest Framework의 종류 
• xUnit - 가장 널리 쓰이는 오픈소스 Test Framework 
- 자동화된 Test기법 제공 
- JUnit, NUnit, CppUnit, DBUnit 등으로 발전 
• MSTest - MS의 VisualStudio가 제공하는 Test Framework 
- 05부터 VisualStudio에 내장. 사용이 쉬움. 
- xUnit에 밀림. 하지만 2012부터 본격적으로 개선.
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
실제 코드를 작성할 
프로젝트 생성 ! 
TDD 이용 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
Unit 테스트 
프로젝트 생성 ! 
TDD 이용 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
TDD 이용 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
TDD 이용 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
TDD 이용 
개발자 
Maker Sig 
실제(업무) 코드 틀 
(JSTest) 작성
Chapter2 예제로 살펴보는 TDD 개발 
TDD 이용 
개발자 
Maker Sig 
MSTest의 Attribute들 
테스트 호출 관련 
[TestInitialize] 
[TestCleanup] 
테스트 클래스와 메서드 식별 
[TestClass] 
[TestMethod] 
[Owner] 
[Description] 
[Ignore] 
[Priority] 
[WorkItem] 
테스트 실행 관련 정보 저장 
[TestContext] 
테스트 식별 및 정렬
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
TDD 이용 테스트 코드 작성 ! 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
TDD 이용 
개발자 
Maker Sig 
Assert Class 
AreEqual 
AreNotEqual 
AreSame 
AreNotSame 
Fail 
IsFalse 
IsTrue 
IsNull 
IsNotNull 
Ex) Assert.AreEqual 
참/거짓 명제를 사용하여 단위 테스트의 
조건을 확인
Chapter2 예제로 살펴보는 TDD 개발 
2. 테스트 코드 작성 (MSTest 이용) 
TDD 이용 
개발자 
Maker Sig 
테스트를 한번 
해보자
Chapter1 TDD의 소개 
TDD 순서도 
Maker Sig 
테스트 
(재)작성 
업무 코드 
작성 
작성한 테스트 
들을 실행 
코드 정련 
테스트 통과 
테스트 실패 
실패하는 
테스트 존재 
모든 테스트 
통과 
반복 
테스트가 
실패하는가?
Chapter2 예제로 살펴보는 TDD 개발 
3. 실제 기능 코드 작성 
드디어 
실제(업무) 코드 작성 ! 
TDD 이용 
개발자 
Maker Sig
Chapter2 예제로 살펴보는 TDD 개발 
4. 단위 테스트 실행! 
TDD 이용 
개발자 
Maker Sig 
실제 코드 작성 후 
단위 테스트 실행 
검증 완료
Chapter2 예제로 살펴보는 TDD 개발 
4. 개발된 기능 적용 
TDD 프로세스를 따르면 결론적으로 질 
높고 모듈화된 소스코드를 짜게 됨! 
TDD 이용 
개발자 
Maker Sig
Chapter3 결론 
초보 개발자들에게 진입장벽이 낮은 편은 절대 아님! 
But! 
• 결과적으로 객체지향적이고 질 높은 코드 작성하게 해줌. 
• 개발자의 실력향상에도 큰 도움이 됨. 
• 어떻게 보면 객체지향적 코드 작성을 위한 가이드 역할 
• 길게 내다보면 생산성과 유지보수 비용 절감에 큰 도움! 
Maker Sig
Q & A

Contenu connexe

Tendances

C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답NAVER D2
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GDG Korea
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개Young-Ho Cha
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질도형 임
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013호정 이
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in FlittoYongjun Kim
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체Mickey SJ Lee
 
코드의 품질 (Code Quality)
코드의 품질 (Code Quality)코드의 품질 (Code Quality)
코드의 품질 (Code Quality)ChulHui Lee
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 

Tendances (18)

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
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
 
코드 리뷰 시스템 소개
코드 리뷰 시스템 소개코드 리뷰 시스템 소개
코드 리뷰 시스템 소개
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
TEST?
TEST?TEST?
TEST?
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질
 
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 
플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto플리토 코드리뷰 - Code Review in Flitto
플리토 코드리뷰 - Code Review in Flitto
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 
코드의 품질 (Code Quality)
코드의 품질 (Code Quality)코드의 품질 (Code Quality)
코드의 품질 (Code Quality)
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 

En vedette

2010 SW Testing Trend
2010 SW Testing Trend2010 SW Testing Trend
2010 SW Testing TrendMurian Song
 
When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)SangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Jongwon Lee
 
[142] how riot works
[142] how riot works[142] how riot works
[142] how riot worksNAVER D2
 
애자일에대한오해와진실
애자일에대한오해와진실애자일에대한오해와진실
애자일에대한오해와진실Sangcheol Hwang
 
[144]mobile앱에서 효율적인 storage 접근 방법
[144]mobile앱에서 효율적인 storage 접근 방법[144]mobile앱에서 효율적인 storage 접근 방법
[144]mobile앱에서 효율적인 storage 접근 방법NAVER D2
 
Tdd objective c
Tdd objective cTdd objective c
Tdd objective cUA Mobile
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
스크럼, 이걸 왜 하나요
스크럼, 이걸 왜 하나요스크럼, 이걸 왜 하나요
스크럼, 이걸 왜 하나요Insub Lee
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
 

En vedette (11)

2010 SW Testing Trend
2010 SW Testing Trend2010 SW Testing Trend
2010 SW Testing Trend
 
When develpment met test(shift left testing)
When develpment met test(shift left testing)When develpment met test(shift left testing)
When develpment met test(shift left testing)
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포Istqb 5-테스트관리-2015-배포
Istqb 5-테스트관리-2015-배포
 
[142] how riot works
[142] how riot works[142] how riot works
[142] how riot works
 
애자일에대한오해와진실
애자일에대한오해와진실애자일에대한오해와진실
애자일에대한오해와진실
 
[144]mobile앱에서 효율적인 storage 접근 방법
[144]mobile앱에서 효율적인 storage 접근 방법[144]mobile앱에서 효율적인 storage 접근 방법
[144]mobile앱에서 효율적인 storage 접근 방법
 
Tdd objective c
Tdd objective cTdd objective c
Tdd objective c
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
스크럼, 이걸 왜 하나요
스크럼, 이걸 왜 하나요스크럼, 이걸 왜 하나요
스크럼, 이걸 왜 하나요
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 

Similaire à TDD

엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드Mijeong Park
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestDoyKim
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018Kenneth Ceyer
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나JunHak Kim
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoringLim Hosung
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드NAVER Engineering
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기Chris Ohk
 
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDDCONNECT FOUNDATION
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
[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
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_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
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17Yoon Hee Hwang
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법복연 이
 

Similaire à TDD (20)

엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
iOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit TestiOS개발에서 TDD 해보기 - XCTest, Unit Test
iOS개발에서 TDD 해보기 - XCTest, Unit Test
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
Tdd
TddTdd
Tdd
 
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
우아하게 준비하는 테스트와 리팩토링 - PyCon Korea 2018
 
TDD or TFD
TDD or TFDTDD or TFD
TDD or TFD
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoring
 
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
[TECHCON 2019: MOBILE - iOS]2.들숨에 협업 날숨에 클린코드
 
청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기청강대 특강 - 프로젝트 제대로 해보기
청강대 특강 - 프로젝트 제대로 해보기
 
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
[부스트캠프 Tech Talk]김영근_처음 시작하는 TDD
 
TDD
TDDTDD
TDD
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
[FEConf 2018] Front-End 프로젝트의 Test code 작성경험기
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_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
 
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
 
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
『이펙티브 디버깅』 - 디버깅 지옥에서 탈출하는 66가지 전략과 기법
 

TDD

  • 1. Made by. Lee Jung Woo TDD (Test-Driven Development) Maker 시그 TED 14.12.04 24-1기 이정우 테스트 주도 개발
  • 2. Chapter1 Test-Driven Development(테스트 주도 개발) 1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 소프트웨어 회사 약 77.5% 이상이 TDD 적용 소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까? 디자인 코드 작성 테스트(수동) TDD란? 설계 수정 기존의 개발 프로세스 TDD의 소개 Maker Sig
  • 3. Chapter1 디자인 Test 코드 작성 코드 작성 TDD란? 설계 수정 TDD 프로세스 TDD의 소개 Maker Sig Test-Driven Development(테스트 주도 개발) 1999년 XP(eXtreme Programing)이라는 애자일(Agile) 기반의 방법론이 자리잡을 때 처음 소개 소프트웨어 회사 약 77.5% 이상이 TDD 적용 소스코드 작성 전에 테스트 코드를 먼저 작성하면 어떨까?
  • 4. Chapter1 TDD의 소개 TDD의 장점 • 보다 튼튼한 객체지향적인 코드 생산 가능 • 재설계 시간 단축 • 디버깅 시간 단축 • 테스트 문서의 대체 가능 • 추가 구현의 용이함 TDD가 코드의 재 사용성 보장 사전에 확고하게 정의된 코드 정체성 모든 레이어 디버깅 X 유닛 테스트 결과에 따름 테스트 자동화 → 보다 정확한 테스트 근거 새 기능 추가가 기존 코드에 미치는 영향력 쉽게 검증 Maker Sig
  • 5. Chapter1 TDD의 소개 TDD의 단점 • 코드 생산성 하락 1. 빠른 결과물을 원하는 환경이라면 도입이 어려움 2. 예외 대처에 취약한 테스트 원칙 3. 실제 코드를 수정 해야 할 시 오히려 늘어나는 유지보수 작업 정확한 프로그래밍 목적을 디자인 단계에서 반드시 미리 정의해야 만 하고 또 무엇을 테스트해야 할지 확실히 정의해야만 한다. 그래도 실보다 득이 훨씬 많다! Maker Sig
  • 6. Chapter1 TDD의 소개 TDD 순서도 Maker Sig 테스트 (재)작성 테스트가 실패하는가? 업무 코드 작성 작성한 테스트 들을 실행 코드 정련 테스트 통과 테스트 실패 실패하는 테스트 존재 모든 테스트 통과 반복
  • 7. Chapter2 예제로 살펴보는 TDD 개발 1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 일반적인 개발자 바로 소스코드 작성 후 실행 테스트 Maker Sig
  • 8. Chapter2 예제로 살펴보는 TDD 개발 1부터 20까지의 수를 출력하는 프로그램을 작성하시오. 단, 3의 배수에서는 숫자대신 “JOEL” 를 5의 배수에서는 “SARAH” 그리고 3과 5의 배수에서는 “JOEL SARAH” 를 출력하시오. 1. 테스트 요소 분석 • 숫자가 3의 배수일 때 JOEL 반환 • 숫자가 5의 배수일 때 SARAH 반환 • 숫자가 3과 5의 배수일 때 JOEL SARAH 반환 • 숫자가 3의 배수도 5의 배수도 아닐 때 숫자를 반환 TDD 이용 개발자 Maker Sig 가장 중요한 단계!!
  • 9. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 TDD 이용 개발자 Maker Sig UnitTest Framework의 종류 • xUnit - 가장 널리 쓰이는 오픈소스 Test Framework - 자동화된 Test기법 제공 - JUnit, NUnit, CppUnit, DBUnit 등으로 발전 • MSTest - MS의 VisualStudio가 제공하는 Test Framework - 05부터 VisualStudio에 내장. 사용이 쉬움. - xUnit에 밀림. 하지만 2012부터 본격적으로 개선.
  • 10. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) 실제 코드를 작성할 프로젝트 생성 ! TDD 이용 개발자 Maker Sig
  • 11. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) Unit 테스트 프로젝트 생성 ! TDD 이용 개발자 Maker Sig
  • 12. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig
  • 13. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig
  • 14. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig 실제(업무) 코드 틀 (JSTest) 작성
  • 15. Chapter2 예제로 살펴보는 TDD 개발 TDD 이용 개발자 Maker Sig MSTest의 Attribute들 테스트 호출 관련 [TestInitialize] [TestCleanup] 테스트 클래스와 메서드 식별 [TestClass] [TestMethod] [Owner] [Description] [Ignore] [Priority] [WorkItem] 테스트 실행 관련 정보 저장 [TestContext] 테스트 식별 및 정렬
  • 16. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 테스트 코드 작성 ! 개발자 Maker Sig
  • 17. Chapter2 예제로 살펴보는 TDD 개발 TDD 이용 개발자 Maker Sig Assert Class AreEqual AreNotEqual AreSame AreNotSame Fail IsFalse IsTrue IsNull IsNotNull Ex) Assert.AreEqual 참/거짓 명제를 사용하여 단위 테스트의 조건을 확인
  • 18. Chapter2 예제로 살펴보는 TDD 개발 2. 테스트 코드 작성 (MSTest 이용) TDD 이용 개발자 Maker Sig 테스트를 한번 해보자
  • 19. Chapter1 TDD의 소개 TDD 순서도 Maker Sig 테스트 (재)작성 업무 코드 작성 작성한 테스트 들을 실행 코드 정련 테스트 통과 테스트 실패 실패하는 테스트 존재 모든 테스트 통과 반복 테스트가 실패하는가?
  • 20. Chapter2 예제로 살펴보는 TDD 개발 3. 실제 기능 코드 작성 드디어 실제(업무) 코드 작성 ! TDD 이용 개발자 Maker Sig
  • 21. Chapter2 예제로 살펴보는 TDD 개발 4. 단위 테스트 실행! TDD 이용 개발자 Maker Sig 실제 코드 작성 후 단위 테스트 실행 검증 완료
  • 22. Chapter2 예제로 살펴보는 TDD 개발 4. 개발된 기능 적용 TDD 프로세스를 따르면 결론적으로 질 높고 모듈화된 소스코드를 짜게 됨! TDD 이용 개발자 Maker Sig
  • 23. Chapter3 결론 초보 개발자들에게 진입장벽이 낮은 편은 절대 아님! But! • 결과적으로 객체지향적이고 질 높은 코드 작성하게 해줌. • 개발자의 실력향상에도 큰 도움이 됨. • 어떻게 보면 객체지향적 코드 작성을 위한 가이드 역할 • 길게 내다보면 생산성과 유지보수 비용 절감에 큰 도움! Maker Sig
  • 24. Q & A