TDD(Test-Driven Development)๋ž€?

๊ถŒํƒœํ˜•ยท2023๋…„ 6์›” 21์ผ
0

์ง€์‹์ •๋ฆฌ

๋ชฉ๋ก ๋ณด๊ธฐ
59/72
post-custom-banner

๐Ÿ˜€์ง€๊ธˆ ๋‚˜๋Š” ์ž‘์„ฑํ•œ ๊ธฐ์กด์˜ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ์ผ์ผํžˆ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋‹ค. ํ•ญ์ƒ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์— ๋Œ€ํ•ด์„œ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์•Œ์•„๋ณด๋‹ค๋ณด๋ฉด, TDD๋ผ๋Š” ์šฉ์–ด๊ฐ€ ๋‚˜์˜จ๋‹ค. ์ •ํ™•ํžˆ TDD๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋– ํ•œ ์žฅ์ ๋“ค์ด ์žˆ๋Š”์ง€ ์•Œ์•„๋ณด์ž.

TDD๋ž€?

TDD๋Š” Test-Driven Development์˜ ์•ฝ์ž๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•ด ๋‚˜๊ฐ€๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ๊ทธ๋ƒฅ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•๋ก ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ จ์˜ ๊ณผ์ •์„ ๋”ฐ๋ผ ๊ฐœ๋ฐœํ•ด ๋‚˜๊ฐ€๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค.

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

TDD์˜ ์ฃผ์š” ํ๋ฆ„

์œ„์˜ TDD์„ค๋ช…์— ํฌํ•จ๋œ ๋‚ด์šฉ์—์„œ ์„ค๋ช…ํ–ˆ๋“ฏ์ด ๋ฐฉ๋ฒ•๋ก ์ด๊ณ  ์ˆœ์„œ๊ฐ€ ํ•„์š”ํ•œ๋‹ค. ์ด ์ˆœ์„œ์˜ ํ๋ฆ„์€ ํ•˜๋‚˜์˜ ์‚ฌ์ดํด์„ ๊ฐ€์ง„๋‹ค.
Red-Green-refactor์˜ ์‚ฌ์ดํด์„ ๊ฐ€์ง€๋ฉด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค.

ํฐ ์‚ฌ์ดํด๋กœ ๋ณด๋ฉด ์œ„์˜ ๊ณผ์ •์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ํ•ด๋‹น ์‚ฌ์ดํด์„ ์ข€๋” ์„ธ๋ถ„ํ™” ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์‚ฌ์ดํด์„ ๋Œ๋ฉด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋œ๋‹ค๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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

  2. ํ…Œ์ŠคํŠธ ์‹คํŒจ : ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑ์™„๋ฃŒ ํ–ˆ๋‹ค๋ฉด, ํ…Œ์ŠคํŠธ๋ฅผ ์‹คํ–‰ ํ–ˆ์„๋•Œ Fail์ด ๋‚˜์˜ฌ๊ฒƒ์ด๋‹ค. ์™œ๋ƒ? ๋‹น์—ฐํžˆ ์‹ค์งˆ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์•˜์œผ๋‹ˆ๊นŒ.

  3. ์ฝ”๋“œ ์ž‘์„ฑ ๋ฐ ํ…Œ์ŠคํŠธ ์„ฑ๊ณต : ์‹คํŒจํ•œ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ต๊ณผ ์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์‹ค์งˆ์ ์ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค. ํ•˜๋‚˜์˜ ๊ธฐ๋Šฅ์— ๊ฒ€์ฆํ•ด์•ผํ•  ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋Š” ์—ฌ๋Ÿฌ๊ฐœ์ผ ๊ฒƒ์ด๋‹ค. ์œ„ 1๋ฒˆ ๊ณผ์ •์—์„œ ์ž‘์€ ๋‹จ์œ„๋กœ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜์˜€๋‹ค๋ฉด. ๋”ฑ ๊ทธ ์ •๋„ ํ…Œ์Šคํฌ ํ…Œ์ด์Šค๋งŒ ํ†ต๊ณผ๋  ์ˆ˜ ์žˆ๋„๋ก ์ตœ์†Œํ•œ์˜ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ ํ›„ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜์—ฌ PASS๋ฅผ ์–ป๋Š”๋‹ค.

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

  5. ๋ฆฌํŽ™ํ† ๋ง ๊ณผ์ • : ์œ„์˜ 2~3์˜ ๊ณผ์ •์—์„œ ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์™€ ํ†ต๊ณผ์˜ ๊ณผ์ •์€ ํ•ด๋‹น ๊ธฐ๋Šฅ์ด ์ •์ƒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ํ˜„์žฌ ๋‚ด๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๊ฐ€ 4๋ฒˆ ๊ณผ์ •๊นŒ์ง€ ๊ฑฐ์ณ ๊ธฐ๋Šฅ์— ๋ฌธ์ œ๊ฐ€ ์—†์Œ์„ ํ™•์ธํ–ˆ์œผ๋‹ˆ, ๋‚ด๊ฐ€ ์ž‘์„ฑํ•  ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ์ฝ”๋“œ ํ€„๋ฆฌํ‹ฐ๋ฅผ ๋†’์ด๊ธฐ ์œ„ํ•œ ๋ฆฌํŽ™ํ† ๋ง์„ ์ง„ํ–‰ํ•œ๋‹ค. ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ๋‹ค๋“ฌ์—ˆ๋‹ค๋ฉด ๋‹ค์‹œ 1๋ฒˆ ๊ณผ์ •์œผ๋กœ ๋Œ์•„๊ฐ€์„œ ํ•ด๋‹น ๊ธฐ๋Šฅ์— ํ•„์š”ํ•œ ๋‹ค์Œ step์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ธฐ๋Šฅ์„ ์™„์„ฑํ•ด ๋‚˜๊ฐ„๋‹ค.

