TDD

ํ•™์Šต ํ‚ค์›Œ๋“œ

  • TDD

    • ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)

TDD(Test Driven Development)

  • ํ…Œ์ŠคํŠธ๊ฐ€ ์ „์ฒด ๊ฐœ๋ฐœ์„ ์ฃผ๋„ํ•ด ๋‚ด๊ฐ€๋Š” ๊ฒƒ โ‡’ ๋น„์ง€๋‹ˆ์Šค ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์‹ฌ์ด ๋˜์–ด ์ „์ฒด ๊ฐœ๋ฐœ ๋ฐฉํ–ฅ์„ ์ด๋Œ๊ณ  ๋‚˜๊ฐ€๋Š” ๊ฒƒ

๋ฐ˜๋ณต ํ…Œ์ŠคํŠธ๋ฅผ ์ด์šฉํ•œ ์†Œํ”„ํŠธ์›จ์–ด ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ, ์ž‘์€ ๋‹จ์œ„์˜ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์ด๋ฅผ ํ†ต๊ณผํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋‹จ๊ณ„๋ฅผ ๋ฐ˜๋ณตํ•˜์—ฌ ๊ตฌํ˜„ํ•œ๋‹ค.

๐Ÿ“– ๋‹จ์œ„ ํ…Œ์ŠคํŠธ(Unit Test)๋ž€?

  • ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์†Œ์Šค ์ฝ”๋“œ์˜ ํŠน์ • ๋ชจ๋“ˆ์ด ์˜๋„๋œ ๋Œ€๋กœ ์ •ํ™•ํžˆ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฒ€์ฆํ•˜๋Š” ์ ˆ์ฐจ์ด๋‹ค.

ํšŒ์‚ฌ์—์„œ ํ˜น์€ ๊ฐœ์ธ์ด ์–ด๋– ํ•œ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด์„œ ์ž‘์„ฑํ–ˆ๋˜ ํ”„๋กœ๊ทธ๋žจ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฏฟ์„๋งŒํ•œ ์ฝ”๋“œ์ธ๊ฐ€์— ๋Œ€ํ•œ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ ˆ์ฐจ๋ฅผ ๋งํ•œ๋‹ค.

๐Ÿค” ์™œ TDD๋ฅผ ํ•ด์•ผ ํ• ๊นŒ? TDD์˜ ํ•„์š”์„ฑ

  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ์ „ ์„ค๊ณ„์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์ž‘์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

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

  • ์˜ค๋ฅ˜์— ๋Œ€ํ•ด ์‹ ์†ํ•œ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ, ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚จ๋‹ค.

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋Š” ์ด์— ๋Œ€ํ•ด ์–ด๋–ค ๋ถ€๋ถ„์ด ์–ด๋””๊นŒ์ง€ ํ†ต๊ณผ๋ฅผ ํ–ˆ๋Š”์ง€ ์–ด๋А ๋ถ€๋ถ„์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์•Œ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์‹ ์†ํ•œ ํŒŒ์•…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

  • ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜ ์ธก๋ฉด์—์„œ ์ฝ”๋“œ ์ž‘์„ฑ ์˜๋„ ํŒŒ์•… ๊ฐ€๋Šฅ (๋ฌธ์„œ์˜ ๋Œ€์ฒด ๊ฐ€๋Šฅ)

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

โ™ป๏ธ TDD Cycle

TDD Cycle
  • Red โ†’ ์‹คํŒจํ•˜๋Š” ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.

  • Green โ†’ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์„ฑ๊ณต์‹œํ‚ค๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ(Test Pass)๋ฅผ ์ž‘์„ฑํ•œ๋‹ค.(์˜ฌ๋ฐ”๋ฅธ ๋ฐฉ๋ฒ•์ด ์•„๋‹ˆ์–ด๋„ ๊ดœ์ฐฎ๋‹ค.)

  • Refactor โ†’ ์ค‘๋ณต ์ฝ”๋“œ ์ œ๊ฑฐ, ์ผ๋ฐ˜ํ™” ๋“ฑ์˜ ๋ฆฌํŒฉํ† ๋ง(Refactor)์„ ์ˆ˜ํ–‰ํ•œ๋‹ค. (TDD์—์„œ ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๋ถ€๋ถ„์ด์ง€๋งŒ, ๊ฐ„๊ณผ๋  ๋•Œ๊ฐ€ ๋งŽ๋‹ค.)

โœ๐Ÿป TDD ์ •๋ฆฌ

  • TDD๋Š” ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์„ ๋œปํ•˜๋ฉฐ ํ…Œ์ŠคํŠธ๊ฐ€ ์ค‘์‹ฌ์ด ๋˜์–ด ์ „์ฒด ๊ฐœ๋ฐœ์˜ ๋ฐฉํ–ฅ์„ ์ด๋Œ์–ด ๊ฐ€๋Š” ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก  ์ค‘ ํ•˜๋‚˜์ด๋‹ค.

  • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ณผ์ •์—์„œ ์„ค๊ณ„๋ฅผ ํ…Œ์ŠคํŠธ ํ•จ์œผ๋กœ์จ ์•ˆ์ •์„ฑ ์žˆ๋Š” ์ œํ’ˆ์„ ๋งŒ๋“œ๋Š”๋ฐ ๊ธฐ์—ฌํ•˜๊ณ  ๋””๋ฒ„๊น… ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•ด์ฃผ๊ณ  ์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ”— ์ฐธ๊ณ 

Last updated