Skip to content

Latest commit

ย 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

TDD

์ฐธ๊ณ  ์ž๋ฃŒ

Book

์ œ๋ชฉ ์ €์ž ๋งํฌ
์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ ์‚ฐ๋“œ๋กœ ๋งŒ์ฟ ์†Œ 9791186659489
ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ - Money ์˜ˆ์ œ ์ผ„ํŠธ ๋ฒก 9788966261024
xUnit ํ…Œ์ŠคํŠธ ํŒจํ„ด ์ œ๋ผ๋“œ ๋ฉ”์Šค์ž๋กœ์Šค Website for Book
๋ฆฌํŒฉํ„ฐ๋ง 2ํŒ ๋งˆํ‹ด ํŒŒ์šธ๋Ÿฌ 9791162242742
ํŒจํ„ด์„ ํ™œ์šฉํ•œ ๋ฆฌํŒฉํ„ฐ๋ง ์กฐ์Šˆ์•„ ์ผ€๋ฆฌ์—๋ธŒ์Šคํ‚ค 9788991268920
์ฝ”๋“œ ์ปดํ”Œ๋ฆฌํŠธ 2 ์Šคํ‹ฐ๋ธŒ ๋งฅ์ฝ”๋„ฌ 9791158390600
ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ๋กœ ๋ฐฐ์šฐ๋Š” ๊ฐ์ฒด ์ง€ํ–ฅ ์„ค๊ณ„์™€ ์‹ค์ฒœ ์Šคํ‹ฐ๋ธŒ ํ”„๋ฆฌ๋จผ, ๋ƒ‡ ํ”„๋ผ์ด์Šค 9788966260843
ํด๋ฆฐ ์ฝ”๋“œ ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด 9788966262724
ํด๋ฆฐ ์ฝ”๋” ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด 9788960778818
ํด๋ฆฐ ์†Œํ”„ํŠธ์›จ์–ด ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด 9791185890852

Article

Video

์ œ๋ชฉ ์ €์ž ๋งํฌ
TDD ๋ฆฌํŒฉํ† ๋ง ์ž๋ฐ”์ง€๊ธฐ ๋ฐ•์žฌ์„ฑ Youtube
ํ˜„์‹ค ์„ธ์ƒ์˜ TDD ์ด๊ทœ์› fastcampus, GitHub
์ž๋ฐ”์™€ JUnit์„ ํ™œ์šฉํ•œ ์‹ค์šฉ์ฃผ์˜ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ œํ”„ ๋žญ์–ด, ์•ค๋”” ํ—ŒํŠธ, ๋ฐ์ด๋ธŒ ํ† ๋งˆ์Šค 9791160508383
JUnit in Action (3rd) ํ”ผํ„ฐ ํƒ€์น˜๋ธŒ, ํŽ ๋ฆฌํŽ˜ ๋ ˆ๋ฏธ, ๋นˆ์„ผํŠธ ๋งˆ์†”, ๊ฒŒ๋ฆฌ ๊ทธ๋ ˆ๊ณ ๋ฆฌ 9781617297045

Language

Java

์ œ๋ชฉ ์ €์ž ๋งํฌ
ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ ์‹œ์ž‘ํ•˜๊ธฐ ์ตœ๋ฒ”๊ท  9788980783052
Test Driven Development with Spring Boot Sannidhi Jalukar, Madhura Bhave Youtube
Java TDD ์‹ค์Šต ์•„์ƒฌ Youtube

Go

์ œ๋ชฉ ์ €์ž ๋งํฌ
Learn Go with Tests Chris James Git Book

Javascript

์ œ๋ชฉ ์ €์ž ๋งํฌ
ํ”„๋ก ํŠธ์—”๋“œ์—์„œ TDD๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์„ ๋ณด์—ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค ์ตœ์ˆ˜ํ˜• Youtube

Python

์ œ๋ชฉ ์ €์ž ๋งํฌ
์šฐ์•„ํ•˜๊ฒŒ ์ค€๋น„ํ•˜๋Š” ํ…Œ์ŠคํŠธ์™€ ๋ฆฌํŒฉํ† ๋ง ํ•œ์„ฑ๋ฏผ Youtube
ํด๋ฆฐ ์ฝ”๋“œ๋ฅผ ์œ„ํ•œ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ ํ•ด๋ฆฌ J.W. ํผ์‹œ๋ฒŒ 9788994774916

