ºÝºÝߣ
Submit Search
xunittestpatternchapter15
1 like
611 views
S
SH Park
1 of 56
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
Ad
Recommended
Effective Unit Testing
Effective Unit Testing
Yeon Soo Kim
Ìý
Effective Unit Testing (ì¼€ì¼) - remarkjs로 작성후 브ë¼ìš°ì €ë¡œ pdf ì¸ì‡„ 기본ì 으로 Effective Unit Testingì„ ë°”íƒ•ìœ¼ë¡œ ë‚´ìš©ì„ ë§Œë“¤ì—ˆê³ , ì¢€ë” ê³µìœ í•˜ê³ ì‹¶ì€ ë‚´ìš©ì— ì‚´ì„ ë¶™ì˜€ìŒ. ì˜ˆì œ 코드는 ì±…ì— ì—†ëŠ”ê±´ ì§ì ‘ 만들어 봤으나 ì˜ë¯¸ê°€ 잘 ì „ë‹¬ë˜ì§€ 않ì„수는 ìžˆë‹¤ê³ ìƒê°í•¨. 깨ë—한 테스트 ì›ì¹™ì€ 'í´ë¦°ì½”드' ì±…ì— ë‚˜ì˜¤ëŠ” 내용임.
TDD with JUnit 2
TDD with JUnit 2
Junyoung Lee
Ìý
TDD with JUnit 2 We are the Java Experts 스터디 ìžë£Œ
xUnitTestPattern/chapter16
xUnitTestPattern/chapter16
suitzero
Ìý
TDD - Test Driven Development
TDD - Test Driven Development
ChangHyeon Bae
Ìý
TDD 테스트 ì£¼ë„ ê°œë°œì´ë©°, í•˜ë‚˜ì˜ ê°œë°œ ë°©ë²•ë¡ ìž…ë‹ˆë‹¤. - TDD는 반복 í…ŒìŠ¤íŠ¸ì„ ì´ìš©í•œ 소프트웨어 개발법ì´ë‹¤. ìž‘ì€ ë‹¨ìœ„ì˜ í…ŒìŠ¤íŠ¸ ì¼€ì´ìŠ¤ë¥¼ ìž‘ì„±í•˜ê³ ì´ë¥¼ 통과하는 코드를 추가하는 단계를 반복하여 소프트웨어를 구현한다. - TDDì˜ ëª©í‘œëŠ” ìž‘ë™í•˜ëŠ” ê¹”ë”한 코드 “Clean code that works†- TDD는 아래 ë‹¨ê³„ì˜ ë°˜ë³µìœ¼ë¡œ ì§„í–‰ëœë‹¤. 빨강 : 실패하는 ìž‘ì€ í…ŒìŠ¤íŠ¸ ì¼€ì´ìŠ¤ë¥¼ 작성한다. 처ìŒì—는 컴파ì¼ì¡°ì°¨ 안ë 수 있다. ì´ˆë¡ : 테스트를 통과하는 코드를 작성한다. ë¦¬íŽ™í„°ë§ : 테스트를 통과하기 위해 ë§Œë“ ì½”ë“œì˜ ëª¨ë“ ì¤‘ë³µì„ ì œê±°í•˜ê³ , 불명확한 ê²ƒì„ ëª…í™•ížˆ 한다. ì´ëŸ¬í•œ 단계로 ì¸í•´ TDD는 “업무 코드 작성 ì „ì— í…ŒìŠ¤íŠ¸ 코드를 ë¨¼ì € 만드는 것â€ìœ¼ë¡œ ì •ì˜ë˜ê¸°ë„ 한다
목 오브ì 트(Mock Object)ì˜ ì´í•´
목 오브ì 트(Mock Object)ì˜ ì´í•´
Yong Hoon Kim
Ìý
ì±… 가격 계산기 ì˜ˆì œ 프로ì 트를 통해 목 오브ì 트(Mock Object)를 ì´í•´í•˜ê³ í™œìš©í•˜ëŠ”ë° ì£¼ì•ˆì ì„ ë‘”ë‹¤.
Effective unit testing - 좋은á„ᅦ스á„á…³ 요약
Effective unit testing - 좋은á„ᅦ스á„á…³ 요약
YongEun Choi
Ìý
5장. 그래프와 트리 (3,4)
5장. 그래프와 트리 (3,4)
SH Park
Ìý
Design Pattern In Functional Language
Design Pattern In Functional Language
SH Park
Ìý
PrimesIsInP
PrimesIsInP
SH Park
Ìý
Introduction to prolog
Introduction to prolog
SH Park
Ìý
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
SH Park
Ìý
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
SH Park
Ìý
Apprenticeship patterns chapter4
Apprenticeship patterns chapter4
SH Park
Ìý
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
hyun soomyung
Ìý
2010ë…„ 아꿈사 스터디 http://cafe.naver.com/architect1 í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다. 2장.
Nodejs_chapter9
Nodejs_chapter9
SH Park
Ìý
NodeJS 9장 디버깅
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
Jongwon Lee
Ìý
소프트웨어테스팅 2장 ê°•ì˜ë…¸íЏ
테스트 ìžë™í™”ì˜ ì›ì¹™
테스트 ìžë™í™”ì˜ ì›ì¹™
codevania
Ìý
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
Yoon Hee Hwang
Ìý
xUnitTestPattern/chapter9
xUnitTestPattern/chapter9
명환 안
Ìý
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
Jongwon Lee
Ìý
소프트웨어 테스팅 1장 ê°•ì˜ë…¸íЏ
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
Ryan Park
Ìý
KGC2010 ì—서 ë°œí‘œí–ˆë˜ 'ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기' 입니다.
아꿈사.C++ api ë””ìžì¸.20140315 a
아꿈사.C++ api ë””ìžì¸.20140315 a
Choonghyun Yang
Ìý
C++ API ê°€ì´ë“œ chap.10 테스트 아꿈사 오후반 스터디 발표 ìžë£Œ
Istqb 5-테스트관리-2015-ë°°í¬
Istqb 5-테스트관리-2015-ë°°í¬
Jongwon Lee
Ìý
ISTQB CTFL v2011 Ch5. Test Management
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
Mijeong Park
Ìý
Women Techmakers Korea 2018 ì—서 ë°œí‘œí–ˆë˜ ìžë£Œë¥¼ ê³µìœ í•©ë‹ˆë‹¤. 첫 번째, ëŠìž„ì—†ì´ ê³µë¶€í•´ì•¼í•˜ëŠ” ì—”ì§€ë‹ˆì–´ì˜ ê³µë¶€ ì´ìœ ë° ë°©ë²•ì— ëŒ€í•´ ê³ ë¯¼í–ˆë˜ ë‚´ìš©ì„ ê³µìœ í•©ë‹ˆë‹¤. ë‘ ë²ˆì§¸, 테스트 ì½”ë“œì— ëŒ€í•œ ê°œì¸ì ì¸ ì˜ê²¬ê³¼ 사례를 ê³µìœ í•©ë‹ˆë‹¤.
xUnitTestPattern/chapter6
xUnitTestPattern/chapter6
성우 김
Ìý
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
Wonchang Song
Ìý
Effective Unit Testing
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
Jongwon Lee
Ìý
ISTQB 1장 요약
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
용근 권
Ìý
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ. "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
íš¨ì› ê°•
Ìý
테스트 냄새
테스트 냄새
SukYun Yoon
Ìý
andstudy study
More Related Content
Viewers also liked
(7)
PrimesIsInP
PrimesIsInP
SH Park
Ìý
Introduction to prolog
Introduction to prolog
SH Park
Ìý
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
SH Park
Ìý
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
SH Park
Ìý
Apprenticeship patterns chapter4
Apprenticeship patterns chapter4
SH Park
Ìý
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
hyun soomyung
Ìý
2010ë…„ 아꿈사 스터디 http://cafe.naver.com/architect1 í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다. 2장.
Nodejs_chapter9
Nodejs_chapter9
SH Park
Ìý
NodeJS 9장 디버깅
PrimesIsInP
PrimesIsInP
SH Park
Ìý
Introduction to prolog
Introduction to prolog
SH Park
Ìý
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
4장 스í¬ì¸ ì‹œë®¬ë ˆì´ì…˜ - 단순 축구
SH Park
Ìý
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
ë„ë©”ì¸ ì£¼ë„ ì„¤ê³„ - 16 대규모 구조
SH Park
Ìý
Apprenticeship patterns chapter4
Apprenticeship patterns chapter4
SH Park
Ìý
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
í”„ë¡œê·¸ëž˜ë¨¸ì˜ ê¸¸,ë©˜í† ì—게 묻다 2장
hyun soomyung
Ìý
Nodejs_chapter9
Nodejs_chapter9
SH Park
Ìý
Similar to xunittestpatternchapter15
(20)
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
Jongwon Lee
Ìý
소프트웨어테스팅 2장 ê°•ì˜ë…¸íЏ
테스트 ìžë™í™”ì˜ ì›ì¹™
테스트 ìžë™í™”ì˜ ì›ì¹™
codevania
Ìý
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
Yoon Hee Hwang
Ìý
xUnitTestPattern/chapter9
xUnitTestPattern/chapter9
명환 안
Ìý
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
Jongwon Lee
Ìý
소프트웨어 테스팅 1장 ê°•ì˜ë…¸íЏ
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
Ryan Park
Ìý
KGC2010 ì—서 ë°œí‘œí–ˆë˜ 'ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기' 입니다.
아꿈사.C++ api ë””ìžì¸.20140315 a
아꿈사.C++ api ë””ìžì¸.20140315 a
Choonghyun Yang
Ìý
C++ API ê°€ì´ë“œ chap.10 테스트 아꿈사 오후반 스터디 발표 ìžë£Œ
Istqb 5-테스트관리-2015-ë°°í¬
Istqb 5-테스트관리-2015-ë°°í¬
Jongwon Lee
Ìý
ISTQB CTFL v2011 Ch5. Test Management
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
Mijeong Park
Ìý
Women Techmakers Korea 2018 ì—서 ë°œí‘œí–ˆë˜ ìžë£Œë¥¼ ê³µìœ í•©ë‹ˆë‹¤. 첫 번째, ëŠìž„ì—†ì´ ê³µë¶€í•´ì•¼í•˜ëŠ” ì—”ì§€ë‹ˆì–´ì˜ ê³µë¶€ ì´ìœ ë° ë°©ë²•ì— ëŒ€í•´ ê³ ë¯¼í–ˆë˜ ë‚´ìš©ì„ ê³µìœ í•©ë‹ˆë‹¤. ë‘ ë²ˆì§¸, 테스트 ì½”ë“œì— ëŒ€í•œ ê°œì¸ì ì¸ ì˜ê²¬ê³¼ 사례를 ê³µìœ í•©ë‹ˆë‹¤.
xUnitTestPattern/chapter6
xUnitTestPattern/chapter6
성우 김
Ìý
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
Wonchang Song
Ìý
Effective Unit Testing
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
Jongwon Lee
Ìý
ISTQB 1장 요약
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
용근 권
Ìý
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ. "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
íš¨ì› ê°•
Ìý
테스트 냄새
테스트 냄새
SukYun Yoon
Ìý
andstudy study
『Effective Unit Testing〠- 맛보기
『Effective Unit Testing〠- 맛보기
복연 ì´
Ìý
ë¼ìŽ„ ì½”ìŠ¤ì¼ˆë¼ ì§€ìŒ | ì´ë³µì—° 옮김 | 한빛미디어 | 2013ë…„ 11ì›” | 25,000ì› ì˜ˆìŠ¤24: http://www.yes24.com/24/goods/1136108 테스트 ë¼ì´ë¸ŒëŸ¬ë¦¬ 사용법ì—서 나아가 â€˜ì¢‹ì€ í…ŒìŠ¤íŠ¸ëž€ 무엇ì¸ê°€â€™, â€˜ì¢‹ì€ í…ŒìŠ¤íŠ¸ë¥¼ ìž‘ì„±í•˜ë ¤ë©´ 어떻게 해야 í•˜ëŠ”ê°€â€™ì— ê´€í•œ í˜„ìž¥ì˜ ë¬¼ìŒì— í•´ë‹µì„ ì œì‹œí•œë‹¤. 테스트가 갖춰야 í• ìš”ê±´ì— ë”°ë¼ ë‚˜ëˆˆ 테스트 카탈로그가 수ë¡ë˜ì–´, í•„ìš”í• ë•Œë§ˆë‹¤ ì›í•˜ëŠ” 목ë¡ì„ ì°¸ê³ í•˜ì—¬ ìžì‹ ì´ ìž‘ì„±í•œ 테스트ì—서 ë¬¸ì œë¥¼ ë°œê²¬í•˜ê³ ìˆ˜ì •í•´ 나갈 수 있으며 ë”ìš± ì‘ìš©ë ¥ ë†’ì€ í•™ìŠµì„ í• ìˆ˜ 있다.
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12
Hyosung Jeon
Ìý
testing for agile?, agile for testing
testing for agile?, agile for testing
SangIn Choung
Ìý
ì• ìžì¼ì„ 위한 테스트?, 테스트를 위한 ì• ìžì¼ì´ë¼ëŠ” í† í”½ìœ¼ë¡œ 프랙티스와 ì‚¬ë¡€ì— ëŒ€í•œ 글입니다
구글테스트
구글테스트
ì§„í™” ì†
Ìý
구글 테스트 ì‚¬ìš©ë²•ì„ ê°„ë‹¨í•˜ê²Œ ì •ë¦¬í–ˆìŠµë‹ˆë‹¤.
[H3 2012] 행복한 ê°œë°œì„ ìœ„í•œ 테스트 ì¼€ì´ìФ
[H3 2012] 행복한 ê°œë°œì„ ìœ„í•œ 테스트 ì¼€ì´ìФ
KTH, ì¼€ì´í‹°í•˜ì´í…”
Ìý
H3 2012 발표ìžë£Œ 행복한 ê°œë°œì„ ìœ„í•œ 테스트 ì¼€ì´ìФ -KTH ìž„ë„형
Istqb 2-소프트웨어수명주기와테스팅-2015
Istqb 2-소프트웨어수명주기와테스팅-2015
Jongwon Lee
Ìý
테스트 ìžë™í™”ì˜ ì›ì¹™
테스트 ìžë™í™”ì˜ ì›ì¹™
codevania
Ìý
xUnitTestPattern/chapter17
xUnitTestPattern/chapter17
Yoon Hee Hwang
Ìý
xUnitTestPattern/chapter9
xUnitTestPattern/chapter9
명환 안
Ìý
Istqb 1-소프트웨어테스팅기초-2015
Istqb 1-소프트웨어테스팅기초-2015
Jongwon Lee
Ìý
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
KGC2010 - ë‚¡ì€ ì½”ë“œì— ë‹¨ìœ„í…ŒìŠ¤íŠ¸ 넣기
Ryan Park
Ìý
아꿈사.C++ api ë””ìžì¸.20140315 a
아꿈사.C++ api ë””ìžì¸.20140315 a
Choonghyun Yang
Ìý
Istqb 5-테스트관리-2015-ë°°í¬
Istqb 5-테스트관리-2015-ë°°í¬
Jongwon Lee
Ìý
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
ì—”ì§€ë‹ˆì–´ì˜ í•™ìŠµ, ê·¸ë¦¬ê³ í…ŒìŠ¤íŠ¸ 코드
Mijeong Park
Ìý
xUnitTestPattern/chapter6
xUnitTestPattern/chapter6
성우 김
Ìý
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
°Õ¶Ù¶Ù.´³±«²Ô¾±³Ù.조금ë”.알기
Wonchang Song
Ìý
Istqb 1-소프트웨어테스팅기초
Istqb 1-소프트웨어테스팅기초
Jongwon Lee
Ìý
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
KSUG 스프ë§ìº 프 2019 발표ìžë£Œ - "ë¬´ì—‡ì„ í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€, 어떻게 í…ŒìŠ¤íŠ¸í• ê²ƒì¸ê°€"
용근 권
Ìý
X unittestpattern 1장_아꿈사
X unittestpattern 1장_아꿈사
íš¨ì› ê°•
Ìý
테스트 냄새
테스트 냄새
SukYun Yoon
Ìý
『Effective Unit Testing〠- 맛보기
『Effective Unit Testing〠- 맛보기
복연 ì´
Ìý
xUnitTestPattern/chapter12
xUnitTestPattern/chapter12
Hyosung Jeon
Ìý
testing for agile?, agile for testing
testing for agile?, agile for testing
SangIn Choung
Ìý
구글테스트
구글테스트
ì§„í™” ì†
Ìý
[H3 2012] 행복한 ê°œë°œì„ ìœ„í•œ 테스트 ì¼€ì´ìФ
[H3 2012] 행복한 ê°œë°œì„ ìœ„í•œ 테스트 ì¼€ì´ìФ
KTH, ì¼€ì´í‹°í•˜ì´í…”
Ìý
Ad
xunittestpatternchapter15
1.
xUnit Test Pattern 15장.
코드 냄새 ë°•ìƒí˜ http://pixelmine.tistory.com 아꿈사 http://andstudy.com
2.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
3.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
4.
ì• ë§¤í•œ 테스트(Obscure Test)
테스트를 한 ëˆˆì— ì´í•´í•˜ê¸° ì–´ë µë‹¤ 긴 테스트, 복잡한 테스트, 장황한 테스트 ìžë™í…ŒìŠ¤íŠ¸ì˜ ëª©í‘œ 1. SUTê°€ 어떻게 ë™ìž‘해야 í•˜ëŠ”ê°€ì— ëŒ€í•œ 문서ì—í• 2. 실행해볼 수 있는 ìžì²´ ê²€ì¦ ëª…ì„¸ 테스트를 ì‹¤í–‰í• ìˆ˜ 있게 구현하다 ë³´ë©´ 복잡해지기 ë•Œë¬¸ì— ì´ ë‘ ê°€ì§€ 목표를 ë™ì‹œì— 만족하기 ì–´ë µë‹¤.
5.
ì• ë§¤í•œ 테스트(Obscure Test)
욕심ìŸì´ 테스트 í•˜ë‚˜ì˜ ë©”ì†Œë“œì—서 너무 ë§Žì€ ê¸°ëŠ¥ì„ ê²€ì¦í•˜ë ¤ëŠ” 테스트 미스터리한 ì†ë‹˜ 픽스처와 ê²€ì¦ë¡œì§ê°„ì˜ ì¸ê³¼ 관계가 ë³´ì´ì§€ 않는 테스트 ì¼ë°˜ 픽스처 기능 ê²€ì¦ì— í•„ìš” ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ ìƒì„±í•˜ê±°ë‚˜ 참조한다 ê´€ë ¨ 없는 ì •ë³´ ì •ë³´ê°€ 너무 ë§Žì•„ ì‹¤ì œ ë™ìž‘ì— ì˜í–¥ì„ 미치는 ê²ƒì´ ë¬´ì—‡ì¸ì§€ 파악하기 힘들다 í•˜ë“œì½”ë”©ëœ í…ŒìŠ¤íŠ¸ ë°ì´í„° ë°ì´í„° ê°’ì´ í•˜ë“œ ì½”ë”©ë¼ ìžˆì–´ ìž…ë ¥ê³¼ 기대 결과값 사ì´ì˜ ì¸ê³¼ 관계가 ì• ë§¤í•˜ë‹¤ ê°„ì ‘ 테스팅 테스트 메소드와 SUTê°€ 다른 ê°ì²´ë¥¼ 통해 ê°„ì ‘ì 으로 ìƒí˜¸ìž‘용한다
6.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
7.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 욕심ìŸì´ 테스트(Eager Test) ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
8.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 미스터리한 ì†ë‹˜(Mystery Guest) ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
9.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 ì¼ë°˜ 픽스처(General Fixture) ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
10.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 ê´€ë ¨ 없는 ì •ë³´(Irrelevant Information) ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
11.
ì• ë§¤í•œ 테스트(Obscure Test)
ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 하드 ì½”ë”©ëœ í…ŒìŠ¤íŠ¸ ë°ì´í„°(Hard-Coded Test Data) ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
12.
ì• ë§¤í•œ 테스트(Obscure Test)
• ì¦ìƒ : 테스트ì—서 ê²€ì¦í•˜ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° 힘들다 ê°„ì ‘ 테스팅(Indirect Testing) – ì´ê²ƒ ì €ê²ƒ '없는 ê±° ë¹¼ê³ ì „ë¶€ 다' ê²€ì¦í•œë‹¤ – 어디까지가 픽스처 설치ì¸ì§€, 어디서부터 SUT실행부ì¸ì§€ 알기 ì–´ë µë‹¤ – 픽스처 설치나 ê²°ê³¼ ê²€ì¦ë¶€ê°€ 테스트ì—서 ë³¼ 수 없는 ì •ë³´ì— ì˜ì¡´í•œë‹¤ – 외부 ì •ë³´ë¥¼ 찾지 ì•Šê³ ëŠ” ë™ìž‘ì„ ì´í•´í•˜ê¸° ì–´ë µë‹¤ – í•„ìš”ì´ìƒìœ¼ë¡œ í° í”½ìŠ¤ì²˜ë¥¼ 구축한다 – '픽스처-SUT실행-결과값' 사ì´ì˜ ì¸ê³¼ê´€ê³„ íŒŒì•…ì´ íž˜ë“¤ë‹¤ – ê°ì²´ì— ì „ë‹¬ë˜ëŠ” ê°’ 중 ë¬´ì—‡ì´ ê¸°ëŒ€ì¶œë ¥ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ – 픽스처 설치 로ì§ì´ ê¸¸ê³ , ë¬´ì—‡ì„ ê²€ì¦í•˜ë ¤ëŠ”ì§€ 알기 ì–´ë µë‹¤ – 테스트 ê²€ì¦ ì½”ë“œê°€ 복잡하다 – í•˜ë“œì½”ë”©ëœ ê°’ì´ ì–´ë–»ê²Œ 서로 ê´€ë ¨ë˜ì–´ 있는지 알기 ì–´ë µë‹¤ – ì–´ë–¤ ê°’ë“¤ì´ SUTì˜ ë™ìž‘ì— ì˜í–¥ì„ 주는지 알기 ì–´ë µë‹¤ – ê²€ì¦í•´ì•¼ 하는 ê°ì²´ê°€ 아닌 다른 ê°ì²´ì™€ 주로 ìƒí˜¸ìž‘용한다
13.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
14.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ 욕심ìŸì´ 테스트(Eager Test) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
15.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ 미스터리한 ì†ë‹˜(Mystery Guest) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
16.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ ì¼ë°˜ 픽스처(General Fixture) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
17.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ ê´€ë ¨ 없는 ì •ë³´(Irrelevant Information) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
18.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ 하드 ì½”ë”©ëœ í…ŒìŠ¤íŠ¸ ë°ì´í„°(Hard-Coded Test Data) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸 때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
19.
ì• ë§¤í•œ 테스트(Obscure Test)
미치는 ì˜í–¥ ê°„ì ‘ 테스팅(Indirect Testing) ì´í•´í•˜ê¸° íž˜ë“¤ê³ ìœ ì§€ë³´ìˆ˜ê°€ ì–´ë µë‹¤ ë¬¸ì„œë¡œì„œì˜ í…ŒìŠ¤íŠ¸ë¥¼ 만들기 ì–´ë µë‹¤ 테스트 ìœ ì§€ë¹„ìš© ìƒìŠ¹í•œë‹¤ 버그 íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ëœë‹¤ 테스트 디버깅 ë°ì´í„°ë¥¼ 잃게 ëœë‹¤ 픽스처와 기대결과 사ì´ì˜ ì¸ê³¼ê´€ê³„를 알기 ì–´ë µë‹¤ ë³€ë•스러운 테스트가 ìƒê¸´ë‹¤ ê° í…ŒìŠ¤íŠ¸ì—서 픽스처를 어떻게 사용하는지 ì´í•´í•˜ê¸° 힘들다 깨지기 쉬운 픽스ì³ê°€ ëœë‹¤ ëŠë¦° 테스트가 ë 수 있다 ê³µìœ í”½ìŠ¤ì²˜ë¥¼ 쓸때 다른 테스트ì—서 ê°™ì€ ê°’ì„ ì“°ëŠ” 경우 ì¶©ëŒì´ ìƒê¸´ë‹¤ 깨지기 쉬운 테스트가 ëœë‹¤ ëª¨ë“ ê³³ì„ í…ŒìŠ¤íŠ¸ 하기 불가능하다
20.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ – 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
21.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ 욕심ìŸì´ 테스트(Eager Test) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
22.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ 미스터리한 ì†ë‹˜(Mystery Guest) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ SUT ë©”ì†Œë“œì— ì „ë‹¬ë˜ëŠ” 외부 파ì¼ì˜ ë‚´ìš©ì´ SUTì˜ ì—¬ëŸ¬ 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 ê²°ì • ë™ìž‘ì„ ë¦¬í„°ëŸ´í‚¤ë¡œ ì‹ë³„ë˜ëŠ” DB ë ˆì½”ë“œë¥¼ ì½ì–´ ê°ì²´ì— ì“´ ë’¤ 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 테스트ì—서 사용하거나 SUTì— ì „ë‹¬ ì´ë¥¼ ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 파ì¼ì—서 ì½ì–´ë“¤ì¸ ë‚´ìš©ì„ ê¸°ëŒ€ê²°ê³¼ê°’ì„ ê²€ì¦í•˜ëŠ” 단 ì–¸ 메소드 í˜¸ì¶œì— ì‚¬ìš© ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 설치 ë°ì½”ë ˆì´í„°ë¡œ ê³µìœ í”½ìŠ¤ì²˜ë¥¼ ë§Œë“¤ê³ ê²°ê³¼ ê²€ì¦ í…ŒìŠ¤íŠ¸ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 로ì§ì—서는 ê³µìœ í”½ìŠ¤ì²˜ì˜ ê°ì²´ë“¤ì„ 변수로 참조 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤ 설치로 ì¼ë°˜ 픽스처를 ì„¤ì¹˜í•˜ê³ í…ŒìŠ¤íŠ¸ 메소 암묵ì 드ì—서 ì¸ìŠ¤í„´ìŠ¤ 변수나 í´ëž˜ìФ 변수로 ì ‘ê·¼
23.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ ì¼ë°˜ 픽스처(General Fixture) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
24.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ ê´€ë ¨ 없는 ì •ë³´(Irrelevant Information) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
25.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ 하드 ì½”ë”©ëœ í…ŒìŠ¤íŠ¸ ë°ì´í„°(Hard-Coded Test Data) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
26.
ì• ë§¤í•œ 테스트(Obscure Test)
ì›ì¸ ê°„ì ‘ 테스팅(Indirect Testing) 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 많다 테스트 ë©”ì†Œë“œì— ì •ë³´ê°€ 너무 ì 다 코드를 ê¹”ë”í•˜ê³ ê°„ë‹¨í•˜ê²Œ ìœ ì§€í•˜ë ¤ëŠ” ì˜ì§€ê°€ 없다 코드를 '그냥 ì¸ë¼ì¸ìœ¼ë¡œ' 작성한다 테스트가 외부ìžì›ì— ì˜ì¡´í•œë‹¤ 여러 테스트를 ì§€ì›í•˜ëŠ” 픽스처를 쓴다 테스테 ìƒê´€ì—†ëŠ” 리터럴 ê°’ì´ ë„ˆë¬´ 많다 ì ˆì°¨í˜• ìƒíƒœ ê²€ì¦ì„ 쓴다 ìž˜ë¼ ë¶™ì—¬ë„£ê¸°ë¡œ 테스트 로ì§ì„ 재사용한다 테스트ì—서 ì ‘ê·¼í•˜ë ¤ëŠ” í´ëž˜ìŠ¤ì˜ SUTë¶€ë¶„ì´ privateì´ë‹¤ 테스트 ìš©ì´ì„±ì„ ìƒê°í•˜ì§€ ì•Šê³ ì„¤ê³„í–ˆë‹¤
27.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
28.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… 욕심ìŸì´ 테스트(Eager Test) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
29.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… 미스터리한 ì†ë‹˜(Mystery Guest) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ìž˜ 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
30.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… ì¼ë°˜ 픽스처(General Fixture) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
31.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… ê´€ë ¨ 없는 ì •ë³´(Irrelevant Information) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
32.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… 하드 ì½”ë”©ëœ í…ŒìŠ¤íŠ¸ ë°ì´í„°(Hard-Coded Test Data) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
33.
ì• ë§¤í•œ 테스트(Obscure Test)
í•´ê²°ì±… ê°„ì ‘ 테스팅(Indirect Testing) ë” ì¢‹ì€ ê²°í•¨ êµì†Œí™”를 ì œê³µí•˜ëŠ” ë…립ì ì¸ ë‹¨ì¼ ì¡°ê±´ 테스트 스위트로 ë§Œë“ ë‹¤ ì¸ë¼ì¸ 설치로 ì‹ ì„ í•œ 픽스처를 쓴다 픽스처 ì•ˆì˜ ê°ì²´ë“¤ì— 찾기메소드로 ì ‘ê·¼í•˜ëŠ” ê²ƒì„ ê³ ë ¤í•´ë³´ìž íŒŒì¼ ì´ë¦„ì„ ì 당히 붙여 ì•ˆì— ì–´ë–¤ ë°ì´í„°ê°€ 들어있는지 ì§ìž‘í• ìˆ˜ 있게 해준다 최소 픽스처, ì‹ ì„ í•œ 픽스처 사용 테스트별로 ê°€ìƒì˜ ë°ì´í„°ë² ì´ìФ 샌드박스를 ë§Œë“ ë‹¤ ê´€ë ¨ 있는 ì •ë³´ë§Œ ì¸ìžë¡œ 받는 ì¸ìžë¥¼ 받는 ìƒì„± 메소드 호출 설치부와 ê²€ì¦ë¶€ì— 필요한 픽스처 ê°’ì„ ì 당히 초기화한 ìƒìˆ˜ë¡œ 바꾼다 ê²°ê³¼ ê²€ì¦ ë¡œì§ì—서 기대 ê°ì²´ë¡œ í•œë²ˆì— ë‹¨ì–¸í•œë‹¤ 복잡한 ì ˆì°¨ì ê²€ì¦ë¡œì§ì„ 숨기는 맞춤 단언문 사용 리터럴 ìƒìˆ˜ë¥¼ 다른 걸로 바꿔준다 ë³„ê°œì˜ ìƒì„±ê°’ì„ ì¨ì„œ 테스트가 실행ë 때마다 다른 ê°’ì„ ì“°ê²Œ 보장해줘야 한다 SUTì˜ í…ŒìŠ¤íŠ¸ ìš©ì´ì„±ì„ 위한 설계를 ê°œì„ SUT를 ê°„ì ‘ì 으로 ì ‘ê·¼í•´ì•¼ë§Œ 한다면 SUT API 캡ìŠí™” 사용
34.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
35.
테스트 내 조건문
로ì§(Conditional Test Logic) í…ŒìŠ¤íŠ¸ì— ì‹¤í–‰ 안 ë ìˆ˜ë„ ìžˆëŠ” 코드가 있다 ë“¤ì‘¥ë‚ ì‘¥í•œ 테스트 코드 ì™„ì „ ìžë™ 테스트는 다른 ì½”ë“œì˜ ë™ìž‘ì„ ê²€ì¦í•˜ëŠ” 코드다 ì™„ì „ ìžë™ 테스트 코드가 복잡하다면......? 테스트를 위한 테스트......? 테스트가 í•„ìš”ì—†ì„ ì •ë„로 단순하게 만드는 ê²ƒì´ ì •ë‹µ 테스트 ë‚´ 조건문 로ì§ì€ í•„ìš” ì´ìƒìœ¼ë¡œ 테스트를 복잡하게 만드 는 ìš”ì¸ ì¤‘ 하나다
36.
테스트 내 조건문
로ì§(Conditional Test Logic) ìœ ì—°í•œ 테스트 ì–¸ì œ 어디서 실행ë˜ëŠëƒì— ë”°ë¼ ë‹¤ë¥¸ ê¸°ëŠ¥ì„ ê²€ì¦í•˜ëŠ” 테스트 ê²€ì¦ ì¡°ê±´ë¬¸ ë¡œì§ ê¸°ëŒ€ ê²°ê³¼ ê²€ì¦ì— 조건문 사용 테스트 ë‚´ ì œí’ˆ ë¡œì§ ë³µìž¡í•œ í•´ì²´ 여러 테스트 ì¡°ê±´
37.
테스트 내 조건문
로ì§(Conditional Test Logic) ì¦ìƒ : 테스트 코드 ë‚´ì— ë°˜ë³µë¬¸ì´ë‚˜ ì¡°ê±´ë¬¸ì´ ìžˆë‹¤ 테스트가 ìƒí™©ì— ë”°ë¼ ë‹¤ë¥¸ ì¼ì„ í• ìˆ˜ 있게 조건문 로ì§ì´ 들어 있다 í…ŒìŠ¤íŠ¸ì˜ ê²°ê³¼ ê²€ì¦ë¶€ì— 조건문 로ì§ì´ 들어있다 픽스처 í•´ì²´ 코드가 복잡하다 여러 ìž…ë ¥ê°’ê³¼ ê·¸ 기대 ê²°ê³¼ê°’ì— ê°™ì€ í…ŒìŠ¤íŠ¸ ë¡œì§ ì ìš©
38.
테스트 내 조건문
로ì§(Conditional Test Logic) 미치는 ì˜í–¥ 테스트 코드ì—서 ë¬´ì—‡ì„ í•˜ëŠ”ì§€ 알기 ì–´ë µë‹¤ 테스트가 ê²°ì •ë¡ ì ì´ì§€ 않아 디버깅하기 ì–´ë µë‹¤ ì–´ë ¤ìš´ ìž‘ì—…ì— ëŒ€í•´ 테스트를 ì •í™•í•˜ê²Œ 작성하기 ì–´ë µë‹¤ 테스트가 ì´í•´í•˜ê¸° ì–´ë ¤ì›Œ ìœ ì§€ë³´ìˆ˜ê°€ 힘들다 ëª¨ë“ ì œì–´ê²½ë¡œê°€ 테스트 ë˜ì—ˆëŠ”ì§€ 알 수 없다
39.
테스트 내 조건문
로ì§(Conditional Test Logic) ì›ì¸ SUTê°€ 올바른 ë°ì´í„°ë¥¼ 반환하지 ì•Šì•˜ì„ ë•Œì˜ if문 처리 여러 ê°ì œë¥¼ í•œêº¼ë²ˆì— ê²€ì¦í•˜ê¸° 위해 반복문 사용 복잡한 ê°ì²´ë‚˜ 다형성 ë°ì´í„° 구조를 ê²€ì¦ í…ŒìŠ¤íŠ¸ 픽스처나 기대 ê°ì²´ 초기화시 í•˜ë‚˜ì˜ í…ŒìŠ¤íŠ¸ì—서 여러 다른 경우 ê²€ì¦ ì¡´ìž¬í•˜ì§€ 않는 픽스처 ê°ì²´ë¥¼ 해체하지 않기 위해 if문 사용 í™˜ê²½ì— ëŒ€í•œ ì œì–´ëŠ¥ë ¥ 부족 가비지 ì»¬ë ‰ì…˜ ì‹œìŠ¤í…œì´ í•´ê²°í•´ 줄 수 없는 ì§€ì†ì ì¸ ìžì›ì„ ë§Žì´ ì‚¬ìš©
40.
테스트 내 조건문
로ì§(Conditional Test Logic) í•´ê²°ì±… SUTì—서 '바꿀 수 있는 ì˜ì¡´'ì„ ì§€ì›í•˜ê²Œ ë¦¬íŒ©í† ë§í•œë‹¤ 보호 단언문 사용 복잡한 ê°ì²´ë¥¼ ê²€ì¦í• 때는 기대ê°ì²´ì— ë™ë“± 단언문 사용 테스트용 ë™ë“±ì„ ì •ì˜í•œ 맞춤 단언문 사용 테스트 ìœ í‹¸ë¦¬í‹° 메소드나 공통 ì¸ìžë¥¼ 받는 테스트 사용 ìž…ë ¥ëœ ê°’ì— ëŒ€í•œ ê³„ì‚°ëœ ê°’ì„ ì“´ë‹¤ 암묵ì í•´ì²´, ìžë™ í•´ì²´ 사용 ì‹ ì„ í•œ 픽스처, 테스트 대ì—ì„ ì‚¬ìš©í•´ ì§€ì†ë˜ëŠ” ê°ì²´ë¥¼ ì“°ì§€ 않는다
41.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
42.
테스트하기 íž˜ë“ ì½”ë“œ(Hard-to-Test
Code) 코드가 테스트 하기 ì–´ë µë‹¤ 강하게 ê²°í•©ëœ ì½”ë“œ 비ë™ê¸° 코드 í…ŒìŠ¤íŠ¸í• ìˆ˜ 없는 테스트 코드
43.
테스트하기 íž˜ë“ ì½”ë“œ(Hard-to-Test
Code) ì¦ìƒ ì›ëž˜ë¶€í„° 테스트 하기 íž˜ë“ ì½”ë“œ 여러 다른 í´ëž˜ìŠ¤ì™€ 함께 테스트 해야만 하는 코드 ì§ì ‘ 메소드 호출로 í…ŒìŠ¤íŠ¸í• ìˆ˜ 없는 í´ëž˜ìФ 테스트 ë©”ì†Œë“œì˜ ë‚´ìš©ì´ ë³µìž¡í•˜ë‹¤ 테스트가 올바른지 í™•ì‹ í• ìˆ˜ 없다
44.
테스트하기 íž˜ë“ ì½”ë“œ(Hard-to-Test
Code) 미치는 ì˜í–¥ ì½”ë“œì˜ í’ˆì§ˆì„ ì‰½ê²Œ ê²€ì¦í• 수 없다 테스트 ë¬¸ì„œí™”ì— í° ê³µì„ ë“¤ì´ì§€ 않으면 품질 í‰ê°€ë¥¼ 반복하기 ì–´ë µë‹¤ 단위 테스트가 ì–´ë µë‹¤ 테스트가 ë³µìž¡í•˜ê³ ì‹¤í–‰ì´ ëŠë ¤ì§„다 ë²„ê·¸íˆ¬ì„±ì´ í…ŒìŠ¤íŠ¸ê°€ ë˜ê¸° 쉽다 테스트 ìœ ì§€ ë¹„ìš©ì´ ë¹„ì‹¸ë‹¤ 테스트를 ì œëŒ€ë¡œ 작성하기 ì–´ë µë‹¤
45.
테스트하기 íž˜ë“ ì½”ë“œ(Hard-to-Test
Code) ì›ì¸ 설계가 조잡하다 ê°ì²´ì§€í–¥ ì„¤ê³„ê²½í—˜ì´ ë¶€ì¡±í•˜ë‹¤ 액티브 ê°ì²´ì™€ 강하게 ê²°í•©ë˜ì–´ 있다 ë°ìŠ¤íŠ¸ì½”ë“œëŠ” ì›ëž˜ 테스트하기 ì–´ë µë‹¤
46.
테스트하기 íž˜ë“ ì½”ë“œ(Hard-to-Test
Code) í•´ê²°ì±… ê²°í•©ì„ ë¶„ë¦¬í•œë‹¤ : 테스트 대ì—, 테스트 스í…, ëª¨ì˜ ê°ì²´ 'ë ˆê±°ì‹œ 코드 활용 ì „ëžµ'ì„ ì½ì–´ë³¸ë‹¤ 로ì§ê³¼ 비ë™ê¸° ì ‘ê·¼ 매커니즘 분리 : 대강 ë§Œë“ ê°ì²´ 테스트 메소드들 아주 단순하게 ë§Œë“ ë‹¤
47.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
48.
테스트 코드 중복(Test
Code Duplication) 여러 번 반복ë˜ëŠ” 테스트 코드 ê°™ì€ ì£¼ì œì— ëŒ€í•´ 약간씩 다른 시나리오로 테스트 해야 하는 경우 'ìž˜ë¼ ë¶™ì—¬ë„£ê¸°' 코드 재사용 바퀴 재발명 하기
49.
테스트 코드 중복(Test
Code Duplication) ì¦ìƒ ê°™ì€ ì½”ë“œê°€ 여러 테스트ì—서 반복ëœë‹¤ 한 테스트 안ì—서 비슷한 êµ¬ë¬¸ì´ ë°˜ë³µëœë‹¤ 미치는 ì˜í–¥ SUT메소드 ì˜ë¯¸ê°€ 변경ë˜ë©´ ëª¨ë“ ë³µì‚¬ë³¸ì— ìœ ì§€ë³´ìˆ˜ 해야한다 테스트 ìœ ì§€ ë¹„ìš©ì´ ëŠ˜ì–´ë‚œë‹¤
50.
테스트 코드 중복(Test
Code Duplication) ì›ì¸ ë¦¬íŒ©í† ë§ ê¸°ìˆ ì´ë‚˜ ê²½í—˜ì´ ë¶€ì¡± ì¼ì •ì— ëŒ€í•œ ì••ë°• ì–´ë–¤ 테스트 ìœ í‹¸ë¦¬í‹° 메소드가 있는지 모른다 í•´ê²°ì±… 메소트 뽑아내기 ìƒì„± 메소드, 찾기 메소드 맞춤 단언문, ê²€ì¦ ë©”ì†Œë“œ 'ì¸ìž ë„ìž…' ë¦¬íŒ©í† ë§ í…ŒìŠ¤íŠ¸ ìœ í‹¸ë¦¬í‹° 메소드 확ì¸
51.
15장ì—서 다루는 냄새 ì• ë§¤í•œ
테스트 테스트 ë‚´ 조건문 ë¡œì§ í…ŒìŠ¤íŠ¸í•˜ê¸° íž˜ë“ ì½”ë“œ 테스트 코드 중복 ì œí’ˆ 코드 ë‚´ 테스트 로ì§
52.
ì œí’ˆ 코드 ë‚´
테스트 로ì§(Test Logic In Production) ì œí’ˆ ì½”ë“œì— í…ŒìŠ¤íŠ¸ì—서만 실행ë¼ì•¼ 하는 코드가 들어있다 테스트 í›… 테스트 ì „ìš© ì œí’ˆ 코드 ë‚´ 테스트 ì˜ì¡´ ë™ë“± 오염
53.
ì œí’ˆ 코드 ë‚´
테스트 로ì§(Test Logic In Production) ì¦ìƒ ìˆœì „ížˆ 테스트ì—서만 필요한 로ì§ì´ SUTì•ˆì— ë“¤ì–´ 있다 SUTê°€ 테스트 중ì¼ë•Œ 다르게 실행ë˜ëŠ” 로ì§ì´ 있다 SUTì¼ë¶€ 메소드가 테스트ì—서만 ì“°ì´ê³ 있다 ì‹¤ì œ private ì´ì–´ì•¼ 하는 ì†ì„±ì´ public 으로 ë¼ ìžˆë‹¤ ì œí’ˆ 코드만 ë¹Œë“œí• ìˆ˜ê°€ 없다 테스트 ì‹¤í–‰ì´ ì—†ëŠ” 경우 ì œí’ˆ 코드를 ì‹¤í–‰í• ìˆ˜ 없다 테스트ì—ì„œì˜ í•„ìš”ë¡œ equals 메소드를 변경 SUTì—서 equals ì˜ ì •ì˜ë¥¼ 변경
54.
ì œí’ˆ 코드 ë‚´
테스트 로ì§(Test Logic In Production) 미치는 ì˜í–¥ ì œí’ˆ ìƒíƒœì—서 테스트 코드가 실행ë˜ë©´ 심ê°í•œ ë¬¸ì œê°€ ìƒê¸¸ 수 있다 SUT를 ë” ë³µìž¡í•˜ê²Œ ë§Œë“ ë‹¤ ì œí’ˆì˜ ì‹¤í–‰ í¬ê¸°ê°€ 늘어난다 ì œí’ˆì—서 뜻하지 않게 테스트 코드가 실행ë 수 있다 새로운 요구사í•ì„ ì§€ì›í•˜ëŠ” equals 로ì§ì„ 추가하기 ì–´ë µë‹¤ ì›ì¸ ì•Œë ¤ì§„ ê°’ì„ ë¦¬í„´í•´ SUTë™ìž‘ì„ ê²°ì •ì 으로 ë§Œë“ ë‹¤ í…ŒìŠ¤íŠ¸ì— í•„ìš”í•œ ì •ë³´ë¥¼ í´ëž˜ìŠ¤ë¡œë¶€í„° 노출 í…ŒìŠ¤íŠ¸ì— í•„ìš”í•œ ì •ë³´ ì´ˆê¸°í™”ì— ë” ë§Žì€ ì œì–´ë¥¼ 하기 위한 메소드 추가 모듈간 ì˜ì¡´ì„±ì— ì‹ ê²½ì„ ì“°ì§€ 않는다 테스트용 ë™ë“±ì˜ ê°œë…ì„ ìž˜ 모른다
55.
ì œí’ˆ 코드 ë‚´
테스트 로ì§(Test Logic In Production) í•´ê²°ì±… 바꿀 수 있는 ì˜ì¡´ 사용 : ìŠ¤íŠ¸ë ˆí‹°ì§€ 패턴 테스트용 하위í´ëž˜ìŠ¤ë¥¼ 만들어 SUTì˜ íŠ¹ì • 메소드를 오버ë¼ì´ë”©í•œë‹¤ 테스트 ì „ìš©ìž„ì„ ë¶„ëª…í•˜ê²Œ 네ì´ë°ì„ 한다 ì˜ì¡´ê´€ê³„를 ì‹ ì¤‘ížˆ 관리한다 equals ìˆ˜ì • ëŒ€ì‹ ë§žì¶¤ 단언문으로 내장 ë™ë“± ë‹¨ì–¸ë¬¸ì„ ì“°ê²Œ 한다 ë™ì ëª¨ì˜ ê°ì²´ ìƒì„± ë„구를 쓴다면 비êµìžë¥¼ 쓴다 기대 ê°ì²´ì˜ 테스트용 하위 í´ëž˜ìŠ¤ì— equals 메소드를 구현한다
56.
ë
Download