TDD๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ์žฅ์ 

์œ„์˜ TDD์˜ ๋ฐ˜๋ณต์ ์ธ ์ฃผ๊ธฐ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์ด ๋†’์•„์ง€๋Š” ์ด์œ ๋Š” ๋ช‡ ๊ฐ€์ง€๊ฐ€ ์กด์žฌํ•œ๋‹ค.

  1. ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•จ์œผ๋กœ์จ ๊ฐœ๋ฐœ์ž๋Š” ์ฝ”๋“œ๊ฐ€ ๋™์ž‘ํ•ด์•ผ ํ•  ๊ธฐ๋Œ€ ๊ฒฐ๊ณผ๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜ ํ•ด์•ผํ•œ๋‹ค. ์–ด๋– ํ•œ ๊ฐ’์„ ๋„ฃ๊ณ  ์–ด๋– ํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋™์ž‘ํ•  ๊ฒƒ์ธ์ง€ ์ด๋ฏธ ๊ตฌ์ƒ์„ ํ•˜๊ณ  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ์ด๋Š” ์ฝ”๋“œ์˜ ๋ช…์„ธ(Specification) ์—ญํ• ๋„ ํ•˜๋ฏ€๋กœ ๊ฐœ๋ฐœ์ž์™€ ํด๋ผ์ด์–ธํŠธ ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์— ๋„์›€์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค.

  2. ์ตœ์†Œํ•œ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋‹จ๊ณ„์—์„œ ๊ฐœ๋ฐœ์ž๋Š” ๊ฐ„๊ฒฐํ•˜๊ณ  ๋‹จ์ˆœํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฒŒ ๋œ๋‹ค. ์ ์€์ฝ”๋“œ์˜ ์ž‘์„ฑ์„ ํ†ตํ•ด ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ๊ณผ ์œ ์ง€๋ณด์ˆ˜์„ฑ์„ ๋†’์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์‰ฝ๋‹ค.

  3. ๋ฆฌํŒฉํ† ๋ง ๋‹จ๊ณ„์—์„œ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ๊ฐœ์„ ํ•˜๊ณ  ์ค‘๋ณต์„ ์ œ๊ฑฐํ•˜์—ฌ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๋†’์ด๊ณ  ๊ฒฐํ•จ์„ ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค.

  4. ์ดˆ๊ธฐ์—๋Š” ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ์ƒ๋Œ€์ ์œผ๋กœ ๋Š๋ฆด ์ˆ˜ ์žˆ์ง€๋งŒ, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฐํ•จ์„ ์ดˆ๊ธฐ์— ์ฐพ์•„๋‚ด๋ฏ€๋กœ ์ดํ›„์— ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋ฅผ ์‚ฌ์ „์— ์˜ˆ๋ฐฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ, ๊ฒฐํ•จ์„ ์ˆ˜์ •ํ•˜๋Š” ์‹œ๊ฐ„๊ณผ ๋น„์šฉ์„ ๋Œ€ํญ ์ค„์ผ ์ˆ˜ ์žˆ๊ณ , ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ฝ”๋“œ๋ฅผ ์ข€ ๋” ๊ผผ๊ผผํžˆ ๊ฒ€ํ† ํ•˜๊ณ  ๋””๋ฒ„๊น… ํ•  ์ˆ˜ ์žˆ์–ด, ์ฝ”๋“œ์˜ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ  ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

