SlideShare una empresa de Scribd logo
1 de 23
12장 테스트 조직하기 아키텍트를 꿈꾸는 사람들 오전스터디 2010. 8. 7. 전효성
Goal 찾기 쉽고 이해하기 쉬운 테스트 조직하는 법 테스트 메소드 내부 구성 테스트 케이스 클래스 구성 테스트 스위트 구성
테스트 스위트 테스트케이스 클래스 테스트 메소드 기본 xUnit메커니즘 테스팅 자동화 도구 사용시 작업 순서 테스트 찾기(521) 테스트 나열(528) 테스트 스위트 객체 생성(513) 테스트 실행기 (502)로 스위트 객체 메소드 실행 테스트 실행기 테스트 코드
적당한 크기의 테스트 메소드 테스트 조건 = { SUT의 시작 상태, 실행 방법, 기대 응답, 종료 상태 } 테스트 메소드= 여러 테스트 코드를 실행
바람직한 테스트 메소드 순차문, 한번에 하나만, SUT격리 순차문 한번에 하나의 조건만 검증 SUT격리
테스트 메소드 조직 전략(1/4) 현실 문제는 두 부분의 사이 어디쯤에 있다. 하나의 테스트 케이스 클래스에 모든 테스트 메소드 하나의 테스트 케이스 클래스에 오직 하나의 테스트 메소드 VS
테스트 메소드 조직 전략(2/4) 클래스별 테스트케이스 클래스 Testcase Class per Class(497) 테스트 메소드가 늘어나면, 테스트 케이스 클래스로 쪼갠다. Refectoring – Extract class와 유사
테스트 메소드 조직 전략(3/4) 기능별 테스트케이스 클래스 기능 중심으로 테스트 케이스 구성 픽스처setup코드 중복 가능성 있음
테스트 메소드 조직 전략(4/4) 픽스처별 테스트케이스 클래스 같은 선조건을 갖는 집합들이 하나의 클래스 테스트조건들이 흩어질 수 있다.
상황에 따른 테스트 메소드 조직 전략 작업의 시작  하나의 테스트 케이스 클래스에서 시작 후, 테스트 코드 리팩토링 상태가 다양한 객체  픽스처별 테스트케이스 클래스 서비스 퍼사드, 고객 테스트  기능별 테스트 케이스 클래스 미리 만든 픽스처(562), 위임설치(541)로픽스처 설치
테스트 이름 정하기 조합형 이름 테스트 패키지 테스트 케이스 클래스 테스트 메소드 이름 어떤것을 알 수 있나?  SUT클래스 이름 실행하려는 메소드나 기능 이름 SUT나 그 SUT의존 객체의 상태 관련된것 그 테스트 케이스에 거는 기대 Should throw something…
테스트 스위트 조직하기(1/4) 특정 부분에 관심이 있는 테스트 집단 이름 있는 테스트 스위트 부분 스위트 모든 테스트 스위트들은AllTests에서 실행 가능함.
테스트 스위트 조직하기(2/4) 부분 스위트( xUnit에서는 Test selection 사용) 고객 테스트용 단위 테스트용 부분 스위트의 예 DB에 (종속 / 독립)적인 테스트 스위트 웹서버에(종속 / 독립)적인 테스트 스위트
테스트 스위트 조직하기(3/4) 하나의 테스트 실행하기( 상황) 테스트 메소드 하나 실패 모든 테스트에서 실패한 메소드 호출 Break point를 넣고 싶은데…
테스트 스위트 조직하기(4/4) 하나의 테스트 실행하기( 해결책 ) 중단점 호출 될 때까지 Go 원하는 테스트 말고 다른 테스트 이름 다 바꾸기 Test selection ( xUnit ) 최후의 보루, 하나의 테스트만 실행하는 테스트 스위트 작성
테스트 코드 재사용(1/3) 올바른 테스트 코드 재사용  암묵적 설치, 테스트 유틸리티 메소드(760) 테스트 대역(670) – 여러 테스트에서 재사용, 테스트 주체가 아닌 테스트를 도와주는 Helper개념 여러 fixture에서 테스트 메소드 재사용
테스트 코드 재사용(2/3) 테스트 유틸리티 메소드 위치 SUT의 객체 타입에 독립적인 여러 Test case에서 사용 도메인 패키지별Test Helper생성
테스트 코드 재사용(3/3) 테스트 케이스 상속과 재사용 부모 클래스의 테스트 유틸리티 메소드를 사용하기 위한 상속 프레임워크와 프레임워크 플러그인 테스트를 위한 상속
테스트 파일 구성(1/3) 내장 자체 테스트 제품 코드 안에 테스트 코드 포함 불필요한 메모리 공간 소비
테스트 파일 구성(2/3) 테스트 패키지를 제품 패키지와 따로 두는 경우 같은 소스 폴더 + 테스트 패키지 형제 소스 트리 + 같은 패키지 빌드 타임에 테스트 코드를 컴파일 하지 않도록 해야 함.
테스트 파일 구성(3/3) 테스트 의존 제품코드에 테스트를 위한 코드 기계적으로 제거 불가능함 사람이 코드를 확인하면서 지워줘야 함
정리 언제나 통하는 정답은 없다 가이드라인 테스트 메소드: 한번에 하나의 테스트 코드 작성, 순차적인 코드 작성  테스트 케이스 클래스 : 테스트 메소드가 많아지면 클래스로 분리 테스트 이름은 의도가 드러나도록 명확히 작성 테스트 스위트: 목적에 맞게 여러 스위트로 나누어서 작성 테스트 코드 재사용 : 코드 중복  유지보수 비용증가, 테스트 유틸리티 클래스 적극 활용 테스트 파일 구성 : 가급적이면 제품코드에 테스트코드가 들어가지 않도록 배포
끝