๊ฐ™์ด ๋ณด๊ธฐ

์ œ๋ชฉ ์ €์ž ๋งํฌ
ํ•จ๊ป˜ ์ž๋ผ๊ธฐ ๊น€์ฐฝ์ค€ 9788966262373
์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋ฐ์ด๋น„๋“œ ํ† ๋จธ์Šค, ์•ค๋“œ๋ฅ˜ ํ—ŒํŠธ 9788966261031
์‹ค์šฉ์ฃผ์˜ ์‚ฌ๊ณ ์™€ ํ•™์Šต ์•ค๋”” ํ—ŒํŠธ 9788992939362
ํ”„๋กœ๊ทธ๋ž˜๋จธ์˜ ๊ธธ, ๋ฉ˜ํ† ์—๊ฒŒ ๋ฌป๋‹ค ๋ฐ์ด๋ธŒ ํ›„๋ฒ„, ์• ๋””์›จ์ผ ์˜ค์‹œ๋‚˜์ด 8991268803
ํด๋ฆฐ ์•„ํ‚คํ…์ฒ˜ ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด 9788966262472
Clean Architecture and Design ๋กœ๋ฒ„ํŠธ C. ๋งˆํ‹ด amara (ํ•œ๊ธ€ ์ž๋ง‰)
๊ฐ์ฒด ์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด ์กฐ์˜ํ˜ธ 9788998139766
์˜ค๋ธŒ์ ํŠธ ์กฐ์˜ํ˜ธ 9791158391409

๊ฐœ๋…

"TDD์˜ ์ด๋ฆ„ ์ž์ฒด์— 'ํ…Œ์ŠคํŠธ'๊ฐ€ ๋“ค์–ด ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ์‚ฌ์‹ค TDD๋Š” ์„ค๊ณ„์— ๋Œ€ํ•œ ์‹คํ–‰ ๊ด€๋ก€๋‹ค." - <์†Œํ”„ํŠธ์›จ์–ด ์žฅ์ธ>

tdd-global-lifecycle

์ถœ์ฒ˜: ์œ„ํ‚คํ”ผ๋””์•„

TDD ๋ฆฌ๋“ฌ(Rhythm)

<ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ>, ์ผ„ํŠธ ๋ฒก

  1. ์žฌ๋นจ๋ฆฌ ์ž‘์€ ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
  2. ๐Ÿ”ด ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์‹คํŒจํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
  3. ์ฝ”๋“œ์— ๋ณ€ํ™”๋ฅผ ์ค๋‹ˆ๋‹ค.
  4. ๐ŸŸข ๋ชจ๋“  ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ณ , ์„ฑ๊ณตํ•˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
    • ๊ฐ€์งœ๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ: ์ƒ์ˆ˜๋กœ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋งŒ๋“ค๊ณ  ์ง„์งœ ์ฝ”๋“œ๋ฅผ ์–ป์„ ๋•Œ๊นŒ์ง€ ๋‹จ๊ณ„์ ์œผ๋กœ ์ƒ์ˆ˜๋ฅผ ๋ณ€์ˆ˜๋กœ ๋ฐ”๊พธ์–ด ๊ฐ‘๋‹ˆ๋‹ค.
    • ๋ช…๋ฐฑํ•œ ๊ตฌํ˜„ ์‚ฌ์šฉํ•˜๊ธฐ: ์‹ค์ œ ๊ตฌํ˜„์„ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    • ์‚ผ๊ฐ์ธก๋Ÿ‰(triangulation): ๋‘ ๊ฐœ ์ด์ƒ์˜ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ์ผ๋ฐ˜ํ™”ํ•ฉ๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๋ฆฌํŒฉํ† ๋งํ•ด์•ผ ํ•˜๋Š”์ง€ ์ „ํ˜€ ๊ฐ์ด ์•ˆ ์˜ฌ ๋•Œ๋งŒ ์‚ผ๊ฐ์ธก๋Ÿ‰์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  5. ๐Ÿ”ต ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฆฌํŒฉํ† ๋งํ•ฉ๋‹ˆ๋‹ค.

๊ด€๋ จ ์šฉ์–ด

