TDD&Refactoring Day 02: TDD

S
Day02


        실습으로
 배우는
 

                                 테스트
 주도
 개발
 



                                                                                                                                                 1	
  
학습목표

u  본 교육과정은 실습을 통해 TDD를 배워보는 과정입니다.
u  TDD 그 자체가 목적이 아니며, 효율적인 프로그래밍을 위한 과정의 하나로, 올바
 른 개발 스타일을 몸에 익히는 것이 이번 교육의 목적입니다.




                                                    2	
  
                                                디자인패턴
 	
  	
  	
  	
  1. 코드개선


          1.  객체지향 특징

          2.  코드 개선 [실습]




                                  3	
  
                              디자인패턴
Learning concept


-    Wisdom over Knowledge

-    Practice over Seeing

-    I don’t know what I don’t know

-    options and guide for good TDD

                                      4
과정 진행 키워드: 3C


   Consideration
   Communication
   Cooperation

                   5
첫째 시간
기초점검




        6
환경설정 및 기본코드 작성

     개발 환경을 확인합니다.
     간단한 코드를 작성해 봅니다.




                         7
워밍업 연습문제


 0에 가까운 숫자 찾기




                8
전통적인 개발 진행
 문제발생                                                                                           요구사항 발생


         기능구현

         Console 에 값 찍어
         보기


         간단한 테스트

                                                        Yes
 
             에러발생?

                 No
 

         완료!

                                                                                                          9
일반적인 개발
1. 특정 모듈의 개발 기간이 길어질수록 개발자의 목표의식이 흐려진다.

 “어디까지 짰더라?”

 “아, 내가 지금 뭘 하는 거였지?”

 “이 모듈이 무슨 기능을 해야 한대더라?”

2. 작업 분량이 늘어날수록 확인이 어려워진다.

 “로그가 어디 있더라?”

 “이것도 화면으로 출력해보고…”




                                          10
일반적인 개발
3. 개발자의 집중력이 필요해진다.

 “앗! 화면 지나갔다!”

4. 논리적인 오류를 찾기가 어렵다.

 “여기서 그러니까 이 값이 들어가면 나와야 하는 게… 아… 이게 맞던가?”

5. 코드의 사용 방법과 변경 이력을 개발자의 기억력에 의존하게 되는 경우가 많다.

 “맞아! 개인고객 인증을 고치면 법인 고객인증 부분도 함께 고쳤어야 했었지!!”

6. 테스트 케이스가 적혀 있는 엑셀 파일을 보며 매번 테스트를 실행하는 게 점점 귀찮아져서
   는 점차 간소화하는 항목들이 늘어난다.

 “날짜? 1111. 주민번호? 우선 222222-2222222. 주소? 서울 개똥이네”


                                                      11
일반적인 개발
7. 코드 수정 시에 기존 코드의 정상 동작에 대한 보장이 어렵다.

  “휴~ 찾았다. 여길 고쳐야 하는 거였군! 아, 근데 이 금칙어 필터 모듈 혹시 다른 데서도 쓰는
  거 아냐?”

8. 테스트를 해보려면 소스코드에 변경을 가하는 등, 번거로운 선행 작업이 필요할 수 있다.

  “입고 처리를 테스트하려면, 주문이 완료됐다고 테이블에 직접 업데이트를 해줘야…”

9. 그래서 소스 변경 시 해야 하는 회귀 테스트3는 곧잘 희귀 테스트(rare test)가 되기 쉽다.

  “아, 그걸 언제 다 다시 테스트해? 우선 급한 불부터 끄고 보자구.
      집에 안 갈거야?”




                                                             12
좋은 설계를 위한 노력,
좋은 설계자를 만들어 내기 위한 노력




                       13
객체 지향 기본 원칙




              14
OCP
SRP
ISP
Demeter’s Law (=Hollywood law)
IOC


                                 15
다음 두 코드 중 더 나은 디자인은?
Case.1
    class
 Rental
 {
 
 
 
 
 Movie
 movie;
 
 
 
 
 Rental(Service
 service)
 {
 
 
 
 
 
 
 
 
 this.movie
 =
 service.getMovie();
 
 
 
 
 }
 
                                           }
 
