SlideShare ist ein Scribd-Unternehmen logo
1 von 37
xUnit Test Pattern8장. 1회용 픽스처 관리				20장. 픽스처 설치 패턴 아키텍트를 꿈꾸는 사람들(http://cafe.naver.com/architect1) 현수명  (http://soomong.tistory.com)
[object Object]
 신선한 Fixture 생성
인라인 설치In-line Setup
위임 설치Delegated Setup
암묵적 설치Implicit Setup
1회용 신선한 Fixture 해체
가비지 컬렉션 해체Garbage Collected Teardown,[object Object]
[object Object]
 신선한 Fixture 생성
인라인 설치In-line Setup
위임 설치Delegated Setup
암묵적 설치Implicit Setup
1회용 신선한 Fixture 해체
가비지 컬렉션 해체Garbage Collected Teardown,[object Object]
Test Fixture 용어 Fixture픽스처 픽스처 란 무엇인가요?
Test Fixture 용어 Fixture픽스처 픽스처 란 무엇인가요? 테스트를 반복적으로 수행할 수 있게 도와주고 매번 동일한 결과를 얻을 수 있게 도와주는 ‘기반이 되는 상태나 환경’ 고품질 쾌속개발을 위한  TDD 실천법과 도구 -한빛미디어 일관된 테스트 실행환경이라고도 하며, 때로는 테스트 컨텍스트라 부르기도 한다.  테스트 케이스에서 사용할 객체의 인스턴스를 만든다든가, 데이터베이스와 연동할수있는 참조를 선언한다든가, 파일이나 네트워크 등의 자원을 만들어 지정한다든가 하는 등의 작업 혹은 그 작업의 결과로 만들어진 대상을 통칭한다.
Test Fixture 용어 Fresh Fixture                                            신선한 픽스처 신선한 픽스처란? 각 테스트가 깨끗한 상태의 픽스처를 새로 만들어서 쓰는것 이전에 사용된적이 없는 신선하고 새로운 픽스처
Test Fixture 용어 Fresh Fixture                                            신선한 픽스처 무엇이 1회용 신선한 픽스처인가? 픽스처가 메모리에만 있고, 지역변수나 인스턴스 변수에만 저장돼 있다면 테스트가 끝날때 친절한 가비지 컬렉션 해체가 알아서 없애준다. 픽스처가 지속적이라면 이런일은 일어나지 않는다. 픽스처를 신선하게 유지하는 방법 	1. 테스트가 끝날때마다 픽스처를 해체하는것 	2. 이전 픽스처를 그대로 두고 새로운 픽스처를 충돌하지 않게 만드는것
[object Object]
 신선한 Fixture 생성
인라인 설치In-line Setup
위임 설치Delegated Setup
암묵적 설치Implicit Setup
1회용 신선한 Fixture 해체
가비지 컬렉션 해체Garbage Collected Teardown,[object Object]
Fixture Setup Pattern In-line Setup                                            인라인 설치 How it works 각 테스트 메소드에 필요한 테스트 픽스처를 생성하기 위한 SUT 코드를 직접 호출 2. When to use it - 픽스처 설치 로직이 매우 간단할때 - 테스트를 처음 작성할때라서 아직 픽스처의 어느부분이 계속 반복될지 모를때 - 픽스처 설치 코드를 리팩토링 할때
Fixture Setup Pattern In-line Setup                                            인라인 설치 3. Example Fixture 설치 단점  테스트 코드 중복 -> 깨지기 쉬운 테스트 -> 애매한 테스트 -> 하드 코딩된 테스트 데이터 4. Refactoring notes 리팩토링이 필요하다!
Fixture Setup Pattern Delegated Setup                                            위임 설치 How it works 각 테스트 메소드에서는 하나이상의 생성메소드로 필요한 픽스처를 생성,설치 2. When to use it ,[object Object]
테스트의 의도가 흐트러지는것을 막고 싶을때,[object Object]
Fixture Setup Pattern Delegated Setup                                            위임 설치 5. Example 			Fixture 설치 단점장점 테스트 코드 중복 깨지기 쉬운 테스트 여러 동작 냄새들
Fixture Setup Pattern Creation Method                                            생성 메소드 How it works 객체를 생성하는 함수 변형: 인자를 받는 생성 메소드 변형: 익명 생성 메소드 변형: 인자를 받는 익명 생성 메소드 변형: 이름 있는 상태 도달 메소드 변형: 첨부 메소드 2. When to use it ,[object Object]
시스템의 API 가 자주 바뀔때,[object Object]
Fixture Setup Pattern Creation Method                                            생성 메소드 5.1 Example : 익명 생성 메소드 5.2 Example : 인자를 받는 생성 메소드
Fixture Setup Pattern Creation Method                                            생성 메소드 5.3 Example : 첨부 메소드
Fixture Setup Pattern Creation Method                                            생성 메소드 5.4 Example : 픽스처 설치를 위한 테스트 재사용 다른 테스트 클래스에서 생성메소드를 재사용 할 수 있다
Fixture Setup Pattern Implicit Setup                                            암묵적 설치 How it works 테스트 클래스 안에 있는 setUp메소드를 통해 동일한 신선한 픽스처를 생성한다? setUp() 메소드 ?

Weitere ähnliche Inhalte

Was ist angesagt?

JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개Hyunil Shin
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 SangIn Choung
 
Python Unittest
Python UnittestPython Unittest
Python Unittest명규 최
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven DevelopmentChangHyeon Bae
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)SangIn Choung
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental systemJaehoon Oh
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDSuwon Chae
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)SangIn Choung
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드SangIn Choung
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료Hyosang Hong
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12Hyosung Jeon
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDDSunghyouk Bae
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool재연 김
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해Yong Hoon Kim
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례SangIn Choung
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략SangIn Choung
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)SangIn Choung
 