Más contenido relacionado

La actualidad más candente

TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기Wonchang Song
 
Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php versionukjinkwoun
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
Check style 기초가이드
Check style 기초가이드Check style 기초가이드
Check style 기초가이드rupert kim
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드SangIn Choung
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
구글테스트
구글테스트구글테스트
구글테스트진화 손
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)SangIn Choung
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리도형 임
 
xUnitTestPattern/chapter9
xUnitTestPattern/chapter9xUnitTestPattern/chapter9
xUnitTestPattern/chapter9명환 안
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)SangIn Choung
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트YongEun Choi
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool재연 김
 
예외처리가이드
예외처리가이드예외처리가이드
예외처리가이드도형 임
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드SangIn Choung
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기Heo Seungwook
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 

La actualidad más candente (20)

TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기TDD.JUnit.조금더.알기
TDD.JUnit.조금더.알기
 
Tobi 스프링 2장 php version
Tobi 스프링 2장   php versionTobi 스프링 2장   php version
Tobi 스프링 2장 php version
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
Check style 기초가이드
Check style 기초가이드Check style 기초가이드
Check style 기초가이드
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
구글테스트
구글테스트구글테스트
구글테스트
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
 
Unit Test With J Unit
Unit Test With J UnitUnit Test With J Unit
Unit Test With J Unit
 
오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리오버라이딩을 사용한 테스트 시의 설정 처리
오버라이딩을 사용한 테스트 시의 설정 처리
 
xUnitTestPattern/chapter9
xUnitTestPattern/chapter9xUnitTestPattern/chapter9
xUnitTestPattern/chapter9
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
 
시작하자 단위테스트
시작하자 단위테스트시작하자 단위테스트
시작하자 단위테스트
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
예외처리가이드
예외처리가이드예외처리가이드
예외처리가이드
 
크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드크로스(멀티)브라우저 테스트수행가이드
크로스(멀티)브라우저 테스트수행가이드
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기C++ 프로젝트에 단위 테스트 도입하기
C++ 프로젝트에 단위 테스트 도입하기
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 

Similar a xUnitTestPattern/chapter12

X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
Test system
Test systemTest system
Test systemMdm0888
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙codevania
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델KU HUISEONG
 
回国去哪买毕业证办迪肯大学毕业证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
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종guest7178884
 
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit TestingYeon Soo Kim
 
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례SangIn Choung
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16suitzero
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구Lim SungHyun
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Jongwon Lee
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나JunHak Kim
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509영석 조
 

Similar a xUnitTestPattern/chapter12 (20)

X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
Test system
Test systemTest system
Test system
 