Case.2
    class
 Rental
 {
 
 
 
 
 Movie
 movie;
 
 
 
 
 Rental(Movie
 movie)
 {
 
 
 
 
 
 
 
 
 this.movie
 =
 movie;
 
 
 
 
1 de 88

Recomendados

테스트 자동화와 TDD(테스트 주도 개발방법론) por
테스트 자동화와 TDD(테스트 주도 개발방법론)테스트 자동화와 TDD(테스트 주도 개발방법론)
테스트 자동화와 TDD(테스트 주도 개발방법론)KH Park (박경훈)
19.6K vistas33 diapositivas
파이썬 TDD 101 por
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101정주 김
5.9K vistas30 diapositivas
TDD por
TDDTDD
TDDHenry Lee
1.8K vistas24 diapositivas
Test Driven Development (TDD) basic por
Test Driven Development (TDD) basicTest Driven Development (TDD) basic
Test Driven Development (TDD) basicCurt Park
2.7K vistas85 diapositivas
TDD: Test Driven Development 첫번째 이야기 por
TDD: Test Driven Development 첫번째 이야기TDD: Test Driven Development 첫번째 이야기
TDD: Test Driven Development 첫번째 이야기Ji Heon Kim
2.3K vistas29 diapositivas
IoT 개발자를 위한 Embedded C에서 TDD를 해보자 por
IoT 개발자를 위한 Embedded C에서 TDD를 해보자IoT 개발자를 위한 Embedded C에서 TDD를 해보자
IoT 개발자를 위한 Embedded C에서 TDD를 해보자Taeyeop Kim
4.3K vistas40 diapositivas

Más contenido relacionado

La actualidad más candente

TDD (Android Unit Test) por
TDD (Android Unit Test)TDD (Android Unit Test)
TDD (Android Unit Test)Kihoon Kim
4.1K vistas47 diapositivas
Tdd with JUnit 1 por
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1Junyoung Lee
973 vistas32 diapositivas
C++과 TDD por
C++과 TDDC++과 TDD
C++과 TDD선협 이
7.5K vistas50 diapositivas
단위테스트자동화지원도구 임성현 최종 por
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
2.8K vistas16 diapositivas
E1_Deview nhn애자일개발 tdd_질문답 por
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답NAVER D2
2.1K vistas20 diapositivas
C++ 코드 품질 관리 비법 por
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
27.1K vistas187 diapositivas

La actualidad más candente(20)

TDD (Android Unit Test) por Kihoon Kim
TDD (Android Unit Test)TDD (Android Unit Test)
TDD (Android Unit Test)
Kihoon Kim4.1K vistas
C++과 TDD por 선협 이
C++과 TDDC++과 TDD
C++과 TDD
선협 이7.5K vistas
단위테스트자동화지원도구 임성현 최종 por guest7178884
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
guest71788842.8K vistas
E1_Deview nhn애자일개발 tdd_질문답 por NAVER D2
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답
NAVER D22.1K vistas
C++ 코드 품질 관리 비법 por 선협 이
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
선협 이27.1K vistas
TDD&Refactoring Day 03: TDD por Suwon Chae
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
Suwon Chae1K vistas
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘) por SangIn Choung
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
SangIn Choung1.9K vistas
TDD&Refactoring Day 01: Refactoring por Suwon Chae
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
Suwon Chae2.3K vistas
testing for agile?, agile for testing por SangIn Choung
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
SangIn Choung364 vistas
[AUG]개발자와 QA가 상생하는 테스트 프로세스 por 철민 신
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
철민 신7.7K vistas
테스트 케이스와 SW 품질 por 도형 임
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질
도형 임3.3K vistas
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체 por Mickey SJ Lee
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
Mickey SJ Lee1.2K vistas
Tdd live spring camp 2013 por beom kyun choi
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
beom kyun choi8.8K vistas
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지 por GDG Korea
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GDG Korea3.9K vistas
행복한 개발을 위한_테스트_케이스 por 도형 임
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
도형 임11.3K vistas
Ui test 자동화하기 - Selenium + Jenkins por Chang Hak Yeon
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
Chang Hak Yeon5K vistas

Destacado

Tdd 4장 por
Tdd 4장Tdd 4장
Tdd 4장Jong Pil Won
495 vistas30 diapositivas
Tdd 실습&나머지 por
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지Jong Pil Won
510 vistas8 diapositivas
파이썬3프로그래밍 2장 2003 por
파이썬3프로그래밍 2장 2003파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003Jong Pil Won
493 vistas22 diapositivas
[2012 01 28]cleancode 3장 por
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장Jong Pil Won
403 vistas10 diapositivas
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~ por
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~Ashal aka JOKER
709 vistas296 diapositivas
Tdd retro agile_korea_게시용 por
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Sangcheol Hwang
2.2K vistas68 diapositivas

Destacado(9)

Tdd 실습&나머지 por Jong Pil Won
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지
Jong Pil Won510 vistas
파이썬3프로그래밍 2장 2003 por Jong Pil Won
파이썬3프로그래밍 2장 2003파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003
Jong Pil Won493 vistas
[2012 01 28]cleancode 3장 por Jong Pil Won
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장
Jong Pil Won403 vistas
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~ por Ashal aka JOKER
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
Ashal aka JOKER709 vistas
Tdd retro agile_korea_게시용 por Sangcheol Hwang
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
Sangcheol Hwang2.2K vistas
Tdd 왜 배우기 어려운가 por Jaehoon Oh
Tdd 왜 배우기 어려운가Tdd 왜 배우기 어려운가
Tdd 왜 배우기 어려운가
Jaehoon Oh2.9K vistas
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD) por Suwon Chae
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
Suwon Chae12.5K vistas
시작하자 단위테스트 por YongEun Choi
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트
YongEun Choi10.3K vistas

