์๋ ํ์ธ์ Foma๐ ์ ๋๋ค!
์ค๋ ์์๋ณผ ์ฃผ์ ๋ ๊ฐ๋ฐ์๋ผ๋ฉด ๋ฌด์กฐ๊ฑด ๊ฐ์ถฐ์ผ ํ๋ ์์ธ์ธ TDD์ ๋ํด์ ์์๋ณด๊ฒ ์ต๋๋ค.
์ ๋ง ์ค์ํ ๊ฐ๋ ์ธ๋ฐ ์ด์ ์์ผ ๋ค๋ฃจ๊ฒ ๋๋ค๋...
๋ฐ๋ก ์์ํ ๊ฒ์!
TDD(ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ)๋? ๐ค
"ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ๋งค์ฐ ์งง์ ๊ฐ๋ฐ ์ฌ์ดํด์ ๋ฐ๋ณตํ๋ ์ํํธ์จ์ด ๊ฐ๋ฐ ํ๋ก์ธ์ค ์ค ํ๋์ด๋ค. ๊ฐ๋ฐ์๋ ๋จผ์ ์๊ตฌ์ฌํญ์ ๊ฒ์ฆํ๋ ์๋ํ๋ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฐ ํ์, ๊ทธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํต๊ณผํ๊ธฐ ์ํ ์ต์ํ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค. ๋ง์ง๋ง์ผ๋ก ์์ฑํ ์ฝ๋๋ฅผ ํ์ค์ ๋ง๋๋ก ๋ฆฌํฉํ ๋งํ๋ค. ์ด ๊ธฐ๋ฒ์ ๊ฐ๋ฐํ๊ฑฐ๋ '์ฌ๋ฐ๊ฒฌ' ํ ๊ฒ์ผ๋ก ์ธ์ ๋๋ Kent Beck์ 2003๋ ์ TDD๊ฐ ๋จ์ํ ์ค๊ณ๋ฅผ ์ฅ๋ คํ๊ณ ์์ ๊ฐ์ ๋ถ์ด๋ฃ์ด์ค๋ค๊ณ ๋งํ์๋ค." - ์ํค ๋ฐฑ๊ณผ -
๊ฐ๋จํ๊ฒ ๋งํ๋ฉด ์ฝ๋๋ฅผ ์ฐ๊ธฐ ์ ์ ํ ์คํธ๋ฅผ ๋จผ์ ํ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ ๋ฐฉ์์ ๋๋ค.
์กฐ๊ธ ๊ตฌ์ฒด์ ์ผ๋ก ์ค๋ช ๋๋ฆฌ๋ฉด ์ด๋ ํ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํ ์คํธ ํ๊ธฐ ์ ํฉํ ๋จ์๋ก ์๋ฅด๊ณ
๊ทธ๊ฒ์ ํต๊ณผํ๋ ํ ์คํธ,์คํจํ๋ ํ ์คํธ ๋ฑ์ ์์ฑํ๊ณ ์ด๋ฅผ ํต๊ณผํ๋ฉด
๊ทธ ๋ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋ฐ๋ณตํ์ฌ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฐฉ์์ ๋๋ค.
TDD ๊ณผ์ ๐ง
1. Red
์ด๋ ํ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ ํ ์คํธ๊ฐ ์คํจํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ค์ ๋ก ์คํจํ๋์ง ํ์ธํฉ๋๋ค.
2. Green
์ด๋ ํ ๊ธฐ๋ฅ์ ๊ฒ์ฆํ๋ ํ ์คํธ๊ฐ ํต๊ณผํ๋ ์ฝ๋๋ฅผ ์์ฑํฉ๋๋ค.
์ค์ ๋ก ์ฑ๊ณตํ๋์ง ํ์ธํฉ๋๋ค.
3. Refactor
์์ ๋ ์คํจํ๋ ํ ์คํธ์ ์ฑ๊ณตํ๋ ํ ์คํธ๋ฅผ ๋ชจ๋ ๊ฒ์ฆํ์๋ค๋ฉด
์์ฑํ ์ฝ๋๋ฅผ ๊นจ๋ํ๊ฒ ๊ฐ๋ ์ฑ ์๊ฒ ๊ณ ์นฉ๋๋ค.
4. Repeat
์ด ์ธ๊ฐ์ง ๊ณผ์ ์ ๋ฐ๋ณตํ์ฌ ํ๋ก๊ทธ๋จ์ ์์ฑํฉ๋๋ค.
TDD๊ฐ ์ค์ํ ์ด์ ๐
๋ณดํต์ ๊ฐ๋ฐ์๋ผ๋ฉด ์๋์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ํ ๊ฒ์ ๋๋ค.
์ฝ๋๋ฅผ ์์ฑํ๊ณ ๋์ ์๋๋์ง ํ์ธ -> ์๋จ (ํ ์คํธ ์๋ฃ) -> ๋ค์ ์ฝ๋ ์์ฑ
์ด์ฐ๋๊ฑด ์ฝ๋๊ฐ ์๋๋์ง ํ์ธํ๊ณ ํ ์คํธ๋ฅผ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ฉด ์๊ด ์๋๊ฑฐ ์๋๊ฐ? ๊ฒฐ๊ตญ์๋ ํ ์คํธ๋ฅผ ํ๋๋ฐ? ๋ผ๊ณ ์๊ฐํ์ต๋๋ค....
"๊ทธ๋ผ TDD๋ก ๊ฐ๋ฐ์ ์ ํด์ผํ๋๊ฑด๋ฐ?"
1. ๋ช ํํ ์ค๊ณ
์ ํฉํ ํ ์คํธ๋ฅผ ํ๊ธฐ ์ํด์ ์ต์์ ๋จ์๋ก ๊ธฐ๋ฅ์ ๋ถ๋ฆฌํด์ผ ํฉ๋๋ค.
์ด ๊ณผ์ ์์ ์ด๋ ํ ๊ธฐ๋ฅ๋ค์ด ์๋์ง ์ฒ ์ ํ ๊ตฌ์กฐํ ์ํฌ ์ ์๊ณ
์ด ๊ธฐ๋ฅ(ํจ์)๊ฐ ์ด๋ ํ ๊ฒฝ์ฐ์ ํต๊ณผํ๋์ง ์ด๋ ํ ๊ฒฝ์ฐ์ ์คํจํ๋์ง๋ฅผ ์์ฑํจ์ผ๋ก์
๊ธฐ๋ฅ์ด ๋จธ๋ฆฟ ์์์ ํจ์ฌ ๋ช ํํด์ง ์ ์์ต๋๋ค.
2. ๊ฐ๋ฐ ์๋ ํฅ์
"์๋ ํ ์คํธ๋ฅผ ๋ชจ๋ ๊ธฐ๋ฅ ์ ์ ์์ฑํ๋ค๋ฉด ๋ ์๊ฐ์ด ๋ง์ด ๋๋๊ฑฐ ์๋๊ฐ?"
๋ผ๊ณ ์๊ฐํ์ค ์ ์์ต๋๋ค... ๋ง์ต๋๋ค ๋ง์ฝ ์ค๋ฅ๊ฐ ์์๋ค๋ฉด....
ํ์ง๋ง ๊ฐ๋ฐํ๋ ๊ณผ์ ์์ ์ค๋ฅ๋ฅผ ํ๋ฒ๋ ๋ง๋์ง ์๋๊ฑด ๋ถ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐํ๋๋ฐ์.
์ค๋ฅ๊ฐ ๋ฐ์ํ์ ๋ ์ด๊ฒ ๋ฌด์์ด๊ณ ,์ด๋ ์ฝ๋์์ ๋ฐ์ํ์ผ๋ฉฐ, ์ ๋ฐ์ํ๋์ง๋ฅผ
์ฐพ๊ณ ํด๊ฒฐํ๋ ๊ณผ์ ์ด ๊ฐ๋ฐ ์๋๊ฐ ๋ฆ์ถ๊ฒ ํ๋ค๊ณ ์๊ฐํ๋๋ฐ์.
TDD๋ก ๊ฐ๋ฐ์ ํ๊ฒ ๋๋ค๋ฉด ์ด๋ฏธ ํ ์คํธ๋ฅผ ๋ง์ถ ์ํ์์ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์
์ ์ด๋ ์์ ๊ฐ์ ์ํฉ์ด ์๊ธธ ์ผ์ ์๋ค๋ ๊ฒ์ด์ฃ .
3. ์์ ์ฑ์ ๋ณด์ฅ
๊ฐ๋ฐ์ ํ๋ ๊ณผ์ ์์ ์ด๋ ํ ํ ์คํธ๋ฅผ ๊ฑฐ์ณค๋์ง ๋์ผ๋ก ํ์ธํ ์ ์๊ธฐ ๋๋ฌธ์
์ด๋ค ๊ณ ๋ฏผ์ ํ๊ณ ๋ ์ด ํ๋ก๊ทธ๋จ์ด ์ผ๋ง๋ ์์ ํ๊ฐ๋ฅผ ๋ณด์ฅํ ์ ์์ต๋๋ค.
๋ํ ์ด ์์ ์ฑ์ ๋ค๋ฅธ ์ฌ๋๋ฟ๋ง ์๋๋ผ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฐ๋ฐ์ ์์ ์๊ฒ๋
์์ ์ฑ์ ์ด๋์ ๋ ๋ณด์ฅํ๋ฉด์ ์์ ์ ์ฝ๋์ ๊ตฌ์กฐ ์ค๊ณ์ ๋์ฑ ์์ ๊ฐ์ ๊ฐ๊ฒ ํด์ค๋๋ค.
'๐ฅ Computer Science > Programming' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๐ป Programming] Clean Code - ์๋ฏธ์๋ ์ด๋ฆ์ ์จ๋ผ (0) | 2021.06.13 |
---|---|
[๐ป Programming] Clean Code - ๊นจ๋ํ ์ฝ๋๋? (feat.์จ์ผํ๋ ์ด์ ) (0) | 2021.06.13 |
[CS] F.I.R.S.T ์์น์ด๋? (feat.UnitTest) (0) | 2021.06.07 |
[CS] ์ผ๊ธ ๊ฐ์ฒด๋? (1) | 2021.05.12 |
[Programming] SOLID ์์น์ด๋? (feat.iOS ๊ฐ๋ฐ์) (2) | 2021.03.04 |
๋๊ธ