Was ist angesagt? (20)

X unit 14장
X unit 14장X unit 14장
X unit 14장
 
JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개JUnit 지원 라이브러리 소개
JUnit 지원 라이브러리 소개
 
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드 Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
Postman과 Newman을 이용한 RestAPI 테스트 자동화 가이드
 
Python Unittest
Python UnittestPython Unittest
Python Unittest
 
TDD - Test Driven Development
TDD - Test Driven DevelopmentTDD - Test Driven Development
TDD - Test Driven Development
 
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)[고급과정] 코드 테스트와 커버리지 교육(실습위주)
[고급과정] 코드 테스트와 커버리지 교육(실습위주)
 
Legacy code refactoring video rental system
Legacy code refactoring   video rental systemLegacy code refactoring   video rental system
Legacy code refactoring video rental system
 
TDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDDTDD&Refactoring Day 03: TDD
TDD&Refactoring Day 03: TDD
 
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
사용자 스토리 대상 테스트 설계 사례(테스트기본교육 3장 3절)
 
Rest api 테스트 수행가이드
Rest api 테스트 수행가이드Rest api 테스트 수행가이드
Rest api 테스트 수행가이드
 
Unit Test With J Unit
Unit Test With J UnitUnit Test With J Unit
Unit Test With J Unit
 
Spring 교육 자료
Spring 교육 자료Spring 교육 자료
Spring 교육 자료
 
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12xUnitTestPattern/chapter12
xUnitTestPattern/chapter12
 
테스트자동화와 TDD
테스트자동화와 TDD테스트자동화와 TDD
테스트자동화와 TDD
 
Introduce Katalon tool
Introduce Katalon toolIntroduce Katalon tool
Introduce Katalon tool
 
목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해목 오브젝트(Mock Object)의 이해
목 오브젝트(Mock Object)의 이해
 
오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례오픈 스펙을 대상으로 한 테스트설계사례
오픈 스펙을 대상으로 한 테스트설계사례
 
테스트자동화 성공전략
테스트자동화 성공전략테스트자동화 성공전략
테스트자동화 성공전략
 
Java 기초
Java 기초Java 기초
Java 기초
 
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
(편집-테스트카페 발표자료) 1인 QA 수행사례로 발표한 자료 (W프로젝트 사례)
 

Andere mochten auch

[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술hyun soomyung
 
HTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,AudioHTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,Audiohyun soomyung
 
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 TreeThe Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Treehyun soomyung
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5hyun soomyung
 
The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조hyun soomyung
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Designhyun soomyung
 
프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?hyun soomyung
 
Dependency Breaking Techniques
Dependency Breaking TechniquesDependency Breaking Techniques
Dependency Breaking Techniqueshyun soomyung
 
실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부hyun soomyung
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장hyun soomyung
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)hyun soomyung
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법hyun soomyung
 
Scalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed SystemsScalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed Systemshyun soomyung
 

Andere mochten auch (17)

MapReduce
MapReduceMapReduce
MapReduce
 
