TDD
ํ์ต ํค์๋
TDD
๋จ์ ํ ์คํธ(Unit Test)
TDD(Test Driven Development)
ํ ์คํธ๊ฐ ์ ์ฒด ๊ฐ๋ฐ์ ์ฃผ๋ํด ๋ด๊ฐ๋ ๊ฒ โ ๋น์ง๋์ค ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๋ ๊ฒ์ด ์๋ ํ ์คํธ๊ฐ ์ค์ฌ์ด ๋์ด ์ ์ฒด ๊ฐ๋ฐ ๋ฐฉํฅ์ ์ด๋๊ณ ๋๊ฐ๋ ๊ฒ
๋ฐ๋ณต ํ ์คํธ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๋ฐฉ๋ฒ๋ก ์ผ๋ก, ์์ ๋จ์์ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํํ๋ค.
๐ ๋จ์ ํ
์คํธ(Unit Test)๋?
์ปดํจํฐ ํ๋ก๊ทธ๋๋ฐ์์ ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋ ๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ์ด๋ค.
ํ์ฌ์์ ํน์ ๊ฐ์ธ์ด ์ด๋ ํ ๊ธฐ๋ฅ์ ์ํด์ ์์ฑํ๋ ํ๋ก๊ทธ๋จ ์์ ์๋ ๋ชจ๋ ํจ์์ ๋ฉ์๋๊ฐ ๋ฏฟ์๋งํ ์ฝ๋์ธ๊ฐ์ ๋ํ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ๋งํ๋ค.
๐ค ์ TDD๋ฅผ ํด์ผ ํ ๊น? TDD์ ํ์์ฑ
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ์ ์ค๊ณ์ ๋ํด ๊ตฌ์ฒด์ ์ผ๋ก ์์ฑ์ด ๊ฐ๋ฅํ๋ค.
์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ด์ ์ ์ด๋ป๊ฒ ๊ตฌํํ ์ง ๊ณํํ๊ณ ๊ตฌ์ํ๋ค.
TDD
๋ ์ด๋ฌํ ์ค๊ณ๋ฅผ ๊ฐ์ ํ๊ฒ ๋ง๋ค๋ฉฐ ๋ณด๋ค ๊ตฌ์ฒด์ ์ผ๋ก ๋์์ ๋ํด ์์ ํจ์ผ๋ก์จ ๋ด๊ฐ ๋ฌด์์ ๋ง๋ค์ด์ผ ํ๋์ง ์ด๋ค ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํ๋์ง ๋ช ํํ๊ฒ ํ์ ํ ์ ์๋ค.
์ค๋ฅ์ ๋ํด ์ ์ํ ํ์ ์ด ๊ฐ๋ฅํ๋ฉฐ, ๋๋ฒ๊น ์๊ฐ์ ๋จ์ถ์ํจ๋ค.
ํ ์คํธ ์ฝ๋
๋ ์ด์ ๋ํด ์ด๋ค ๋ถ๋ถ์ด ์ด๋๊น์ง ํต๊ณผ๋ฅผ ํ๋์ง ์ด๋ ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ๋ช ํํ๊ฒ ์ ์ ์์ผ๋ฏ๋ก ์ ์ํ ํ์ ์ด ๊ฐ๋ฅํ๋ค.
์ปค๋ฎค๋์ผ์ด์ ์ธก๋ฉด์์ ์ฝ๋ ์์ฑ ์๋ ํ์ ๊ฐ๋ฅ (๋ฌธ์์ ๋์ฒด ๊ฐ๋ฅ)
์ฐ๋ฆฌ๋ ์ฝ๋๋ฅผ ์ฝ๋ค ๋ณด๋ฉด ๋๋ก ๋ฌด์จ ์๋ฏธ์ธ์ง ๋ชจ๋ฅผ๋๊ฐ ์๋ค.์ด๋ฅผ ์ํด ์ฃผ์์ ๋ค๋ ๊ฒฝ์ฐ๋ ์๊ณ ํด๋น ์ฝ๋๋ฅผ ์์ฑํ ์ฌ๋์ ์ฐพ์๊ฐ๊ฑฐ๋ ๋๋ ์์ฑํ ๋ฌธ์๋ฅผ ๋ณด๊ณ ๋ ํ๋ค.
ํ ์คํธ ์ฝ๋
๋ ์ค๊ณ๋ฅผ ํ ๋น์์ ์ด๋ค ์๋๋ฅผ ๊ฐ์ง๊ณ ์์ฑ๋์๋์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๊ฒฐ๊ณผ ๊ฐ์ด ๋์ค๊ธธ ๊ธฐ๋ํ๋์ง๋ฅผ ์ ๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ด ์ฌ๋์ ์๋๋ฅผ ์ถฉ๋ถํ ํ์ ํ ์ ์๋ค.
โป๏ธ TDD Cycle
Red โ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
Green โ ํ ์คํธ ์ฝ๋๋ฅผ ์ฑ๊ณต์ํค๊ธฐ ์ํ ์ฝ๋(Test Pass)๋ฅผ ์์ฑํ๋ค.(์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ์๋์ด๋ ๊ด์ฐฎ๋ค.)
Refactor โ ์ค๋ณต ์ฝ๋ ์ ๊ฑฐ, ์ผ๋ฐํ ๋ฑ์ ๋ฆฌํฉํ ๋ง(Refactor)์ ์ํํ๋ค. (TDD์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด์ง๋ง, ๊ฐ๊ณผ๋ ๋๊ฐ ๋ง๋ค.)
โ๐ป TDD ์ ๋ฆฌ
TDD๋ ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋ปํ๋ฉฐ ํ ์คํธ๊ฐ ์ค์ฌ์ด ๋์ด ์ ์ฒด ๊ฐ๋ฐ์ ๋ฐฉํฅ์ ์ด๋์ด ๊ฐ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ค ํ๋์ด๋ค.
๊ธฐ๋ฅ์ ๊ตฌํํ๋ ๊ณผ์ ์์ ์ค๊ณ๋ฅผ ํ ์คํธ ํจ์ผ๋ก์จ ์์ ์ฑ ์๋ ์ ํ์ ๋ง๋๋๋ฐ ๊ธฐ์ฌํ๊ณ ๋๋ฒ๊น ์๊ฐ์ ๋จ์ถํด์ฃผ๊ณ ์ฝ๋์ ์๋๋ฅผ ๋ช ํํ ์ ์ ์๋ค.
๐ ์ฐธ๊ณ
Last updated