테스트 자동화의 원칙
테스트 자동화의 원칙테스트 자동화의 원칙
테스트 자동화의 원칙
 
Tdd
TddTdd
Tdd
 
SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델SW 테스트 프로세스& 메뉴얼_V 모델
SW 테스트 프로세스& 메뉴얼_V 모델
 
回国去哪买毕业证办迪肯大学毕业证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) 임성현 책임
 
단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종단위테스트자동화지원도구 임성현 최종
단위테스트자동화지원도구 임성현 최종
 
Cygnus unit test
Cygnus unit testCygnus unit test
Cygnus unit test
 
Android unit testing
Android unit testingAndroid unit testing
Android unit testing
 
Effective Unit Testing
Effective Unit TestingEffective Unit Testing
Effective Unit Testing
 
테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례테스터가 말하는 테스트코드 작성 팁과 사례
테스터가 말하는 테스트코드 작성 팁과 사례
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16
 
(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구(SW 아키텍트 대회 2차)단위테스트자동화도구
(SW 아키텍트 대회 2차)단위테스트자동화도구
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포Istqb 4-테스트설계기법-2015-3-배포
Istqb 4-테스트설계기법-2015-3-배포
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나20130118 토비의 스프링 세미나
20130118 토비의 스프링 세미나
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 

Más de Hyosung Jeon

windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. JobHyosung Jeon
 
9장 도메인 주도 설계
9장 도메인 주도 설계9장 도메인 주도 설계
9장 도메인 주도 설계Hyosung Jeon
 
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)Hyosung Jeon
 
목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동Hyosung Jeon
 

Más de Hyosung Jeon (7)

Nodejs express
Nodejs expressNodejs express
Nodejs express
 
windows via c++ Ch 5. Job
windows via c++ Ch 5. Jobwindows via c++ Ch 5. Job
windows via c++ Ch 5. Job
 
WebGL
WebGLWebGL
WebGL
 
9장 도메인 주도 설계
9장 도메인 주도 설계9장 도메인 주도 설계
9장 도메인 주도 설계
 
Mongo db 복제(Replication)
Mongo db 복제(Replication)Mongo db 복제(Replication)
Mongo db 복제(Replication)
 
Map reduce
Map reduceMap reduce
Map reduce
 
목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동목적이 부여된 에이전트 행동
목적이 부여된 에이전트 행동
 

