๋ฐ์ผ๋ฆฌ ์žก(Job) ์ง€์‹

TDD, ๋„๋Œ€์ฒด ๋ญ๊ธธ๋ž˜?

๊ฐœ๋ฐœํ•˜๋Š” ์ฃผ๋””์”จ 2024. 1. 15. 11:32

 

 

 

์„ค๊ณ„ - ๊ฐœ๋ฐœ(์ฝ”๋“œ์ž‘์„ฑ) - ํ…Œ์ŠคํŠธ(์ฝ”๋“œ์ž‘์„ฑ)
์ž˜๋ชป๋˜๋ฉด ๋‹ค์‹œ ์„ค๊ณ„์ˆ˜์ •..

 

 

 

์š”์ฆ˜ ์•„์ฃผ ํ•ซํ•œ TDD๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ถ๊ธˆํ•˜๊ธฐ๋„ ํ•˜๊ณ , ์™œ ์ด๋ ‡๊ฒŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ์—ด๊ด‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ ์œ„ํ•ด ํฌ์ŠคํŒ…ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

 

TDD(Test Driven Development)๋ž€

Test Driven Development์˜ ์•ฝ์ž๋กœ 'ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ'์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•จ์œผ๋กœ์จ ๋ถˆํ•„์š”ํ•œ ์„ค๊ณ„๋ฅผ ํ”ผํ•˜๊ณ , ์ •ํ™•ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์— ์ง‘์ค‘ํ•˜๋„๋ก ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

 

 

์„ค๊ณ„ -> ํ…Œ์ŠคํŠธ(์ฝ”๋“œ์ž‘์„ฑ) -> ๊ฐœ๋ฐœ(์ฝ”๋“œ์ž‘์„ฑ)

 

๋งŒ์•ฝ, ์„ค๊ณ„๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์œผ๋ฉด ํ…Œ์ŠคํŠธ๋‹จ๊ณ„์—์„œ ๋ฐ”๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํšจ์œจ์ ์ธ ์ธก๋ฉด์—์„œ๋Š” TDD๊ฐ€ ์ข‹๋‹ค. (ํ•˜์ง€๋งŒ, ๋ชจ๋“  ๋ฐฉ๋ฒ•๋ก ์—๋Š” ์žฅ์ ๋งŒ ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ˜„์žฌ ์ƒํ™ฉ์— TDD๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์„์ง€๋Š” ์ถฉ๋ถ„ํ•œ ๊ณ ๋ฏผ์„ ํ•ด๋ด์•ผํ•œ๋‹ค.)

 

TDD ๊ฐœ๋ฐœ ์‚ฌ์ดํด

  • ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์‹คํŒจ -> ์ˆ˜์ •
  • ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ์„ฑ๊ณต -> ๋ฆฌํŒฉํ† ๋ง

 

์™œ ์‚ฌ์šฉํ• ๊นŒ?

  • ๋ณ€ํ™”์— ๋Œ€ํ•œ ๋‘๋ ค์›€์„ ์ค„์—ฌ์ค€๋‹ค. = ๋ฆฌํŒฉํ† ๋ง์ด ํŽธํ•˜๋‹ค.
  • ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ์ค„์—ฌ์ค€๋‹ค.
  • ๋™์ž‘ํ•˜๋Š” ๋ฌธ์„œ ์—ญํ• ์„ ํ•œ๋‹ค.

 

TDD ์žฅ์ 

1) ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€๊ฐ€ ๋†’์•„์ง„๋‹ค.

๋†’๋‹ค๊ณ  ์ข‹์€ ๊ฑด ์•„๋‹ˆ์ง€๋งŒ... ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋‚˜์ค‘์— ์ž‘์„ฑํ•ด๋„ ๋˜๋Š”๋ฐ ๋ญ๊ฐ€ ๋‹ค๋ฅด๋ƒ?

>> ์žŠ์–ด๋จน๊ฑฐ๋‚˜ ๋’ค๋กœ ๋ฏธ๋ฃจ๋‹ค ๊ฒฐ๊ตญ ์•ˆํ• ๊ฑธ? ํ•˜๊ธฐ์‹ซ์€ ๊ฑฐ ๋ฏธ๋ฆฌํ•˜์ž

 

2) ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง ๋ฐฉ์ง€

๋ฏธ๋ž˜์˜ ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์ž‘์„ฑํ•˜์ง€ ์•Š๋„๋ก ์ •๋ง ๋”ฑ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค.

 

3) ์„ค๊ณ„์— ๋Œ€ํ•œ ํ”ผ๋“œ๋ฐฑ์ด ๋น ๋ฅด๋‹ค

์ž˜๋ชป ์„ค๊ณ„ ํ–ˆ๋‹ค๋ฉด, ์„ค๊ณ„๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด ๋œ๋‹ค. ๋ณต์žกํ•˜๊ณ  ์ž˜๋ชป๋œ ์„ค๊ณ„๋Š” ํ…Œ์ผ€๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ํž˜๋“ค ๊ฒƒ์ž„. ์„ค๊ณ„๋ฅผ ๋ฐ”๊ฟ”๋ผ.

 

TDD์˜ ์˜คํ•ด

๋†’์€ ์‘์ง‘์„ ์œ ๋„ํ•˜์ง€ ์•Š๋Š”๋‹ค

๋‹จ์ผ ์ฑ…์ž„ ์›์น™๊ณผ ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™ ์œ„๋ฐฐ์— ์–ด๋–ค ์‹ ํ˜ธ๋„ ์ฃผ์ง€ ์•Š๋Š”๋‹ค

