์ค๊ณ - ๊ฐ๋ฐ(์ฝ๋์์ฑ) - ํ ์คํธ(์ฝ๋์์ฑ)
์๋ชป๋๋ฉด ๋ค์ ์ค๊ณ์์ ..
์์ฆ ์์ฃผ ํซํ TDD๊ฐ ๋ฌด์์ธ์ง ๊ถ๊ธํ๊ธฐ๋ ํ๊ณ , ์ ์ด๋ ๊ฒ ๋ง์ ์ฌ๋๋ค์ด ์ด๊ดํ๊ฒ ๋์๋์ง ์์๋ณด๊ธฐ ์ํด ํฌ์คํ ํ๊ฒ ๋์๋ค.
TDD(Test Driven Development)๋
Test Driven Development์ ์ฝ์๋ก 'ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ'์ด๋ผ๊ณ ํ๋ค. ๋ฐ๋ณต ํ ์คํธ๋ฅผ ์ด์ฉํ ์ํํธ์จ์ด ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก ์ผ๋ก ์์ ๋จ์์ ํ ์คํธ์ผ์ด์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋จ๊ณ๋ฅผ ๋ฐ๋ณตํ์ฌ ๊ตฌํํจ์ผ๋ก์จ ๋ถํ์ํ ์ค๊ณ๋ฅผ ํผํ๊ณ , ์ ํํ ์๊ตฌ์ฌํญ์ ์ง์คํ๋๋ก ํ๋ ๋ฐฉ๋ฒ๋ก ์ด๋ค.
์ค๊ณ -> ํ ์คํธ(์ฝ๋์์ฑ) -> ๊ฐ๋ฐ(์ฝ๋์์ฑ)
๋ง์ฝ, ์ค๊ณ๊ฐ ์๋ชป๋์์ผ๋ฉด ํ
์คํธ๋จ๊ณ์์ ๋ฐ๋ก ์์ ํ ์ ์๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ ์ธก๋ฉด์์๋ TDD๊ฐ ์ข๋ค. (ํ์ง๋ง, ๋ชจ๋ ๋ฐฉ๋ฒ๋ก ์๋ ์ฅ์ ๋ง ์๋ ๊ฒ์ด ์๋๊ธฐ ๋๋ฌธ์ ํ์ฌ ์ํฉ์ TDD๋ฅผ ๋์
ํ๋ ๊ฒ์ด ์ข์์ง๋ ์ถฉ๋ถํ ๊ณ ๋ฏผ์ ํด๋ด์ผํ๋ค.)
TDD ๊ฐ๋ฐ ์ฌ์ดํด
- ํ ์คํธ์ผ์ด์ค ์คํจ -> ์์
- ํ ์คํธ์ผ์ด์ค ์ฑ๊ณต -> ๋ฆฌํฉํ ๋ง
์ ์ฌ์ฉํ ๊น?
- ๋ณํ์ ๋ํ ๋๋ ค์์ ์ค์ฌ์ค๋ค. = ๋ฆฌํฉํ ๋ง์ด ํธํ๋ค.
- ๋๋ฒ๊น ์๊ฐ์ ์ค์ฌ์ค๋ค.
- ๋์ํ๋ ๋ฌธ์ ์ญํ ์ ํ๋ค.
TDD ์ฅ์
1) ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋์์ง๋ค.
๋๋ค๊ณ ์ข์ ๊ฑด ์๋์ง๋ง... ๋๊ตฐ๊ฐ๋ ๋์ค์ ์์ฑํด๋ ๋๋๋ฐ ๋ญ๊ฐ ๋ค๋ฅด๋?
>> ์์ด๋จน๊ฑฐ๋ ๋ค๋ก ๋ฏธ๋ฃจ๋ค ๊ฒฐ๊ตญ ์ํ ๊ฑธ? ํ๊ธฐ์ซ์ ๊ฑฐ ๋ฏธ๋ฆฌํ์
2) ์ค๋ฒ์์ง๋์ด๋ง ๋ฐฉ์ง
๋ฏธ๋์ ํ์ํ ๊ฒ ๊ฐ์ ์ฝ๋๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ์ง ์๋๋ก ์ ๋ง ๋ฑ ํ์ํ ๊ธฐ๋ฅ๋ง ๋ง๋ค ์ ์๊ฒ ํด์ค๋ค.
3) ์ค๊ณ์ ๋ํ ํผ๋๋ฐฑ์ด ๋น ๋ฅด๋ค
์๋ชป ์ค๊ณ ํ๋ค๋ฉด, ์ค๊ณ๋ฅผ ์์ ํ๋ฉด ๋๋ค. ๋ณต์กํ๊ณ ์๋ชป๋ ์ค๊ณ๋ ํ ์ผ๋ฅผ ์์ฑํ๊ธฐ ํ๋ค ๊ฒ์. ์ค๊ณ๋ฅผ ๋ฐ๊ฟ๋ผ.
TDD์ ์คํด
๋์ ์์ง์ ์ ๋ํ์ง ์๋๋ค
๋จ์ผ ์ฑ ์ ์์น๊ณผ ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น ์๋ฐฐ์ ์ด๋ค ์ ํธ๋ ์ฃผ์ง ์๋๋ค
์ธํฐํ์ด์ค ์ผ๊ด์ฑ์ ๋์ถํ์ง ์๋๋ค
๋ฆฌํฉํ ๋ง ๋จ๊ณ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ์๋ดํ๊ฑฐ๋ ์ข์ ๊ตฌ์กฐ๋ฅผ ๊ฐ๋๋ก ๊ฐ์ ํ์ง ์๋๋ค
์ค๊ณ ๋ฐฉ๋ฒ๋ก ์ด ์๋๋ค!!! ์ค๊ณ์ ์ํฅ์ ๋ฏธ์น์ง ์๋ ๊ฑด ์๋์ง๋ง
๊ฐํ ๊ฒฐํฉ๊ณผ ์์กด์ฑ ์์น ์๋ฐฐ๋ฅผ ๊ฒฝ๊ณ ํ๊ณ ๋ถ๋ช ํํ ์ค๊ณ์ง์ ์ ์๋ ค์ค๋ค. ๋จ, ์์งํ๋ฉด ์๋๋ค. ํ ์คํธํ๊ธฐ๋ง ์ข์ ์ ์ข์ ์ค๊ณ๋ฅผ ํ๊ฒ ๋จ.
์คํจํ๋ ์ด์
- ์ฝ๋๊ฐ ์ด๋ฃจ๊ณ ์ ํ๋ ๊ฐ์น๋ ๊ธฐ๋ฅ์ ํ ์คํธํ๊ธฐ๋ณด๋ค ๊ทธ ๊ธฐ๋ฅ์ ์ด๋ป๊ฒ ๊ตฌํํ๊ณ ์๋์ง๋ฅผ ํ ์คํธํ๋ค.
- ํ ์คํธ์ผ์ด์ค๋ค์ด ๊ตฌํ์ฒด์ ๊ฒฐํฉ๋๊ฐ ๋์์ง๋ค.
- ๊ตฌํ์ฒด๋ฅผ ๋ฆฌํฉํ ๋งํ๋ฉด ๊ฒฐํฉ๋์ด์๋ ํ ์คํธ ์ผ์ด์ค๋ค์ด ๊นจ์ง๋ค.
์ธํฐํ์ด์ค ๊ตฌํ์ฒด๊ฐ ์๋ ์ธํฐํ์ด์ค ์์ฒด๋ฅผ ํ ์คํธํด์ผํ๋ค. ์ฆ, ๊ตฌํ์ฒด๋ฅผ ๋ฆฌํฉํ ๋งํ๋๋ผ๋ ํ ์คํธ์ผ์ด์ค๊ฐ ๊นจ์ง์ง ์๋๋ก ํ๋ ๊ฒ์ด ํฌ์ธํธ์ด๋ค.
ํ ์คํธ์ ๋ฒ์
- ํตํฉ ํ ์คํธ: ์ฌ๋ฌ ์์ ๋จ์๊ฐ ์ฐ๊ณ๋ ์ํฌ ํ๋ก์ฐ๋ฅผ ํ ์คํธํ๊ธฐ ์ํ ์๋จ (๊ฐ์ฒด๊ฐ, ์๋น์ค ๊ฐ, ์์คํ ๊ฐ)
- ๊ธฐ๋ฅ ํ ์คํธ : ๊ณต๊ฐ๋ API์ ๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ์ ํด๋นํ๋ ์ฝ๋ ๊ฒ์ฌ (์ปจํธ๋กค๋ฌ ํธ์ถ, http ๋ฑ)
- ๋ถํ ํ ์คํธ : ์ฃผ์ด์ง ๋จ์ ์๊ฐ๋์ ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ผ๋ง๋ ๋ง์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋์ง ๊ฒ์ฌ
- ์ธ์ ํ ์คํธ : ๊ณ ๊ฐ ๋๋ ๋๋ฆฌ์ธ์ด ์ ์๋์ด์ง ๋ชจ๋ ๋ชฉ์ ์ ๋ถํฉ๋๋์ง ํธ๊ฐ์ธํด๋ณด๊ณ ์ ํ๋ ๊ฒ์ฌ
ํ๋ก๊ทธ๋จ์ ์์ ์ฑ์ ๋์ด๋ ค๋ฉด ๊ฒฐ๊ตญ, ๋ฌธ์ ์ ์ ๋นจ๋ฆฌ ๋ฐ๊ฒฌํ๋ ๊ฒ ์ค์ํ ์ผ์ด๋ค. ๋ณ๊ฒฝ์ ์์ฃผํ๊ณ ํ์ง์ ํฅ์์ํค๋ ๊ฒ์ด ํต์ฌ์ด๋ค.
์ฝ๋์ ๋ฌธ์ํ >> ์ํ์ฝ๋
์ข์ ๋จ์ ํ ์คํธ: F.I.R.S.T ๋ฒ์น
fast ๋น ๋ฅด๊ฒ
independent ๋ ๋ฆฝ์ ์ผ๋ก
repeatable ๋ฐ๋ณต๊ฐ๋ฅํ๊ฒ
self-validating ์๊ฐ ๊ฒ์ฆํ๋
timely์ ์์