๊ฐ„์ ‘ ์ž…๋ ฅ (Indirect Input)

์ž…๋ ฅ๋œ ์˜์กด์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ์ž…๋ ฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค(์˜์กด์„ฑ ๊ด€์ ์—์„œ๋Š” ์ถœ๋ ฅ). SUT์˜ ๋™์ž‘์ด SUT์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ์„œ๋น„์Šค ์ปดํฌ๋„ŒํŠธ์—์„œ ๋ฆฌํ„ดํ•˜๋Š” ๊ฐ’์— ์˜ํ–ฅ์„ ๋ฐ›์„ ๋•Œ ์ด๋Ÿฐ ๊ฐ’๋“ค์„ SUT์˜ ๊ฐ„์ ‘ ์ž…๋ ฅ์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ„์ ‘ ์ถœ๋ ฅ (Indirect Output)

์ž…๋ ฅ๋œ ์˜์กด์„ฑ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•œ ์ถœ๋ ฅ์„ ๋งํ•ฉ๋‹ˆ๋‹ค(์˜์กด์„ฑ ๊ด€์ ์—์„œ๋Š” ์ž…๋ ฅ). SUT์˜ ๋™์ž‘์— ๋”ฐ๋ฅธ ํšจ๊ณผ๋ฅผ public ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ธํ„ฐํŽ˜์ด์Šค(API)์—์„œ๋Š” ๋ณผ ์ˆ˜ ์—†๊ณ  ๋‹ค๋ฅธ ์‹œ์Šคํ…œ์ด๋‚˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์„ ๋•Œ ์ด๋Ÿฐ ํšจ๊ณผ๋ฅผ SUT์˜ ๊ฐ„์ ‘ ์ถœ๋ ฅ์ด๋ผ ํ•ฉ๋‹ˆ๋‹ค.

SUT

System Under Test. "ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ๋Œ€์ƒ"์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. SUT๋Š” ํ•ญ์ƒ ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ SUT๋Š” ํ…Œ์ŠคํŠธํ•˜๋ ค๋Š” ํด๋ž˜์Šค(CUT), ์˜ค๋ธŒ์ ํŠธ(OUT) ๋˜๋Š” ๋ฉ”์„œ๋“œ(MUT)๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ๊ณ ๊ฐ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ SUT๋Š” ์•„๋งˆ๋„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด(AUT)์ด๊ฑฐ๋‚˜ ์ ์–ด๋„ ์ฃผ์š” ์„œ๋ธŒ ์‹œ์Šคํ…œ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ํŠน์ • ํ…Œ์ŠคํŠธ์˜ ๊ฒ€์ฆ ๋Œ€์ƒ์ด ์•„๋‹Œ ๋ถ€๋ถ„๋„ ์—ฌ์ „ํžˆ ์˜์กด ์ปดํฌ๋„ŒํŠธ(DOC)๋กœ์„œ ํ…Œ์ŠคํŠธ์™€ ์—ฐ๊ด€๋ผ ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

DOC

depended-on component. SUT๊ฐ€ ์˜์กดํ•˜๋Š” ๊ฐœ๋ณ„ ํด๋ž˜์Šค๋‚˜ ๋А์Šจํ•œ ์ปดํฌ๋„ŒํŠธ(large-grained component)๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค. ์˜์กด์€ ๋ณดํ†ต ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์„ ํ†ตํ•ด ์œ„์ž„ํ•˜๋Š” ๋ฐฉ์‹ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ ์ž๋™ํ™”์—์„œ ์™„๋ฒฝํ•œ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์–ป์œผ๋ ค๋ฉด ์ฃผ๋กœ DOC์™€ SUT ๊ฐ„์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ๋ณด๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Fixture (Test Context)

ํ…Œ์ŠคํŠธ ํ”ฝ์ฒ˜๋ž€ SUT์˜ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋ ค ํ•  ๋•Œ ๊ฐ–์ถฐ์•ผ ํ•˜๋Š” ๋ชจ๋“  ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

Test Suite

ํ…Œ์ŠคํŠธ ์Šค์œ„ํŠธ๋ž€ ๊ฐ™์ด ์‹คํ–‰ํ•˜๊ณ  ์‹ถ์€ ํ…Œ์ŠคํŠธ๋“ค์˜ ๋ชจ์Œ(composite)์— ์ด๋ฆ„์„ ๋ถ™์—ฌ์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ๋งํ•ฉ๋‹ˆ๋‹ค.