TDD๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ์˜ ๋‹จ์ 

TDD๋Š” ํ•˜๋‚˜์˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด์ง€, ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ์ •๋‹ต๋ก ์ด ์•„๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์žฅ์ ์ด ์žˆ๋‹ค๋ฉด ๋ถ„๋ช… ๋‹จ์ ๋„ ์กด์žฌํ•œ๋‹ค.

  1. ์šฐ์„  ํ…Œ์ŠคํŠธ ์ฝ”๋“œ์˜ ์ž‘์„ฑ๋ฐฉ์‹๊ณผ ์ฒ˜์Œ TDD๋ฅผ ์ ์šฉํ•ด์„œ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ํ•™์Šต๊ณก์„ ์ด ๋Š˜์–ด๋‚˜๊ณ , ์ž‘์€ ๋‹จ์œ„๋กœ ์ž‘์„ฑํ•˜๊ณ  ํ‹€๋ฆฌ๊ณ , ์„ฑ๊ณต์‹œํ‚ค๊ณ , ๊ณ ์น˜๊ณ ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๊ณผ์ •์€ ์ถ”๊ฐ€์ ์ธ ์‹œ๊ฐ„๊ณผ ๋…ธ๋ ฅ์„ ์š”๊ตฌํ•œ๋‹ค.

  2. ์ฒ˜์Œ ์ ‘ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‚˜ ์‹ ๊ทœ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ ๊ตฌํ˜„์„ ํ•  ๋•Œ, ๋ช…ํ™•ํ•˜์ง€ ์•Š์€ ์„ค๊ณ„์™€ ๊ตฌ์ƒ์„ ๊ฐ€์ง€๊ณ  TDD์— ๋”ฐ๋ผ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด, ์š”๊ตฌ์‚ฌํ•ญ์ด ์ž์ฃผ ๋ฐ”๋€Œ๊ฑฐ๋‚˜ ์ ์ ˆํ•˜์ง€ ๋ชปํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋งŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์–ด. ์˜คํžˆ๋ ค ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.


๊ฐœ์ธ์ ์ธ TDD์— ๋Œ€ํ•œ ์ƒ๊ฐ.

๐Ÿ˜€TDD์— ๋Œ€ํ•ด์„œ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ ์ „๊นŒ์ง€๋Š” ์•Œ์†ก๋‹ฌ์†กํ–ˆ๋‹ค. ๋ถ„๋ช… test์ผ€์ด์Šค๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๋Š” ๊ฒƒ์€ ์•Œ๊ณ ๋Š” ์žˆ์—ˆ์ง€๋งŒ, ๋‚˜์™€ ๊ฐ™์€ ์ฃผ๋‹ˆ์–ด์˜ ์ž…์žฅ์—์„œ ๋ฐ˜๋ณต์ˆ™๋‹ฌ๋œ ๊ฐ„๋‹จํ•œ CRUD๊ฐ€ ์•„๋‹Œ ์™„์ „ํžˆ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์ ์šฉ์ด ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด ์–ด๋–ป๊ฒŒ TDD๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์ง€? ๋ผ๋Š” ์˜๋ฌธ์ ์ด ํ•ญ์ƒ ๋‚จ์•˜์—ˆ๋‹ค.