xUnitTestPattern/chapter12

  • 1. 12장 테스트 조직하기 아키텍트를 꿈꾸는 사람들 오전스터디 2010. 8. 7. 전효성
  • 2. Goal 찾기 쉽고 이해하기 쉬운 테스트 조직하는 법 테스트 메소드 내부 구성 테스트 케이스 클래스 구성 테스트 스위트 구성
  • 3. 테스트 스위트 테스트케이스 클래스 테스트 메소드 기본 xUnit메커니즘 테스팅 자동화 도구 사용시 작업 순서 테스트 찾기(521) 테스트 나열(528) 테스트 스위트 객체 생성(513) 테스트 실행기 (502)로 스위트 객체 메소드 실행 테스트 실행기 테스트 코드
  • 4. 적당한 크기의 테스트 메소드 테스트 조건 = { SUT의 시작 상태, 실행 방법, 기대 응답, 종료 상태 } 테스트 메소드= 여러 테스트 코드를 실행
  • 5. 바람직한 테스트 메소드 순차문, 한번에 하나만, SUT격리 순차문 한번에 하나의 조건만 검증 SUT격리
  • 6. 테스트 메소드 조직 전략(1/4) 현실 문제는 두 부분의 사이 어디쯤에 있다. 하나의 테스트 케이스 클래스에 모든 테스트 메소드 하나의 테스트 케이스 클래스에 오직 하나의 테스트 메소드 VS
  • 7. 테스트 메소드 조직 전략(2/4) 클래스별 테스트케이스 클래스 Testcase Class per Class(497) 테스트 메소드가 늘어나면, 테스트 케이스 클래스로 쪼갠다. Refectoring – Extract class와 유사
  • 8. 테스트 메소드 조직 전략(3/4) 기능별 테스트케이스 클래스 기능 중심으로 테스트 케이스 구성 픽스처setup코드 중복 가능성 있음
  • 9. 테스트 메소드 조직 전략(4/4) 픽스처별 테스트케이스 클래스 같은 선조건을 갖는 집합들이 하나의 클래스 테스트조건들이 흩어질 수 있다.
  • 10. 상황에 따른 테스트 메소드 조직 전략 작업의 시작  하나의 테스트 케이스 클래스에서 시작 후, 테스트 코드 리팩토링 상태가 다양한 객체  픽스처별 테스트케이스 클래스 서비스 퍼사드, 고객 테스트  기능별 테스트 케이스 클래스 미리 만든 픽스처(562), 위임설치(541)로픽스처 설치
  • 11. 테스트 이름 정하기 조합형 이름 테스트 패키지 테스트 케이스 클래스 테스트 메소드 이름 어떤것을 알 수 있나? SUT클래스 이름 실행하려는 메소드나 기능 이름 SUT나 그 SUT의존 객체의 상태 관련된것 그 테스트 케이스에 거는 기대 Should throw something…
  • 12. 테스트 스위트 조직하기(1/4) 특정 부분에 관심이 있는 테스트 집단 이름 있는 테스트 스위트 부분 스위트 모든 테스트 스위트들은AllTests에서 실행 가능함.
  • 13. 테스트 스위트 조직하기(2/4) 부분 스위트( xUnit에서는 Test selection 사용) 고객 테스트용 단위 테스트용 부분 스위트의 예 DB에 (종속 / 독립)적인 테스트 스위트 웹서버에(종속 / 독립)적인 테스트 스위트
  • 14. 테스트 스위트 조직하기(3/4) 하나의 테스트 실행하기( 상황) 테스트 메소드 하나 실패 모든 테스트에서 실패한 메소드 호출 Break point를 넣고 싶은데…
  • 15. 테스트 스위트 조직하기(4/4) 하나의 테스트 실행하기( 해결책 ) 중단점 호출 될 때까지 Go 원하는 테스트 말고 다른 테스트 이름 다 바꾸기 Test selection ( xUnit ) 최후의 보루, 하나의 테스트만 실행하는 테스트 스위트 작성
  • 16. 테스트 코드 재사용(1/3) 올바른 테스트 코드 재사용  암묵적 설치, 테스트 유틸리티 메소드(760) 테스트 대역(670) – 여러 테스트에서 재사용, 테스트 주체가 아닌 테스트를 도와주는 Helper개념 여러 fixture에서 테스트 메소드 재사용
  • 17. 테스트 코드 재사용(2/3) 테스트 유틸리티 메소드 위치 SUT의 객체 타입에 독립적인 여러 Test case에서 사용 도메인 패키지별Test Helper생성
  • 18. 테스트 코드 재사용(3/3) 테스트 케이스 상속과 재사용 부모 클래스의 테스트 유틸리티 메소드를 사용하기 위한 상속 프레임워크와 프레임워크 플러그인 테스트를 위한 상속
  • 19. 테스트 파일 구성(1/3) 내장 자체 테스트 제품 코드 안에 테스트 코드 포함 불필요한 메모리 공간 소비
  • 20. 테스트 파일 구성(2/3) 테스트 패키지를 제품 패키지와 따로 두는 경우 같은 소스 폴더 + 테스트 패키지 형제 소스 트리 + 같은 패키지 빌드 타임에 테스트 코드를 컴파일 하지 않도록 해야 함.
  • 21. 테스트 파일 구성(3/3) 테스트 의존 제품코드에 테스트를 위한 코드 기계적으로 제거 불가능함 사람이 코드를 확인하면서 지워줘야 함
  • 22. 정리 언제나 통하는 정답은 없다 가이드라인 테스트 메소드: 한번에 하나의 테스트 코드 작성, 순차적인 코드 작성 테스트 케이스 클래스 : 테스트 메소드가 많아지면 클래스로 분리 테스트 이름은 의도가 드러나도록 명확히 작성 테스트 스위트: 목적에 맞게 여러 스위트로 나누어서 작성 테스트 코드 재사용 : 코드 중복  유지보수 비용증가, 테스트 유틸리티 클래스 적극 활용 테스트 파일 구성 : 가급적이면 제품코드에 테스트코드가 들어가지 않도록 배포
  • 23.