- Unit Test Acceptance Test
๊ด€์  ์ตœ์ข… ํด๋ผ์ด์–ธํŠธ ํ”„๋กœ๊ทธ๋ž˜๋จธ
๊ฒ€์ฆ ๋Œ€์ƒ ์‹œ์Šคํ…œ์˜ ์ผ๋ถ€(ํ•˜์œ„ ์‹œ์Šคํ…œ) ๋ฐฐ์น˜๋œ ์‹œ์Šคํ…œ
์•ˆ์ •๊ฐ (์ „์ฒด ์‹œ์Šคํ…œ ์ด์ƒ ์—ฌ๋ถ€ ์‹ ๋ขฐ๋„) ์ƒ๋Œ€์ ์œผ๋กœ ๋‚ฎ์Œ ๋†’์Œ
๋น„์šฉ (์ž‘์„ฑ/๊ด€๋ฆฌ/์‹คํ–‰) ๋‚ฎ์Œ ๋†’์Œ
ํ”ผ๋“œ๋ฐฑ ํ’ˆ์งˆ ๋†’์Œ ๋‚ฎ์Œ (ํ˜„์ƒ์€ ๋“œ๋Ÿฌ๋‚˜์ง€๋งŒ ์›์ธ์€ ์ˆจ๊ฒจ์ง)

์ถœ์ฒ˜: ํ˜„์‹ค ์„ธ์ƒ์˜ TDD - ์ด๊ทœ์›

Unit Test

๋‹จ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์˜ ํ•œ ๋ถ€๋ถ„์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

Integration Test

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์—ฌ๋Ÿฌ ๋ชจ๋“ˆ ๋˜๋Š” ์„œ๋น„์Šค๊ฐ€ ํ•จ๊ป˜ ์ž˜ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๋ชจ๋“ˆ์€ ๋ชจ๋“  ๋ชจ๋“ˆ์ด ์•„๋‹Œ ํ•ด๋‹น ํ…Œ์ŠคํŠธ๊ฐ€ ์˜์กดํ•˜๋Š” ๋ชจ๋“ˆ๋งŒ์„ ์ผ์ปซ์Šต๋‹ˆ๋‹ค. ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๋Š” ๋‹จ์ˆœํžˆ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์ฟผ๋ฆฌ ํ•  ์ˆ˜ โ€‹โ€‹์žˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

Functional Test

๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ตœ์ข… ์‚ฌ์šฉ์ž์˜ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๋ธ”๋ž™๋ฐ•์Šค ํ…Œ์ŠคํŠธ๋ฅผ ๋งํ•ฉ๋‹ˆ๋‹ค.

End to End Test

ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ๋ช‡ ๊ฐ€์ง€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐ„ ๋™์ž‘์„ ํ…Œ์ŠคํŠธํ•œ๋‹ค๋ฉด E2E ํ…Œ์ŠคํŠธ๋Š” ์†Œํ”„ํŠธ์›จ์–ด๊ฐ€ ์‚ฌ์šฉ์ž์˜ ๋‹จ๊ณ„๋ณ„ ํ–‰๋™์„ ๊ทธ๋Œ€๋กœ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ํ•˜๊ณ  ํ…Œ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.

Acceptance Test

์ธ์ˆ˜ ํ…Œ์ŠคํŠธ(์Šน์ธ ํ…Œ์ŠคํŠธ)๋Š” ์‹œ์Šคํ…œ์ด ๋น„์ฆˆ๋‹ˆ์Šค ์š”๊ตฌ ์‚ฌํ•ญ์„ ์ถฉ์กฑํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰๋˜๋Š” ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์ƒ๊ฐํ•œ ๋Œ€๋กœ๊ฐ€ ์•„๋‹Œ ๊ณ ๊ฐ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š” ๊ฒƒ์„ ์ฆ๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค.

Customer Test