[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술[페차쿠차] 배움의 기술
[페차쿠차] 배움의 기술
 
HTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,AudioHTML5 & CSS3 - Video,Audio
HTML5 & CSS3 - Video,Audio
 
Clojure Chapter.6
Clojure Chapter.6Clojure Chapter.6
Clojure Chapter.6
 
The Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 TreeThe Art of Computer Programming 2.3.2 Tree
The Art of Computer Programming 2.3.2 Tree
 
이산수학 Ch.5
이산수학 Ch.5이산수학 Ch.5
이산수학 Ch.5
 
Hybrid app
Hybrid appHybrid app
Hybrid app
 
The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5The Art of Computer Programming 1.2.5
The Art of Computer Programming 1.2.5
 
The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조The Art of Computer Programming 2.4 다중연결구조
The Art of Computer Programming 2.4 다중연결구조
 
Domain Driven Design
Domain Driven DesignDomain Driven Design
Domain Driven Design
 
프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?프로그램은 왜 실패하는가?
프로그램은 왜 실패하는가?
 
Dependency Breaking Techniques
Dependency Breaking TechniquesDependency Breaking Techniques
Dependency Breaking Techniques
 
실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부실전 윈도우 디버깅. Ch3. 디버거 해부
실전 윈도우 디버깅. Ch3. 디버거 해부
 
프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장프로그래머의 길,멘토에게 묻다 2장
프로그래머의 길,멘토에게 묻다 2장
 
5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)5장 그래프의 비밀 (Programming Game AI by Example)
5장 그래프의 비밀 (Programming Game AI by Example)
 
예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법예제로 보는 Pattern 연상법
예제로 보는 Pattern 연상법
 
Scalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed SystemsScalable Web Architecture and Distributed Systems
Scalable Web Architecture and Distributed Systems
 

Ähnlich wie xUnitTestPattern/chapter8

xUnitTestPattern/chapter9
xUnitTestPattern/chapter9xUnitTestPattern/chapter9
xUnitTestPattern/chapter9명환 안
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Daum DNA
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Jaehoon Oh
 
Stonze study week1
Stonze study week1Stonze study week1
Stonze study week1Injae Lee
 
테크데이 발표자료.pptx.pdf
테크데이 발표자료.pptx.pdf테크데이 발표자료.pptx.pdf
테크데이 발표자료.pptx.pdfJihoon Kim
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과도형 임
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션SangIn Choung
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드SangIn Choung
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)SangIn Choung
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사효원 강
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투Ubuntu Korea Community
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2SeungHyun Hwang
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.Ryan Park
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성민욱 이
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스도형 임
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스KTH, 케이티하이텔
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modulesJay Kim
 
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)
PiStage를 활용한  리얼타임 렌더링 워크플로우 (with RTX)PiStage를 활용한  리얼타임 렌더링 워크플로우 (with RTX)
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)YOUNGJO CHO
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16suitzero
 

Ähnlich wie xUnitTestPattern/chapter8 (20)

xUnitTestPattern/chapter9
xUnitTestPattern/chapter9xUnitTestPattern/chapter9
xUnitTestPattern/chapter9
 
Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기Devon 2011-b-5 효과적인 레거시 코드 다루기
Devon 2011-b-5 효과적인 레거시 코드 다루기
 
Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화Robot framework 을 이용한 기능 테스트 자동화
Robot framework 을 이용한 기능 테스트 자동화
 
Stonze study week1
Stonze study week1Stonze study week1
Stonze study week1
 
테크데이 발표자료.pptx.pdf
테크데이 발표자료.pptx.pdf테크데이 발표자료.pptx.pdf
테크데이 발표자료.pptx.pdf
 
자동화된 Test Case의 효과
자동화된 Test Case의 효과자동화된 Test Case의 효과
자동화된 Test Case의 효과
 
테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션테스트수행사례 W통합보안솔루션
테스트수행사례 W통합보안솔루션
 
The Introduction to Refactoring
The Introduction to Refactoring The Introduction to Refactoring
The Introduction to Refactoring
 
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
katalon studio 툴을 이용한 GUI 테스트 자동화 가이드
 
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
애자일과 애자일 테스트 소개 (테스트기본교육 3장 2절)
 
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
 
딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투딥러닝 세계에 입문하기 위반 분투
딥러닝 세계에 입문하기 위반 분투
 
HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2HolubOnPatterns/chapter2_2
HolubOnPatterns/chapter2_2
 