์ธํ„ฐํŽ˜์ด์Šค ์ผ๊ด€์„ฑ์„ ๋„์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค

๋ฆฌํŒฉํ† ๋ง ๋‹จ๊ณ„๋Š” ์ข‹์€ ๊ตฌ์กฐ๋ฅผ ์•ˆ๋‚ดํ•˜๊ฑฐ๋‚˜ ์ข‹์€ ๊ตฌ์กฐ๋ฅผ ๊ฐ–๋„๋ก ๊ฐ•์ œํ•˜์ง€ ์•Š๋Š”๋‹ค

 

์„ค๊ณ„ ๋ฐฉ๋ฒ•๋ก ์ด ์•„๋‹ˆ๋‹ค!!! ์„ค๊ณ„์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š๋Š” ๊ฑด ์•„๋‹ˆ์ง€๋งŒ

๊ฐ•ํ•œ ๊ฒฐํ•ฉ๊ณผ ์˜์กด์„ฑ ์›์น™ ์œ„๋ฐฐ๋ฅผ ๊ฒฝ๊ณ ํ•˜๊ณ  ๋ถˆ๋ช…ํ™•ํ•œ ์„ค๊ณ„์ง€์ ์„ ์•Œ๋ ค์ค€๋‹ค. ๋‹จ, ์˜์ง€ํ•˜๋ฉด ์•ˆ๋œ๋‹ค. ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋งŒ ์ข‹์€ ์•ˆ ์ข‹์€ ์„ค๊ณ„๋ฅผ ํ•˜๊ฒŒ ๋จ.

 

์‹คํŒจํ•˜๋Š” ์ด์œ 

  1. ์ฝ”๋“œ๊ฐ€ ์ด๋ฃจ๊ณ ์ž ํ•˜๋Š” ๊ฐ€์น˜๋‚˜ ๊ธฐ๋Šฅ์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋ณด๋‹ค ๊ทธ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ํ…Œ์ŠคํŠธํ•œ๋‹ค.
  2. ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๋“ค์ด ๊ตฌํ˜„์ฒด์™€ ๊ฒฐํ•ฉ๋„๊ฐ€ ๋†’์•„์ง„๋‹ค.
  3. ๊ตฌํ˜„์ฒด๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋ฉด ๊ฒฐํ•ฉ๋˜์–ด์žˆ๋Š” ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋“ค์ด ๊นจ์ง„๋‹ค.

์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ฒด๊ฐ€ ์•„๋‹Œ ์ธํ„ฐํŽ˜์ด์Šค ์ž์ฒด๋ฅผ ํ…Œ์ŠคํŠธํ•ด์•ผํ•œ๋‹ค. ์ฆ‰, ๊ตฌํ˜„์ฒด๋ฅผ ๋ฆฌํŒฉํ† ๋งํ•˜๋”๋ผ๋„ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค๊ฐ€ ๊นจ์ง€์ง€ ์•Š๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ํฌ์ธํŠธ์ด๋‹ค.

 

 

ํ…Œ์ŠคํŠธ์˜ ๋ฒ”์œ„

  • ํ†ตํ•ฉ ํ…Œ์ŠคํŠธ: ์—ฌ๋Ÿฌ ์ž‘์—… ๋‹จ์œ„๊ฐ€ ์—ฐ๊ณ„๋œ ์›Œํฌ ํ”Œ๋กœ์šฐ๋ฅผ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์œ„ํ•œ ์ˆ˜๋‹จ (๊ฐ์ฒด๊ฐ„, ์„œ๋น„์Šค ๊ฐ„, ์‹œ์Šคํ…œ ๊ฐ„)
  • ๊ธฐ๋Šฅ ํ…Œ์ŠคํŠธ : ๊ณต๊ฐœ๋œ API์˜ ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ์— ํ•ด๋‹นํ•˜๋Š” ์ฝ”๋“œ ๊ฒ€์‚ฌ (์ปจํŠธ๋กค๋Ÿฌ ํ˜ธ์ถœ, http ๋“ฑ)
  • ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ : ์ฃผ์–ด์ง„ ๋‹จ์œ„ ์‹œ๊ฐ„๋™์•ˆ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์–ผ๋งˆ๋‚˜ ๋งŒ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
  • ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ : ๊ณ ๊ฐ ๋˜๋Š” ๋Œ€๋ฆฌ์ธ์ด ์ •์˜๋˜์–ด์ง„ ๋ชจ๋“  ๋ชฉ์ ์— ๋ถ€ํ•ฉ๋˜๋Š”์ง€ ํ˜ธ๊ฐ€์ธํ•ด๋ณด๊ณ ์ž ํ•˜๋Š” ๊ฒ€์‚ฌ

 

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

์ฝ”๋“œ์˜ ๋ฌธ์„œํ™” >> ์ƒ˜ํ”Œ์ฝ”๋“œ

 

์ข‹์€ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ: F.I.R.S.T ๋ฒ•์น™

fast  ๋น ๋ฅด๊ฒŒ

independent ๋…๋ฆฝ์ ์œผ๋กœ

repeatable ๋ฐ˜๋ณต๊ฐ€๋Šฅํ•˜๊ฒŒ

self-validating ์ž๊ฐ€ ๊ฒ€์ฆํ•˜๋Š”

timely์ ์‹œ์—