๊ณ ๊ฐ ํ…Œ์ŠคํŠธ๋Š” ์ „์ฒด ์‹œ์Šคํ…œ ์ค‘์—์„œ ๋ˆˆ์— ๋ณด์ด๋Š” ๊ธฐ๋Šฅ์˜ ์ผ๋ถ€๋ถ„์— ๋Œ€ํ•œ ๋™์ž‘์„ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.

  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์‹ค์ œ DOC๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, DOC ๋Œ€์‹  ํ…Œ์ŠคํŠธ ๋”๋ธ”๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋”๋ธ”์€ ์‹ค์ œ DOC์™€ ๋˜‘๊ฐ™์ด ํ–‰๋™ํ•˜์ง€ ์•Š์•„๋„ ๋˜๋ฉฐ, ๋˜‘๊ฐ™์€ API๋งŒ ์ œ๊ณตํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ ๋”๋ธ”์€ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์„ ์œ„ํ•ด ํ”„๋กœ๋•์…˜ ๊ฐ์ฒด๋ฅผ ๋‹ค๋ฅธ ๋ฌด์–ธ๊ฐ€๋กœ ๊ต์ฒดํ•˜๋Š” ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์šฉ์–ด์ž…๋‹ˆ๋‹ค.

Dummy

SUT ๋ฉ”์„œ๋“œ ์ธ์ž์— ๊ตฌํ˜„์ด ์ „ํ˜€ ์•ˆ ๋ผ ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. SUT ์ค€๋น„๋ฅผ ์œ„ํ•ด ํ•ด๊ฒฐ๋˜์–ด์•ผ ํ•˜๋Š” ์˜์กด์„ฑ์ด ํ…Œ์ŠคํŠธ ๋Œ€์ƒ ๋…ผ๋ฆฌ์— ์˜ํ•ด ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์˜์กด ์š”์†Œ๋ฅผ ๋Œ€์‹ ํ•˜๋Š” ํ…Œ์ŠคํŠธ ๋Œ€์—ญ์ž…๋‹ˆ๋‹ค.

Fake

์‹ค์ œ๋กœ ์ž‘๋™ํ•˜๋Š” ๊ตฌํ˜„์ด์ง€๋งŒ ์ผ๋ฐ˜์ ์œผ๋กœ ํ”„๋กœ๋•์…˜์—๋Š” ์ ํ•ฉํ•˜์ง€ ์•Š์€ ๊ผผ์ˆ˜(shortcut)๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. (InMemoryTestDatabase๊ฐ€ ์ข‹์€ ์˜ˆ) ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

Stub

ํ…Œ์ŠคํŠธ ์ค‘์— ํ˜ธ์ถœ๋˜๋ฉด ๋ฏธ๋ฆฌ ์ค€๋น„๋œ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‹ค์ œ ๊ฐ์ฒด๋ฅผ ํ…Œ์ŠคํŠธ์šฉ ๊ฐ์ฒด๋กœ ๊ต์ฒดํ•ด SUT์— ์›ํ•˜๋Š” ๊ฐ„์ ‘ ์ž…๋ ฅ์„ ๋ณด๋ƒ…๋‹ˆ๋‹ค.

Spy

SUT๋กœ๋ถ€ํ„ฐ ๋‹ค๋ฅธ ์ปดํฌ๋„ŒํŠธ๋กœ์˜ ๊ฐ„์ ‘ ์ถœ๋ ฅ์„ ๊ฐˆ๋ฌด๋ฆฌํ–ˆ๋‹ค๊ฐ€ ๋’ค์— ํ…Œ์ŠคํŠธ์—์„œ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค.

Mock

ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์‚ฌ์ „์— ์ •์˜๋œ ๋ช…์„ธ๋Œ€๋กœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๋Œ๋ ค์ฃผ๋„๋ก ๋ฏธ๋ฆฌ ํ”„๋กœ๊ทธ๋žจ ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ƒ์น˜ ๋ชปํ•œ ํ˜ธ์ถœ์ด ์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ํ˜ธ์ถœ์ด ์˜ˆ์ƒ๋œ ๊ฒƒ์ด์—ˆ๋Š”์ง€ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. SUT ๋‚ด๋ถ€์˜ ํ–‰์œ„๋ฅผ ๊ฒ€์ฆํ•ฉ๋‹ˆ๋‹ค. SUT์˜ ๊ฐ„์ ‘ ์ถœ๋ ฅ์„ ๊ฒ€์ฆํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

About

Extreme Programming

Topics

Resources

Stars

12 stars

Watchers

0 watching

Forks

Contributors