2022. 03. 06
๐ ์ค๋ ์ฝ์ ๋ฒ์
9์ฅ. ๋จ์ ํ
์คํธ
๐ ์ฑ
์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ
- TDD ๋ฒ์น ์ธ ๊ฐ์ง (p.155)
1. ์คํจํ๋ ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค.
2. ์ปดํ์ผ์ ์คํจํ์ง ์์ผ๋ฉด์ ์คํ์ด ์คํจํ๋ ์ ๋๋ก๋ง ๋จ์ ํ
์คํธ๋ฅผ ์์ฑํ๋ค.
3. ํ์ฌ ์คํจํ๋ ํ
์คํธ๋ฅผ ํต๊ณผํ ์ ๋๋ก๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ๋ฌธ์ ๋ ์ค์ ์ฝ๋๊ฐ ์งํํ๋ฉด ํ
์คํธ ์ฝ๋๋ ๋ณํด์ผ ํ๋ค๋ ๋ฐ ์๋ค. ๊ทธ๋ฐ๋ฐ ํ
์คํธ ์ฝ๋๊ฐ ์ง์ ๋ถํ ์๋ก ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์์ง๋ค. ํ
์คํธ ์ฝ๋๊ฐ ๋ณต์กํ ์๋ก ์ค์ ์ฝ๋๋ฅผ ์ง๋ ์๊ฐ๋ณด๋ค ํ
์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๊ธฐ ์ญ์์ด๋ค. (p.156)
- ํ
์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋ ๋ชป์ง ์๊ฒ ์ค์ํ๋ค. (p.157)
- ์ฝ๋์ ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ์ ๊ณตํ๋ ๋ฒํ๋ชฉ์ด ๋ฐ๋ก ๋จ์ ํ
์คํธ๋ค. (p.157)
- ์ค์ ์ฝ๋๋ฅผ ์ ๊ฒํ๋ ์๋ํ๋ ๋จ์ ํ
์คํธ ์ํธ๋ ์ค๊ณ์ ์ํคํ
์ฒ๋ฅผ ์ต๋ํ ๊นจ๋ํ๊ฒ ๋ณด์กดํ๋ ์ด์ ๋ค. (p.157)
- ๊นจ๋ํ ํ
์คํธ ์ฝ๋๋ฅผ ๋ง๋ค๋ ค๋ฉด? ์ธ ๊ฐ์ง๊ฐ ํ์ํ๋ค. ๊ฐ๋
์ฑ, ๊ฐ๋
์ฑ, ๊ฐ๋
์ฑ. (p.158)
- ๋ช
๋ฃ์ฑ, ๋จ์์ฑ, ํ๋ถํ ํํ๋ ฅ์ด ํ์ํ๋ค. ํ
์คํธ ์ฝ๋๋ ์ต์์ ํํ์ผ๋ก ๋ง์ ๊ฒ์ ๋ํ๋ด์ผ ํ๋ค. (p.158)
- BUILD-OPERATE-CHECK ํจํด
BUILD : ํ
์คํธ ์๋ฃ๋ฅผ ๋ง๋ ๋ค.
OPERATE : ํ
์คํธ ์๋ฃ๋ฅผ ์กฐ์ํ๋ค.
CHECK : ์กฐ์ํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ค.
- ์ค์ ํ๊ฒฝ์์๋ ์ ๋๋ก ์ ๋์ง๋ง ํ
์คํธ ํ๊ฒฝ์์๋ ์ ํ ๋ฌธ์ ์๋ ๋ฐฉ์์ด ์๋ค. ๋๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ CPU ํจ์จ๊ณผ ๊ด๋ จ ์๋ ๊ฒฝ์ฐ๋ค. ์ฝ๋์ ๊นจ๋ํจ๊ณผ๋ ์ฒ ์ ํ ๋ฌด๊ดํ๋ค. (p.164)
- given-when-then : ํ
์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ๋ฐ ๊ตฌ์กฐํ๋ ๋ฐฉ๋ฒ (p.165)
- TEMPLATE METHOD ํจํด : ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌ์กฐ๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์๊ณ ๋ฆฌ์ฆ์ ํน์ ๋จ๊ณ๋ค์ ๋ค์ ์ ์ํ ์ ์๊ฒ ํด ์ค (p.165)
- “ํ
์คํธ ํจ์ ํ๋๋ ๊ฐ๋
ํ๋๋ง ํ
์คํธํ๋ผ” (p.167)
- F.I.R.S.T : ๊นจ๋ํ ํ
์คํธ์ ๋ค์ฏ ๊ฐ์ง ๊ท์น (p.167-168)
๋น ๋ฅด๊ฒ Fast : ํ
์คํธ๋ ๋นจ๋ฆฌ ๋์์ผ ํ๋ค.
๋
๋ฆฝ์ ์ผ๋ก Independent : ๊ฐ ํ
์คํธ๋ ๋
๋ฆฝ์ ์ผ๋ก ๊ทธ๋ฆฌ๊ณ ์ด๋ค ์์๋ก ์คํํด๋ ๊ด์ฐฎ์์ผ ํ๋ค.
๋ฐ๋ณต๊ฐ๋ฅํ๊ฒ Repeatable : ํ
์คํธ๋ ์ด๋ค ํ๊ฒฝ์์๋ ๋ฐ๋ณต ๊ฐ๋ฅํด์ผ ํ๋ค.
์๊ฐ๊ฒ์ฆํ๋ Self-Validating : ํ
์คํธ๋ ๋ถ์ธ bool ๊ฐ์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ด์ผ ํ๋ค.
์ ์์ Timely : ๋จ์ ํ
์คํธ๋ ํ
์คํธํ๋ ค๋ ์ค์ ์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ง์ ์ ๊ตฌํํ๋ค.
- ํ
์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋๋งํผ์ด๋ ํ๋ก์ ํธ ๊ฑด๊ฐ์ ์ค์ํ๋ค. (p.168)
- ํ
์คํธ ์ฝ๋๋ ์ง์์ ์ผ๋ก ๊นจ๋ํ๊ฒ ๊ด๋ฆฌํ์. ํํ๋ ฅ์ ๋์ด๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํ์. ํ
์คํธ API๋ฅผ ๊ตฌํํด ๋๋ฉ์ธ ํนํ ์ธ์ด DSL๋ฅผ ๋ง๋ค์. ๊ทธ๋ฌ๋ฉด ๊ทธ๋งํผ ํ
์คํธ ์ฝ๋๋ฅผ ์ง๊ธฐ๊ฐ ์ฌ์์ง๋ค. (p.168)
๐ ์ค๋ ์ฝ์ ์๊ฐ
- TDD๋ฅผ ๋ง์ด ๋ค์ด๋ณด๊ธด ํ์ผ๋ ์์ง๊น์ง ๊ฒฝํํด๋ณด์ง ๋ชปํ๋ค. ๊ทธ๋์ ๊ทธ๋ฐ์ง ์ด๋ฒ ์ฅ์ ์ฝ๋ ์์ฒด๋ ์ดํด๊ฐ ๊ฐ๋๋ผ๋ ์ด๊ฒ ์ด๋ค ์ํฉ์์ ์ด๋ป๊ฒ ์ฐ์ด๋์ง ์ ํํ๊ฒ ์๊ธฐ ์ด๋ ค์ ๋ค. ํ
์คํธ ์ฝ๋๋ง ์ฑ
ํ ๊ถ ๋ถ๋์ธ ์ฃผ์ ๋ผ๊ณ ํ๋ ์ด๋ฐ ๊ฒํฅ๊ธฐ๋ก ๋ฐ๋ก ์ดํดํ๊ธฐ๋ ์ด๋ ต๊ฒ ๋ค๋ ์๊ฐ์ด ๋ค์๋ค. ๋ค์์ TDD์ ๋ํด ์ง์ค์ ์ผ๋ก ๊ณต๋ถํ๊ณ ๋ค์ ์ฝ์ด๋ณด๋ฉด์ ์ด ๋ถ๋ถ์ ์ฑ์๋๊ฐ์.
- ํ
์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋๋งํผ์ด๋ ์ค์ํ๋ค๋ ๊ธ์ ์ฝ๊ณ ๋๋ ๋ค์ ํ๋ก์ ํธ๋ฅผ ์งํํ ๋ TDD๋ฅผ ์ด์ฉํ์ฌ ์งํํด๋ด์ผ๊ฒ ๋ค.
- ์ธ์์๋ ์ ๋ง ๋ฐฐ์ธ ๊ฒ ์ฐ๋๋ฏธ๊ตฌ๋. ๊พธ์คํ ๊ณต๋ถํ๋ค ๋ณด๋ฉด ์ฑ์๋๊ฐ ์ ์๊ฒ ์ง! ์ฐจ๊ทผ์ฐจ๊ทผํด๋๊ฐ๋ค ๋ณด๋ฉด ์ด๋์๊ฐ ์ ์์ฌ์ง ๋ด๊ฐ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค. ํ๋์ฉ ํด๋ณด์!!