TDD ๋ฒ์น ์ธ ๊ฐ์ง
TDD: ์ค์ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ ์ ๋จ์ ํ ์คํธ๋ถํฐ ์ง๋ ๊ฐ๋ฐ ๋ฐฉ์
- ์คํจํ๋ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์๋๋ค.
- ์ปดํ์ผ์ ์คํจํ์ง ์์ผ๋ฉด์ ์คํ์ด ์คํจํ๋ ์ ๋๋ก๋ง ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ค.
- ํ์ฌ ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋๋ก๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
์ ๊ท์น์ ๋ฐ๋ฉด ๊ฐ๋ฐ๊ณผ ํ ์คํธ๊ฐ ์ฝ 30์ด ์ฃผ๊ธฐ๋ก ํจ๊ป ๋์จ๋ค.
ํ์ง๋ง ๋ฐฉ๋ํ ํ ์คํธ ์ฝ๋๋ ์ฌ๊ฐํ ๊ด๋ฆฌ ๋ฌธ์ ๋ฅผ ์ ๋ฐํ๊ธฐ๋ ํ๋ค.
๊นจ๋ํ ํ ์คํธ ์ฝ๋ ์ ์งํ๊ธฐ
์ง์ ๋ถํ ํ ์คํธ ์ฝ๋๋ฅผ ์ง๋ ๊ฒ์ ํ ์คํธ๋ฅผ ์ ํ๋ ๊ฒ๋ณด๋ค ๋ชปํ๋ค.
- ์ค์ ์ฝ๋๊ฐ ์งํํ๋ฉด ํ
์คํธ ์ฝ๋๋ ๋ณํด์ผ ํ๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ์ง์ ๋ถํ๋ฉด ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ค์์ง๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ๋ณต์กํ ์๋ก ์ค์ ์ฝ๋๋ฅผ ์ง๋ ์๊ฐ๋ณด๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ถ๊ฐํ๋ ์๊ฐ์ด ๋ ๊ธธ์ด์ง๋ค.
- ์ ๋ฒ์ ์ ์ถ์ํ ๋๋ง๋ค ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ง ๋ณด์ ํ๋ ๋น์ฉ์ด ๋์ด๋๊ฒ ๋๋ค.
ํ ์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋ ๋ชป์ง์๊ฒ ๊นจ๋ํ๊ฒ ์ง์ผํ๋ค.
ํ ์คํธ๋ ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ์ ๊ณตํ๋ค.
ํ ์คํธ ์ผ์ด์ค๊ฐ ์์ผ๋ฉด ์๋์น ์์ ๋ฒ๊ทธ๊ฐ ๋ฐ์ํ ๊น ๋ด ์ฝ๋ ๋ณ๊ฒฝ์ ์ฃผ์ ํ๊ฒ ๋๋ค.
๋ฐ๋ผ์ ํ ์คํธ ์ผ์ด์ค๋ ๊ฐ๋ฐ์๊ฐ ์์ฌํ๊ณ ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ฌ ์ํคํ ์ฒ๋ ์ค๊ณ๋ฅผ ๊ฐ์ ํ ์ ์๋๋ก ๋ง๋ ๋ค.
๊นจ๋ํ ํ ์คํธ ์ฝ๋
๊นจ๋ํ ํ ์คํธ ์ฝ๋์์ ๊ฐ์ฅ ์ค์ํ ๊ฑด ๊ฐ๋ ์ฑ์ด๋ค. (์ค์ ์ฝ๋๋ณด๋ค๋ ๋!)
ํ ์คํธ ์ฝ๋๋ ์ต์์ ํํ์ผ๋ก ๋ง์ ๊ฒ์ ๋ํ๋ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ช ๋ฃ์ฑ, ๋จ์์ฑ, ํ๋ถํ ํํ์ด ํ์ํ๋ค.
BUILD-OPERATE-CHECK ํจํด
ํ ์คํธ๋ฅผ ๋ช ํํ ์ธ ๋ถ๋ถ์ผ๋ก ๋๋๋ค.
- BUILD: ํ ์คํธ ์๋ฃ๋ฅผ ๋ง๋ ๋ค.
- OPERATE: ํ ์คํธ ์๋ฃ๋ฅผ ์กฐ์ํ๋ค.
- CHECK: ์กฐ์ํ ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๋ค.
์ธ์ธํ ์ฝ๋๋ ๋ค๋ฅธ ํจ์๋ก ๋ถ๋ฆฌํ์ฌ ์ ๊ฑฐํ๊ณ ์ง์ง ํ์ํ ์๋ฃ ์ ํ๊ณผ ํจ์๋ง ์ฌ์ฉํ๋๋ก ์ง์ผํ๋ค.
์ธ์ธํ ์ฝ๋(์์ ์์ ์์คํ ์กฐ์ API)๋ฅผ ํจ์๋ก ๋ถ๋ฆฌํ ๊ฒ์ ํ ์คํธ ์ฝ๋์์ ์ฌ์ฉํ๋ ํน์ API๊ฐ ๋๋ค.
์ด์ค ํ์ค
ํ ์คํธ ์ฝ๋๋ ์ค์ ํ๊ฒฝ์ด ์๋๋ผ ํ ์คํธ ํ๊ฒฝ์์ ๋์๊ฐ๋ ์ฝ๋์ด๋ค.
๋ฐ๋ผ์ ์ค์ ์ฝ๋๋งํผ ํจ์จ์ ์ผ ํ์๋ ์๋ค.
์ค์ ํ๊ฒฝ์ด ์ค์๊ฐ ์๋ฒ ๋๋ ์์คํ ์ฒ๋ผ ๋ฉ๋ชจ๋ฆฌ๋ CPU ํจ์จ๊ณผ ๊ด๋ จ ์์ด๋ ํ ์คํธ ์ฝ๋๋ ์ค์ ํ๊ฒฝ์ ์ ์ฉ๋๋ ํ์ค์ ๋ฐ๋ฅผ ํ์๋ ์๋ค.
ํ ์คํธ ๋น assert ํ๋
์ฅ์
- ๊ฒฐ๋ก ์ด ํ๋์ด๊ธฐ ๋๋ฌธ์ ์ฝ๋๋ฅผ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์ดํดํ ์ ์๋ค.
๋จ์
- ์ค๋ณต ์ฝ๋๊ฐ ๋ง์์ง๋ค.
- ํ ์คํธ ํด๋์ค๊ฐ ๋์ด๋๋ค.
trade-off๊ฐ ์กด์ฌํ๋ฏ๋ก assert ๋ฌธ ๊ฐ์๋ ์ต๋ํ ์ค์ด๋, ์ฌ๋ฌ assert๋ฌธ์ ๋ฃ๋ ๊ฒ์ ์ฃผ์ ํ ํ์๋ ์๋ค.
ํ ์คํธ ๋น ๊ฐ๋ ํ๋
์ฌ๋ฌ ๊ฐ๋ ์ ์ฐ์์ผ๋ก ํ ์คํธํ๋ ๊ธด ํจ์๋ ํผํ๋ค.
์ฌ๋ฌ ๊ฐ๋ ์ด ํ ํจ์์ ์กด์ฌํ๋ฉด ๋ ์๊ฐ ํ ์คํธ ์ฝ๋๋ฅผ ์ดํดํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ๋ค.
๊ฐ๋ ๋น assert๋ฌธ ์๋ฅผ ์ต์๋ก ์ค์ฌ๋ผ. ํ ์คํธ ํจ์ ํ๋๋ ๊ฐ๋ ํ๋๋ง ํ ์คํธํ๋ผ.
F.I.R.S.T
๊นจ๋ํ ํ ์คํธ๋ ๋ค์ ๋ค์ฏ ๊ฐ์ง ๊ท์น์ ๋ฐ๋ฅธ๋ค.
- Fast: ํ ์คํธ๋ฅผ ์์ฃผ ๋๋ฆด ์ ์๋๋ก ๋นจ๋ผ์ผ ํ๋ค.
- Independent: ๊ฐ ํ ์คํธ๋ ์๋ก ์์กดํ๋ฉด ์ ๋๋ค. ์ด๋ค ์์๋ก ์คํํด๋ ๊ด์ฐฎ์์ผ ํ๋ค.
- Repeatable: ์ด๋ค ํ๊ฒฝ์์๋ ๋ฐ๋ณต์ ์ผ๋ก ์คํ์ด ๊ฐ๋ฅํด์ผ ํ๋ค. ํ๊ฒฝ์ด ํ ์คํธ ์คํจ์ ์ด์ ๊ฐ ๋๋ฉด ์๋๋ค.
- Self-Validating: ํ ์คํธ๋ ์ฑ๊ณต ์๋๋ฉด ์คํจ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ด์ผ ํ๋ค. ๊ฐ๋ฐ์์ ์ฃผ๊ด์ด ํ์ํ๋ฉด ์๋๋ค.
- Timely: ๋จ์ ํ ์คํธ๋ ํ ์คํธํ๋ ค๋ ์ค์ ์ฝ๋๋ฅผ ๊ตฌํํ๊ธฐ ์ง์ ์ ๊ตฌํํ๋ค.
๊ฒฐ๋ก
- ํ ์คํธ ์ฝ๋๋ ์ค์ ์ฝ๋์ ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฌ์ฌ์ฉ์ฑ์ ๊ฐํํ๋ค.
- ํ ์คํธ ์ฝ๋๋ ํํ๋ ฅ์ ๋์ด๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ๋ฆฌํ์.
- ํ ์คํธ API๋ฅผ ๊ตฌํํด ๋์ผ๋ฉด ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ธฐ ์ฌ์์ง๋ค.
- ํ ์คํธ ์ฝ๋๊ฐ ๋ง๊ฐ์ง๋ฉด ์ค์ ์ฝ๋๋ ๋ง๊ฐ์ง๋ค. ํ ์คํธ ์ฝ๋๋ฅผ ์ง์์ ์ผ๋ก ๊นจ๋ํ๊ฒ ๊ด๋ฆฌํ์.
๋ง๋ฌด๋ฆฌ
์ด์ ํ์ฌ์์ Django๋ก ๋ฐฑ์๋ ๊ฐ๋ฐ์ ๋งก์๋ ์ ์ด ์๋ค.
๊ทธ๋ ๋ฐฑ์๋์ ์ฒ์ ์ ๋ ํ ์คํธ๋ฅผ ๋์ ํ์๋ ๊ฒฝํ์ด ์์ด ์ฝ๋ ๋ฐ ๋ฌด๋ฆฌ๋ ์์๋ ๊ฒ ๊ฐ๋ค.
ํ ์คํธ ์ฝ๋๋ฅผ ์ง๊ณ ์ ์ง๋ณด์ ํ๋ฉด์ ๊ฐ์ฅ ํํํ๋ ๋ถ๋ถ์ ์ค๋ณต ์ฝ๋๊ฐ ๋๋ฌด ๋ง์ ๊ฐ๋ ์ฑ์ด ๋จ์ด์ง๋ ๊ฒ์ด์๋ค. ํ ํ ์คํธ ์ผ์ด์ค์ ๋๋ฌด ๋ง์ ๋ด์ฉ์ ํ ์คํธํ๋ ค๊ณ ํ๊ณ ํ ์คํธ ์ฝ๋ ํ์ผ์ ํ์์ด ์ปค์ ธ๊ฐ์๋ค.
๊ทธ๋์์ธ์ง ์ด ์ฅ์์ ๊ฐ์ฅ ์๋ฟ์๋ ๋ถ๋ถ์ ๋ค์ ๋ ๊ฐ์ง์๋ค.
- ํ ์คํธ API๋ก ์ค๋ณต ์ฝ๋์ ํ ์คํธ์ ๋ณธ์ง์ ํ๋ฆฌ๋ ์ธ๋ถ์ ์ธ ์ฝ๋๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ
- ํ ์คํธ ์ผ์ด์ค ๋น ํ๋์ ๊ฐ๋ ๋ง ํ ์คํธํ๋ผ
์ด ์ฅ์ ์ฝ๋ค ๋ณด๋ ๋ด๊ฐ ํ ์คํธ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ค์์ฑ์ ๊ฐ๊ณผํ๊ณ ์์์์ ๊นจ๋ฌ์๋ค.
ํ ์คํธ๋ง ์ ๋์๊ฐ๋ฉด ๋์ง๋ ์๊ฐ์ด ๊น์ด ๋ฐํ์์๋ ๊ฒ ๊ฐ๋ค. (์กฐ๊ธ ๊ท์ฐฎ์ํ๊ธฐ๋ ํ๋ค๐ฅฒ)
์ด ์ ์ ํํ์ ์ด๋ฒ์ ์๊ฒ ๋ ํ ์คํธ ์ฝ๋์ ์ค์์ฑ์ ๋ฐํ ์ผ์ ๋ค์ ๊ฐ๋ฐ ๋๋ ํจ์ฌ ์ข์ ํ ์คํธ ์ฝ๋๋ฅผ ์งค ์ ์์ ๊ฒ ๊ฐ๋ค.
'๐ฟ ์คํฐ๋' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํด๋ฆฐ์ฝ๋] 8์ฅ ๊ฒฝ๊ณ with Typescript (0) | 2023.07.15 |
---|---|
[ํด๋ฆฐ์ฝ๋] 7์ฅ ์ค๋ฅ ์ฒ๋ฆฌ (0) | 2023.07.12 |
[three.js] ๊ทธ๋ฆผ์๋ฅผ ๋ ๋๋งํ๋ ๋ฐฉ๋ฒ (0) | 2023.07.06 |
[ํด๋ฆฐ์ฝ๋] 6์ฅ ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ (0) | 2023.07.02 |
[three.js] ์นด๋ฉ๋ผ - PerspectiveCamera vs OrthographicCamera (0) | 2023.07.01 |