SlideShare uma empresa Scribd logo
1 de 88
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;
 
 
 
 

Mais conteúdo relacionado

Mais procurados

단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답NAVER D2
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법선협 이
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)SangIn Choung
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringSuwon Chae
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스철민 신
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질도형 임
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체Mickey SJ Lee
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GDG Korea
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스도형 임
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 

Mais procurados (19)

Tdd with JUnit 1
Tdd with JUnit 1Tdd with JUnit 1
Tdd with JUnit 1
 
C++과 TDD
C++과 TDDC++과 TDD
C++과 TDD
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답E1_Deview nhn애자일개발 tdd_질문답
E1_Deview nhn애자일개발 tdd_질문답
 
C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법C++ 코드 품질 관리 비법
C++ 코드 품질 관리 비법
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
애자일 테스트 프랙티스와 사례들 (부제: 협업의 힘)
 
TDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: RefactoringTDD&Refactoring Day 01: Refactoring
TDD&Refactoring Day 01: Refactoring
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스[AUG]개발자와 QA가 상생하는 테스트 프로세스
[AUG]개발자와 QA가 상생하는 테스트 프로세스
 
TEST?
TEST?TEST?
TEST?
 
테스트 케이스와 SW 품질
테스트 케이스와 SW 품질테스트 케이스와 SW 품질
테스트 케이스와 SW 품질
 
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체테스트 주도 개발 By googletest   1장 다중 통화를 지원하는 money 객체
테스트 주도 개발 By googletest 1장 다중 통화를 지원하는 money 객체
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
GKAC 2015 Apr. - 테스트 코드에서 코드 커버리지까지
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
Work With Engineer
Work With EngineerWork With Engineer
Work With Engineer
 
Tdd
TddTdd
Tdd
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 

Destaque

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

Destaque (9)

Tdd 4장
Tdd 4장Tdd 4장
Tdd 4장
 
Tdd 실습&나머지
Tdd 실습&나머지Tdd 실습&나머지
Tdd 실습&나머지
 
파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003파이썬3프로그래밍 2장 2003
파이썬3프로그래밍 2장 2003
 
[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장[2012 01 28]cleancode 3장
[2012 01 28]cleancode 3장
 
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
[2016-03-09] TDD on Spring ~ 봄에는 TDD ~
 
Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용Tdd retro agile_korea_게시용
Tdd retro agile_korea_게시용
 
Tdd 왜 배우기 어려운가
Tdd 왜 배우기 어려운가Tdd 왜 배우기 어려운가
Tdd 왜 배우기 어려운가
 
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
테스트 가능한 소프트웨어 설계와 TDD작성 패턴 (Testable design and TDD)
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트
 

Semelhante a TDD&Refactoring Day 02: TDD

애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅영기 김
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법도형 임
 
애자일 하라
애자일 하라애자일 하라
애자일 하라진수 허
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다이상한모임
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_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
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스KTH, 케이티하이텔
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기Sehun Kim
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기현승 배
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례Woogon Shim
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드Mijeong Park
 
애자일 S/W 개발
애자일 S/W 개발애자일 S/W 개발
애자일 S/W 개발영기 김
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoringLim Hosung
 
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (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 Kim
 
DebugIt/chapter1~4
DebugIt/chapter1~4DebugIt/chapter1~4
DebugIt/chapter1~4stupidfox
 

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

애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
소프트웨어 테스팅
소프트웨어 테스팅소프트웨어 테스팅
소프트웨어 테스팅
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법프로젝트 Xxx에 적용하고 싶은 개발방법
프로젝트 Xxx에 적용하고 싶은 개발방법
 
애자일 하라
애자일 하라애자일 하라
애자일 하라
 
애자일의 모든것
애자일의 모든것애자일의 모든것
애자일의 모든것
 
EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다EMOCON 2015 - 품질과 테스트는 다르다
EMOCON 2015 - 품질과 테스트는 다르다
 
공사꾼 개발부장 김종찬_페어코딩으로 테스팅 배우기_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
TddTdd
Tdd
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
초보개발자의 TDD 체험기
초보개발자의 TDD 체험기초보개발자의 TDD 체험기
초보개발자의 TDD 체험기
 
TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기TDD - 테스트 주도로 개발하기
TDD - 테스트 주도로 개발하기
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
개발 생산성과 품질 향상을 위한 글로벌기업의 애자일 도입 및 적용사례
 
엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드엔지니어의 학습, 그리고 테스트 코드
엔지니어의 학습, 그리고 테스트 코드
 
애자일 S/W 개발
애자일 S/W 개발애자일 S/W 개발
애자일 S/W 개발
 
Testing & refactoring
Testing & refactoringTesting & refactoring
Testing & refactoring
 
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
실전 애자일 게임 개발 (Agile Game Agile Game Development From The Trenches)
 
DebugIt/chapter1~4
DebugIt/chapter1~4DebugIt/chapter1~4
DebugIt/chapter1~4
 

TDD&Refactoring Day 02: TDD