๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Frontend

TDD (ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ)

TDD(Test Driven Development)๋ž€?

TDD๋ž€ Test Driven Development๋ผ๋Š” ์•ฝ์ž๋กœ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์„ ์˜๋ฏธํ•œ๋‹ค.

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

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์€ ๋ฌด์—‡์ผ๊นŒ? 

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด๋ž€ ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด์„œ ๊ฐœ๋ฐœ์ด ์ด๋Œ์–ด์ง€๋Š” ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์ด ์ง„ํ–‰ํ•œ๋‹ค.

 

1. ํ…Œ์ŠคํŠธ๋ฅผ ๋จผ์ € ์ž‘์„ฑํ•œ๋‹ค.(๊ฐ„๋‹จํ•˜๊ฒŒ ์–ด๋–ค ๊ฒฐ๊ณผ๊ฐ€ ์˜ˆ์ธก๋˜์–ด์•ผ ํ•˜๋Š”์ง€ ๊ธฐ์ˆ ํ•˜๋Š” ๋‹จ๊ณ„)

2. ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ์˜ ๊ธฐ๋Šฅ๋งŒํผ์˜ ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ํ•œ๋‹ค.

3. ์ฝ”๋“œ๋ฅผ ๋ฆฌํŒฉํ† ๋ง ํ•œ๋‹ค.

 

์—ฌ๊ธฐ์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜์ง€ ์•Š์€ ๋ถ€๋ถ„์€ ๊ตฌํ˜„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์ด๋‹ค.

 

TDD cycle

 

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์€ ์œ„์™€ ๊ฐ™์€ ์‚ฌ์ดํด์„ ๋ฐ˜๋ณตํ•œ๋‹ค.

 

1. ๋จผ์ € ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ๊ฐœ๋ฐœ์ด ๊ตฌํ˜„๋˜์–ด์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋Œ๋ฆฌ๋ฉด ์‹คํŒจ๋ฅผ ํ•˜๊ฒŒ ๋œ๋‹ค.(๐Ÿ”ด)

2. ์ž‘์„ฑํ•œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ˆ˜ํ–‰์ด ๋˜๋„๋ก ์‹ค์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์—…ํ•œ๋‹ค.(๐ŸŸข)

3. ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋ฅผ ํ‘œ์ค€์— ๋งž๋„๋ก ๋ฆฌํŒฉํ† ๋ง ๋‹จ๊ณ„์ด๋‹ค.(๐ŸŸก)

ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ์ด ํ•„์š”ํ•œ ์ด์œ 

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

 

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