카사 공개세미나1회 W.E.L.C.
카사 공개세미나1회  W.E.L.C.카사 공개세미나1회  W.E.L.C.
카사 공개세미나1회 W.E.L.C.
 
속도의 필요성
속도의 필요성속도의 필요성
속도의 필요성
 
행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스행복한 개발을 위한_테스트_케이스
행복한 개발을 위한_테스트_케이스
 
[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스[H3 2012] 행복한 개발을 위한 테스트 케이스
[H3 2012] 행복한 개발을 위한 테스트 케이스
 
V8 add on with middleware modules
V8 add on with middleware modulesV8 add on with middleware modules
V8 add on with middleware modules
 
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)
PiStage를 활용한  리얼타임 렌더링 워크플로우 (with RTX)PiStage를 활용한  리얼타임 렌더링 워크플로우 (with RTX)
PiStage를 활용한 리얼타임 렌더링 워크플로우 (with RTX)
 
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16xUnitTestPattern/chapter16
xUnitTestPattern/chapter16
 

Mehr von hyun soomyung

아꿈사 매니저소개
아꿈사 매니저소개아꿈사 매니저소개
아꿈사 매니저소개hyun soomyung
 
Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10hyun soomyung
 
The Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALThe Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALhyun soomyung
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)hyun soomyung
 

Mehr von hyun soomyung (6)

아꿈사 매니저소개
아꿈사 매니저소개아꿈사 매니저소개
아꿈사 매니저소개
 
MongoDB
MongoDBMongoDB
MongoDB
 
Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10Design Pattern - Multithread Ch10
Design Pattern - Multithread Ch10
 
The Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXALThe Art of Computer Programming 1.3.2 MIXAL
The Art of Computer Programming 1.3.2 MIXAL
 
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
스터디그룹 패턴 (A PATTERN LANGUAGE FOR STUDY GROUPS)
 
Erlang
ErlangErlang
Erlang
 

Kürzlich hochgeladen

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 

Kürzlich hochgeladen (6)

A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 

