SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Test Driven Development
2002년

피보나치 수열
TDD로 짜는 동영상
main()
Edit & Pray
2009년

젂사적 QP홗동
Code Corverage
Legacy Code에서
개발하기
TDD
제대로 배워보기
assert( 개발에서 만드는 테스트의 종
류를 파악하고 장단점을 이해한다 );
개발자라면
테스트도 코드로!
수동 테스트
• 장점
•   쉽다 갂편하다
•   테스트 불가능한 경우 거의 없음

• 단점
•   휘발성
•   재현의 어려움
자동 테스트
• 장점
•   여러 번 수행 가능하다.
•   기존 테스트는 새 테스트를 작성하는 발판이 된다
•   코드를 통한 도큐먼트 & 커뮤니케이션

• 단점
•   기술, 노하우의 필요
assert( TDD가 무엇인지 안다 );
Test the program
         before you write it.
                            [1]




[1] 『테스트 주도 개발』
TDD에서는
• 오직 자동화된 테스트가 실패할 경
  우에만 새로운 코드를 작성한다.
• 중복을 제거한다.
assert( 테스트 범주를 이해한다 );
Unit Test
• 최소 실행 단위, 보통 함수 하나에
  대한 테스트 [1]
• 외부의 의존성을 배제한 테스트




[1] http://en.wikipedia.org/wiki/Unit_testing
Integration Test
• 개별 모듈을 결합하여 그룹의 테스
  트 [1]
• DB, 네트웍 리소스를 홗용한 테스
  트




[1] http://en.wikipedia.org/wiki/Integration_testing
System Test                            [1]


• 젂체 소프트웨어 시스템을 실행시
  키고 짂행하는 테스트
• 기능/시나리오 테스트




[1] 『지속적 통합 : 소프트웨어 품질을 높이고 위험을 줄이기』
테스트 범주 별 도구                                                      [1]

범주                                      도구
Unit Test                               Junit
                                        Mock 라이브러리
Integration Test                        DbUnit
                                        StrutsTestCase
                                        Springframework.test.*
System Test                             Selenium
                                        JWebUnit




 [1] 『지속적 통합 : 소프트웨어 품질을 높이고 위험을 줄이기』
assert( Mock Object를 사용해야 하
는 경우를 안다 );
Test Double
• 代役
• 임시의 가상 구현체




[그림] http://msdn.microsoft.com/ko-kr/magazine/cc163358.aspx
언제 Mock객체를 만들 것인가?
• 테스트 대상이 가짂 ‘의존성’을 배
  제하고 테스트 케이스를 작성 할 때
•   홖경 구축이 필요한 경우
•   의존적인 라이브러리가 테스트 시갂을 많이 소요할 경우
•   특정 순갂이나 이벤트에 의존적인 경우
assert( TDD를 시도해보면 무언가 장
점을 얻을 수 있겠다는 느낌이 있다 );
메일 발송 배치 개발
• 메일Pool에 미발송 메일이 있는지
  확인한다.
• 미발송 메일이 있을 경우, 메일서버
  로 발송을 요청한다.
• 발송이 성공하면, 메일Pool에 결
  과를 저장한다.
테스트 케이스 클래스의 위치                              [1]



• 테스트 대상 소스와 테스트 클래스를
  같은 위치로
• 테스트 클래스는 하위 패키지로
• 최상위 패키지를 분리
• 소스 폴더는 다르게, 패키지는 동일,
  컴파일된 클래스는 각각 다른 곳으로
• 테스트를 프로젝트로 분리
[1] 『테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구』
MoreUnit
단축키        기능
Ctrl + J   소스와 테스트 케이스 갂의 이동
Ctrl + R   테스트 케이스 구동
Ctrl + U   테스트 케이스 생성
Mockito
• 기본 사용법
    •    Mock 객체 만들기
    •    예상값 지정
    •    테스트에 사용할 스텁 만들기
    •    검증

• 특징
•       void 메소드를 stub으로 만들기
•       실제 객체를 stub으로 만들기 : spy
•       Behavior-Driven Development 스타일 지웎
assert( TDD의 장점을 이해한다 );
TDD의 장점
•   개발의 방향을 잃지 않게 유지해준다.
•   품질 높은 소프트웨어 모듈 보유하게 된다.
•   자동화된 단위 테스트 케이스를 갖게 된다.
•   사용설명서 & 의사소통 수단으로 사용한다.
•   리팩토링이 용이하다.
•   보다 자주 성공을 경험하게 한다.
Regression Test



assert( 개발에서 만드는 테스트의 종류를 파악하고 장단점
을 이해한다 );
assert( TDD가 무엇인지 안다 );
assert( 테스트 범주를 이해한다 );
assert( Mock Object를 사용해야 하는 경우를 안다 );
assert( TDD를 시도해보면 무언가 장점을 얻을 수 있겠다는
느낌이 있다 );
assert( TDD의 장점을 이해한다 );

Weitere ähnliche Inhalte

Was ist angesagt?

TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기Wonchang Song
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SangIn Choung
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool재연 김
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12Hyosung Jeon
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개Hyunil Shin
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례SangIn Choung
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testingSangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 SangIn Choung
 
모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016Jongwon Kim
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해Yong Hoon Kim
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드SangIn Choung
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101정주 김
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)Jongwon Kim
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과도형 임
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 

Was ist angesagt? (20)

TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리SDET 인력 양성을 위한 프로젝트 지원 사례 정리
SDET 인력 양성을 위한 프로젝트 지원 사례 정리
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
 
짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례짝 테스트(Pair Testing) 소개와 사례
짝 테스트(Pair Testing) 소개와 사례
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
testing for agile?, agile for testing
testing for agile?, agile for testingtesting for agile?, agile for testing
testing for agile?, agile for testing
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료 우리 제품의 검증 프로세스 소개 자료
우리 제품의 검증 프로세스 소개 자료
 
모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016모바일 게임 테스트 자동화 Igc 2016
모바일 게임 테스트 자동화 Igc 2016
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드
 
파이썬 TDD 101
파이썬 TDD 101파이썬 TDD 101
파이썬 TDD 101
 
모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)모바일 게임 테스트 자동화 (Appium 확장)
모바일 게임 테스트 자동화 (Appium 확장)
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 

Andere mochten auch

SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote진수 한
 
Guitar
GuitarGuitar
Guitarymtech
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법SangIn Choung
 
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
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngineSol Kim
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴Terry Cho
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsChang Hak Yeon
 
Introduction to JIRA & Agile Project Management
Introduction to JIRA & Agile Project ManagementIntroduction to JIRA & Agile Project Management
Introduction to JIRA & Agile Project ManagementDan Chuparkoff
 

Andere mochten auch (9)

SW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project KeynoteSW Maestro 1-1 Project Keynote
SW Maestro 1-1 Project Keynote
 
Guitar
GuitarGuitar
Guitar
 
발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법발표자료 1인qa로살아남는6가지방법
발표자료 1인qa로살아남는6가지방법
 
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)
 
Selenium and XpressEngine
Selenium and XpressEngineSelenium and XpressEngine
Selenium and XpressEngine
 
Python andselenium
Python andseleniumPython andselenium
Python andselenium
 
4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴4. 대용량 아키텍쳐 설계 패턴
4. 대용량 아키텍쳐 설계 패턴
 
Ui test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + JenkinsUi test 자동화하기 - Selenium + Jenkins
Ui test 자동화하기 - Selenium + Jenkins
 
Introduction to JIRA & Agile Project Management
Introduction to JIRA & Agile Project ManagementIntroduction to JIRA & Agile Project Management
Introduction to JIRA & Agile Project Management
 

Ähnlich wie Tdd

回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...asfasf4
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)SangIn Choung
 
Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Lim SungHyun
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 aChoonghyun Yang
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDSuwon Chae
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Jongwon Lee
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해중선 곽
 
Growing object oriented software guided by test
Growing object oriented software guided by testGrowing object oriented software guided by test
Growing object oriented software guided by test라한사 아
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재Hankyo
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙codevania
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들Lee Geonhee
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)Sungmin Kim
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous IntegrationDonghyun Seo
 
효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합홍렬 임
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2Minseok Jang
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스KTH, 케이티하이텔
 

Ähnlich wie Tdd (20)

Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
回国去哪买毕业证办迪肯大学毕业证Deakin毕业证书【Q微202-661-4433】 Deakin售澳洲毕业证原版新毕业证书出售各国毕业证买澳洲毕业证的价...
 
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
[기본과정] 코드 테스트와 커버리지 기본 교육(개념)
 
Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임Tr#3 5) 임성현 책임
Tr#3 5) 임성현 책임
 
아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a아꿈사.C++ api 디자인.20140315 a
아꿈사.C++ api 디자인.20140315 a
 
TDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDDTDD&Refactoring Day 02: TDD
TDD&Refactoring Day 02: TDD
 
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
 
Android unit testing
Android unit testingAndroid unit testing
Android unit testing
 
메이븐 기본 이해
메이븐 기본 이해메이븐 기본 이해
메이븐 기본 이해
 
Growing object oriented software guided by test
Growing object oriented software guided by testGrowing object oriented software guided by test
Growing object oriented software guided by test
 
01.개발환경 교육교재
01.개발환경 교육교재01.개발환경 교육교재
01.개발환경 교육교재
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙
 
프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들프로젝트 관리 및 지켜야 할 사항들
프로젝트 관리 및 지켜야 할 사항들
 
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
KGC 2014, 'Software Enginner in Test' in Game Development (Bluehole Studio)
 
Continuous Integration
Continuous IntegrationContinuous Integration
Continuous Integration
 
TDD
TDDTDD
TDD
 
효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합효율적인 개발 프로세스를 위한 지속적 통합
효율적인 개발 프로세스를 위한 지속적 통합
 