์ตœ๊ทผ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์™ธ๋ถ€์—์„œ ๊ฐ€์ ธ๋‹ค ์“ด ์ฝ”๋“œ์— ๋Œ€ํ•œ ๊ฒจ์šฐ ํ•œ์ค„์˜ ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๋ฅผ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด์„œ 3~4์‹œ๊ฐ„์„ ๊ตฌ๊ธ€์„ ๋’ค์ ธ๋ณธ ์ ๋„ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ TDD์˜ ๋‹จ์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๋ฉด์„œ '์•„ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ๋ถ€๋ถ„์ด ์ •ํ™•ํžˆ ๋‹จ์ ์— ์กด์žฌํ•˜๋Š”๊ตฌ๋‚˜'๋ฅผ ๋Š๊ผ‡๊ณ , ์•„์ง์€ ๋‚ด ์ง€์‹์ด ๋ชจ์ž๋ผ ์œ„์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋ฅผ ๊ฒช์—ˆ์ง€๋งŒ, ๋ถ„๋ช… ์ง€๊ธˆ๋„ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์ด ๋ถ€๋ถ„์€ TDD๋กœ ์ž‘์„ฑํ–ˆ๋‹ค๋ฉด ์ข€ ๋” ๊น”๋”ํ•˜๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์ง€ ์•Š์•˜์„๊นŒ? ์™€ ๊ฐ™์€ ์ƒ๊ฐ์„ ํ•œ๋‹ค.

ํ˜„์žฌ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด ๋ฆฌํŽ™ํ† ๋ง ํ•ด์•ผํ•  ์ฝ”๋“œ๊ฐ€ ๋ˆˆ์— ๋ณด์ด๋Š”๊ฒŒ TDD๋ฅผ ์ ์šฉํ–ˆ๋‹ค๋ฉด ์ฒ˜์Œ ์ฝ”๋“œ๋ฅผ ์“ฐ๋ฉด์„œ๋ถ€ํ„ฐ ๊น”๋”ํ•˜๊ฒŒ ์“ธ์ˆ˜ ์žˆ์—ˆ์„ํ…๋ฐ.. ์ด๋Ÿฌํ•œ ๋ถ€๋ถ„์€ ๊ตณ์ด ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋ฌ์„ํ…๋ฐ์™€ ๊ฐ™์€ ์ƒ์‚ฐ์„ฑ์— ๋น„ํšจ์œจ์ ์ธ ๋ถ€๋ถ„์ด ์ง€๊ธˆ ๋ˆˆ์— ๋ฐŸํžˆ๋Š”๊ฒŒ ์ด๋ฒˆ ํฌ์ŠคํŒ…์„ ์ž‘์„ฑํ•˜๋ฉด์„œ TDD๊ฐ€ ์ •๋ง ๊ดœ์ฐฎ์€ ๋ฐฉ๋ฒ•๋ก ์ด๋ผ๋Š” ๊ฒƒ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.


์ฐธ๊ณ ์ž๋ฃŒ(์ถœ์ฒ˜)
Kent C. Dodds ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… When I follow TDD
whizlabs ๋ธ”๋กœ๊ทธ ํฌ์ŠคํŒ… What is TDD and its phases?

profile
22๋…„ 12์›” ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•œ ์‹ ์ž… ๊ฐœ๋ฐœ์ž โ€˜๊ถŒํƒœํ˜•โ€™์ž…๋‹ˆ๋‹ค. ํฌ์ŠคํŒ… ํ•˜๋‚˜ํ•˜๋‚˜ ๋‚ด๊ฐ€ ๋‹ค์‹œ๋ณด๊ธฐ ์œ„ํ•ด ์“ฐ๋Š” ๊ฒƒ์ด์ง€๋งŒ, ๋‹ค๋ฅธ ๋ถ„๋“ค์—๊ฒŒ๋„ ๋„์›€์ด ๋˜์—ˆ์œผ๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ๐Ÿ’ฏ์ปฌ๋ŸฌํฐํŠธ๊ฐ€ ์ž˜ ์•ˆ๋ณด์ด์‹ค ๊ฒฝ์šฐ ๐ŸŒ™๋‹คํฌ๋ชจ๋“œ๋ฅผ ์ด์šฉํ•ด์ฃผ์„ธ์š”.๐Ÿ˜€ ์ง€์ ๊ณผ ์ฐธ๊ฒฌ์€ ์–ธ์ œ๋‚˜ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๋Œ“๊ธ€ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€