xUnitTestPattern/chapter8

  • 1. xUnit Test Pattern8장. 1회용 픽스처 관리 20장. 픽스처 설치 패턴 아키텍트를 꿈꾸는 사람들(http://cafe.naver.com/architect1) 현수명 (http://soomong.tistory.com)
  • 2.
  • 8.
  • 9.
  • 15.
  • 16. Test Fixture 용어 Fixture픽스처 픽스처 란 무엇인가요?
  • 17. Test Fixture 용어 Fixture픽스처 픽스처 란 무엇인가요? 테스트를 반복적으로 수행할 수 있게 도와주고 매번 동일한 결과를 얻을 수 있게 도와주는 ‘기반이 되는 상태나 환경’ 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 일관된 테스트 실행환경이라고도 하며, 때로는 테스트 컨텍스트라 부르기도 한다. 테스트 케이스에서 사용할 객체의 인스턴스를 만든다든가, 데이터베이스와 연동할수있는 참조를 선언한다든가, 파일이나 네트워크 등의 자원을 만들어 지정한다든가 하는 등의 작업 혹은 그 작업의 결과로 만들어진 대상을 통칭한다.
  • 18. Test Fixture 용어 Fresh Fixture 신선한 픽스처 신선한 픽스처란? 각 테스트가 깨끗한 상태의 픽스처를 새로 만들어서 쓰는것 이전에 사용된적이 없는 신선하고 새로운 픽스처
  • 19. Test Fixture 용어 Fresh Fixture 신선한 픽스처 무엇이 1회용 신선한 픽스처인가? 픽스처가 메모리에만 있고, 지역변수나 인스턴스 변수에만 저장돼 있다면 테스트가 끝날때 친절한 가비지 컬렉션 해체가 알아서 없애준다. 픽스처가 지속적이라면 이런일은 일어나지 않는다. 픽스처를 신선하게 유지하는 방법 1. 테스트가 끝날때마다 픽스처를 해체하는것 2. 이전 픽스처를 그대로 두고 새로운 픽스처를 충돌하지 않게 만드는것
  • 20.
  • 26.
  • 27. Fixture Setup Pattern In-line Setup 인라인 설치 How it works 각 테스트 메소드에 필요한 테스트 픽스처를 생성하기 위한 SUT 코드를 직접 호출 2. When to use it - 픽스처 설치 로직이 매우 간단할때 - 테스트를 처음 작성할때라서 아직 픽스처의 어느부분이 계속 반복될지 모를때 - 픽스처 설치 코드를 리팩토링 할때
  • 28. Fixture Setup Pattern In-line Setup 인라인 설치 3. Example Fixture 설치 단점 테스트 코드 중복 -> 깨지기 쉬운 테스트 -> 애매한 테스트 -> 하드 코딩된 테스트 데이터 4. Refactoring notes 리팩토링이 필요하다!
  • 29.
  • 30.
  • 31. Fixture Setup Pattern Delegated Setup 위임 설치 5. Example Fixture 설치 단점장점 테스트 코드 중복 깨지기 쉬운 테스트 여러 동작 냄새들
  • 32.
  • 33.
  • 34. Fixture Setup Pattern Creation Method 생성 메소드 5.1 Example : 익명 생성 메소드 5.2 Example : 인자를 받는 생성 메소드
  • 35. Fixture Setup Pattern Creation Method 생성 메소드 5.3 Example : 첨부 메소드
  • 36. Fixture Setup Pattern Creation Method 생성 메소드 5.4 Example : 픽스처 설치를 위한 테스트 재사용 다른 테스트 클래스에서 생성메소드를 재사용 할 수 있다
  • 37. Fixture Setup Pattern Implicit Setup 암묵적 설치 How it works 테스트 클래스 안에 있는 setUp메소드를 통해 동일한 신선한 픽스처를 생성한다? setUp() 메소드 ?
  • 38. 신선한 Fixture 생성 Test Fixture Method 테스트 픽스처 메소드 Junit 3 - setUp() - tearDown() 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 setUp() testAAA() tearDown() setUp() testBBB() tearDown() … setUp() …… tearDown()
  • 39. 신선한 Fixture 생성 Test Fixture Method 테스트 픽스처 메소드 JUnit 4 - @Before - @BeforeClass - @After - @AfterClass Annotation 애노테이션 마치 주석처럼 @ 기호화 함께 선언적인 형태로 코드에 달려 있는 문장 @BeforeClass 고품질 쾌속개발을 위한 TDD 실천법과 도구 -한빛미디어 @Before @Test @After @Before @Test @After … @Before @Test @After @AfterClass
  • 40. Fixture Setup Pattern Implicit Setup 암묵적 설치 How it works 테스트 클래스 안에 있는 setUp메소드를 통해 동일한 신선한 픽스처를 생성한다! 2. When to use it -같은 테스트 케이스 클래스에 있는 여러 테스트 메소드에서 같은 신선한 픽스처를 필요로 할 때
  • 41. Fixture Setup Pattern Implicit Setup 암묵적 설치 3. Motivating Example 4. Refactoring notes 죄다 메소드 뽑아내기!
  • 42. Fixture Setup Pattern Implicit Setup 암묵적 설치 5. Example setUp() testAAA() tearDown() setUp() testBBB() tearDown() … 단점 테스트 를 이해하기 어렵다 픽스처 안에서 객체를 지역변수에 담을수 없다 setUp() …… tearDown()
  • 43. 신선한 Fixture 생성 설치 메소드의 오용 새 망치가 생기면 전부 못으로 보인다! Fixture Setup Pattern 을 공부했다고 설치 메소드를 남발하면 안좋아요 Setup 메소드에서 최소 픽스쳐가 아닌 일반픽스쳐를 생성한다면 문제가 생길 수 있다. 일반 픽스처는 생성하는데 많은 시간이 필요하기 때문에 느린 테스트의 일반적인 원인이 된다.
  • 44. 신선한 Fixture 생성 혼합형 픽스처 설치 픽스처 설치의 3가지 방법을 서로 철저하게 따로 써야 할 것 같지만 실제로는 이것들을 섞어서 쓸 때 더 가치를 발한다.
  • 45.
  • 51. 가비지 컬렉션 해체Garbage Collected Teardown
  • 52. 1회용 신선한 Fixture 해체 1회용 신선한 픽스처 해체 가비지 컬렉션 해체 픽스처가 지역변수나 인스턴스 변수에만 저장돼 있다면 테스트가 끝날때 친절한 가비지 컬렉션 해체가 알아서 없애준다.
  • 53.
  • 54.
  • 55. Fixture Teardown Pattern Garbage Collected Teardown 가비지 컬렉션 해체 5. Example Garbage Collection
  • 56.
  • 62.