클린 코드 part2
클린 코드 part2클린 코드 part2
클린 코드 part2
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
Tdd ver.2
Tdd ver.2Tdd ver.2
Tdd ver.2
 

Tdd

  • 8. assert( 개발에서 만드는 테스트의 종 류를 파악하고 장단점을 이해한다 );
  • 9.
  • 10.
  • 12. 수동 테스트 • 장점 • 쉽다 갂편하다 • 테스트 불가능한 경우 거의 없음 • 단점 • 휘발성 • 재현의 어려움
  • 13. 자동 테스트 • 장점 • 여러 번 수행 가능하다. • 기존 테스트는 새 테스트를 작성하는 발판이 된다 • 코드를 통한 도큐먼트 & 커뮤니케이션 • 단점 • 기술, 노하우의 필요
  • 15. Test the program before you write it. [1] [1] 『테스트 주도 개발』
  • 16.
  • 17. TDD에서는 • 오직 자동화된 테스트가 실패할 경 우에만 새로운 코드를 작성한다. • 중복을 제거한다.
  • 18. assert( 테스트 범주를 이해한다 );
  • 19. Unit Test • 최소 실행 단위, 보통 함수 하나에 대한 테스트 [1] • 외부의 의존성을 배제한 테스트 [1] http://en.wikipedia.org/wiki/Unit_testing
  • 20. Integration Test • 개별 모듈을 결합하여 그룹의 테스 트 [1] • DB, 네트웍 리소스를 홗용한 테스 트 [1] http://en.wikipedia.org/wiki/Integration_testing
  • 21. System Test [1] • 젂체 소프트웨어 시스템을 실행시 키고 짂행하는 테스트 • 기능/시나리오 테스트 [1] 『지속적 통합 : 소프트웨어 품질을 높이고 위험을 줄이기』
  • 22. 테스트 범주 별 도구 [1] 범주 도구 Unit Test Junit Mock 라이브러리 Integration Test DbUnit StrutsTestCase Springframework.test.* System Test Selenium JWebUnit [1] 『지속적 통합 : 소프트웨어 품질을 높이고 위험을 줄이기』
  • 23. assert( Mock Object를 사용해야 하 는 경우를 안다 );
  • 24. Test Double • 代役 • 임시의 가상 구현체 [그림] http://msdn.microsoft.com/ko-kr/magazine/cc163358.aspx
  • 25. 언제 Mock객체를 만들 것인가? • 테스트 대상이 가짂 ‘의존성’을 배 제하고 테스트 케이스를 작성 할 때 • 홖경 구축이 필요한 경우 • 의존적인 라이브러리가 테스트 시갂을 많이 소요할 경우 • 특정 순갂이나 이벤트에 의존적인 경우
  • 26. assert( TDD를 시도해보면 무언가 장 점을 얻을 수 있겠다는 느낌이 있다 );
  • 27. 메일 발송 배치 개발 • 메일Pool에 미발송 메일이 있는지 확인한다. • 미발송 메일이 있을 경우, 메일서버 로 발송을 요청한다. • 발송이 성공하면, 메일Pool에 결 과를 저장한다.
  • 28. 테스트 케이스 클래스의 위치 [1] • 테스트 대상 소스와 테스트 클래스를 같은 위치로 • 테스트 클래스는 하위 패키지로 • 최상위 패키지를 분리 • 소스 폴더는 다르게, 패키지는 동일, 컴파일된 클래스는 각각 다른 곳으로 • 테스트를 프로젝트로 분리 [1] 『테스트 주도 개발 : 고품질 쾌속개발을 위한 TDD 실천법과 도구』
  • 29. MoreUnit 단축키 기능 Ctrl + J 소스와 테스트 케이스 갂의 이동 Ctrl + R 테스트 케이스 구동 Ctrl + U 테스트 케이스 생성
  • 30. Mockito • 기본 사용법 • Mock 객체 만들기 • 예상값 지정 • 테스트에 사용할 스텁 만들기 • 검증 • 특징 • void 메소드를 stub으로 만들기 • 실제 객체를 stub으로 만들기 : spy • Behavior-Driven Development 스타일 지웎
  • 31. assert( TDD의 장점을 이해한다 );
  • 32. TDD의 장점 • 개발의 방향을 잃지 않게 유지해준다. • 품질 높은 소프트웨어 모듈 보유하게 된다. • 자동화된 단위 테스트 케이스를 갖게 된다. • 사용설명서 & 의사소통 수단으로 사용한다. • 리팩토링이 용이하다. • 보다 자주 성공을 경험하게 한다.
  • 33.
  • 34.
  • 35. Regression Test assert( 개발에서 만드는 테스트의 종류를 파악하고 장단점 을 이해한다 ); assert( TDD가 무엇인지 안다 ); assert( 테스트 범주를 이해한다 ); assert( Mock Object를 사용해야 하는 경우를 안다 ); assert( TDD를 시도해보면 무언가 장점을 얻을 수 있겠다는 느낌이 있다 ); assert( TDD의 장점을 이해한다 );