Similar a TDD&Refactoring Day 02: TDD

애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절) por
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
3.6K vistas36 diapositivas
소프트웨어 테스팅 por
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
29.8K vistas125 diapositivas
발표자료 1인qa로살아남는6가지방법 por
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
5.9K vistas41 diapositivas
프로젝트 Xxx에 적용하고 싶은 개발방법 por
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
2.5K vistas64 diapositivas
애자일 하라 por
애자일 하라애자일 하라
애자일 하라진수 허
511 vistas31 diapositivas
애자일의 모든것 por
애자일의 모든것애자일의 모든것
애자일의 모든것KH Park (박경훈)
45.4K vistas175 diapositivas

Similar a TDD&Refactoring Day 02: TDD(20)

애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절) por SangIn Choung
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
SangIn Choung3.6K vistas
소프트웨어 테스팅 por 영기 김
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
영기 김29.8K vistas
발표자료 1인qa로살아남는6가지방법 por SangIn Choung
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
SangIn Choung5.9K vistas
프로젝트 Xxx에 적용하고 싶은 개발방법 por 도형 임
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
도형 임2.5K vistas
애자일 하라 por 진수 허
애자일 하라애자일 하라
애자일 하라
진수 허511 vistas
EMOCON 2015 - 품질과 테스트는 다르다 por 이상한모임
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
이상한모임897 vistas
Learning Unit Testing with Pair Programming por Jongchan Kim
Learning Unit Testing with Pair ProgrammingLearning Unit Testing with Pair Programming
Learning Unit Testing with Pair Programming
Jongchan Kim112 vistas
초보개발자의 TDD 체험기 por Sehun Kim
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
Sehun Kim3.7K vistas
TDD - 테스트 주도로 개발하기 por 현승 배
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
현승 배86 vistas
테스트자동화와 TDD por Sunghyouk Bae
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
Sunghyouk Bae4.4K vistas
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례 por Woogon Shim
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
Woogon Shim4.5K vistas
엔지니어의 학습, 그리고 테스트 코드 por Mijeong Park
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
Mijeong Park2.6K vistas
애자일 S/W 개발 por 영기 김
애자일 S/W 개발애자일 S/W 개발
애자일 S/W 개발
영기 김11.3K vistas
Testing & refactoring por Lim Hosung
Testing & refactoringTesting & refactoring
Testing & refactoring
Lim Hosung33 vistas
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches) por Kay Kim
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
Kay Kim986 vistas
DebugIt/chapter1~4 por stupidfox
DebugIt/chapter1~4DebugIt/chapter1~4
DebugIt/chapter1~4
stupidfox807 vistas

TDD&Refactoring Day 02: TDD