โ ์ด ํฌ์คํ ์ ๋ ธ๋ง๋ ์ฝ๋ ๋ถํด๋ฝ 'ํด๋ฆฐ ์ฝ๋' ์ฑ๋ฆฐ์ง๋ฅผ ์งํํ๋ฉด์ ์์ฑํ๋ TIL์ด๋ฉฐ, ์ถ์ฒ๋ Clean Code์ ๋๋ค.
๐ ๋ฒ์ : 09. ๋จ์ ํ ์คํธ
๐ ์ฑ ์์ ๊ธฐ์ตํ๊ณ ์ถ์ ๋ด์ฉ์ ์จ๋ณด์ธ์.
- Test Code
- ํ
์คํธ ์ฝ๋๋ ๊นจ๋ํ๊ฒ ์์ฑ
- ๊ฐ๋ ์ฑโฌ (๋ช ๋ฃํ๊ณ ๋จ์ํ๊ฒ ์ถฉ๋ถํ ์ค๋ช ์ ๋ง๋ถ์ฌ์ ์์ฑ)
- ์ค์ ์ฝ๋๋งํผ ํจ์จ์ ์ด๊ฒ ์์ฑํ์ง ์์๋ ๊ด์ฐฎ์
- ํ ๋ฒ์ ํ๋๋ง ํ ์คํธํ๋๋ก ์์ฑ
- ์ค์ ์ฝ๋ ๋ณ๊ฒฝ ์ ํ ์คํธ ์ฝ๋๋ ๋ณ๊ฒฝํด์ผ ํจ
- ํ ์คํธ API ๊ตฌํ → DSL(๋๋ฉ์ธ ํนํ ์ธ์ด) ๋ง๋ค๋ฉด ํ ์คํธ ์ฝ๋ ์์ฑ์ด ์ฌ์์ง๋ค.
- ์ข์ ํ
์คํธ ์ฝ๋๋?
- ์ ์ฐ์ฑ, ์ ์ง๋ณด์์ฑ, ์ฌ ์ฌ์ฉ์ฑ โฌ ๋ง๋๋ ์ฝ๋
- ํ
์คํธ ์ฝ๋๋ ๊นจ๋ํ๊ฒ ์์ฑ
- TDD (Test Driven Development) ๋ฒ์น 3๊ฐ์ง
- ์คํจํ๋ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ ๋๊น์ง ์ค์ ์ฝ๋๋ฅผ ์์ฑํ์ง ์์ ๊ฒ.
- ์ปดํ์ผ์ ์คํจํ์ง ์์ผ๋ฉด์ ์คํ์ด ์คํจํ๋ ์ ๋๋ง TDD๋ฅผ ์์ฑ
- ํ์ฌ ์คํจํ๋ ํ ์คํธ๋ฅผ ํต๊ณผํ ์ ๋๋ก๋ง ์ค์ ์ฝ๋๋ฅผ ์์ฑ
- ๊นจ๋ํ ํ
์คํธ๊ฐ ๋ฐ๋ฅด๋ ๋ค์ฏ๊ฐ์ง ๊ท์น (F.I.R.S.T)
- ๋น ๋ฅด๊ฒ ์คํ๋์ด์ผ ํจ (Fast)
⇒ ์์ฃผ ๋๋ฆด ์ ์๊ธฐ ์ํด์ - ๋
๋ฆฝ์ ์ด์ด์ผ ํจ (Independent)
⇒ ์์กด์ฑ ๋ฎ์ถฐ์ ์๋ฌด ์์๋ก ํด๋ ๊ฐ๋ฅํ๋๋ก - ์ด๋ค ํ๊ฒฝ์์ ๋ฐ๋ณตํ๋ ์คํ๊ฐ๋ฅํด์ผ ํจ(Repearable)
⇒ ํ๊ฒฝ ๋๋ฌธ์ ์คํจํ ๊ฒ์ ์ค๋ฅ๊ฐ ์์ด์๋ผ๊ณ ์ฐฉ๊ฐํ ์ ์์ - True or False ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์์ผ ํจ (Self-Validating)
⇒ ๊ฒฐ๊ณผ ํ์ธ ์ํด์ ์์ธํ ํ์ผ๊น์ง ์ฝ๋ ๋ค๋ฉด ์๊ฐ ๋ญ๋น - ์ ์ ํ ๋์ ๋ฐ๋ก ์์ฑํด์ผ ํจ (Timely)
⇒ ์ค์ ์ฝ๋ ๋ง๋ค๊ณ ๋์ ํ๋ฉด ์ค์ ์ฝ๋์ ๋ฌธ์ ๊ฐ ์๋๋ผ๋ ์์ ํ๊ธฐ ์ด๋ ค์
- ๋น ๋ฅด๊ฒ ์คํ๋์ด์ผ ํจ (Fast)
โ๐ป ์ค๋ ์ฝ์ ์๊ฐ์? ๋ ์ค๋ฅด๋ ์๊ฐ์ ๊ฐ๋ณ๊ฒ ์ ์ด๋ณด์ธ์.
ํด๋ฆฐ ํ ์ฝ๋๋ฅผ ๋ง๋๋ ๊ฒ์ ํ
์คํธ ์ฝ๋๋ ๋งค์ฐ ์ค์ํ ์ญํ ์ ํ๋ค๋ ์ฌ์ค์ ๋ฐฐ์ ๋ค.
์ฒ์์ React๋ฅผ ๋ฐฐ์ฐ๋ฉด์ TDD๋ฅผ ๋ฐฐ์ ์ฌ์ฉํ ๊ธฐํ๊ฐ ์์๋๋ฐ, ์ฒ์์๋ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ ์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ด ๋๋ฌด ๋ฏ์ค๊ฒ ๋๊ปด์ก๋ค.
์ฝ๋๊ฐ ๋์๊ฐ๋ ๊ฒ์ ํ์ธํด์ผ ํ๋ค๋ฉด ์ค์ ์ฝ๋๋ฅผ ์์ฑํ ๋ค์ ํ
์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ๋ง์ง ์์๊น?๋ผ๊ณ ์๊ฐํ์๋ค.
๋๋์ฒด ์ ์ฌ์ฉํด์ผ ํ๋์ง ์ดํด๊ฐ ๊ฐ์ง ์์๋๋ฐ, ์ค๋ ํ
์คํธ ์ฝ๋ ํํธ๋ฅผ ์ฝ์ด๋ณด๋ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ ํ ์ค์ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ์๊ฐ ์์ด ์ฝ๋๋ฅผ ์ง๋ ์ต๊ด์ ๋ง์ ์ ์๊ณ , ๋ ํจ์จ์ ์ด๊ณ ์ ์ฐํ๋ฉฐ ์ฌ ์ฌ์ฉ์ฑ์ด ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค๋ ์ฌ์ค์ ์๊ฒ ๋์๋ค.
์์ผ๋ก TDD๋ฅผ ๋ ๊ณต๋ถํด์ ๋์ฑ ํด๋ฆฐ ํ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋๋ก ๋
ธ๋ ฅํด์ผ๊ฒ ๋ค.
๐ ๊ถ๊ธํ ๋ด์ฉ์ด ์๊ฑฐ๋, ์ ์ดํด๋์ง ์๋ ๋ด์ฉ์ด ์๋ค๋ฉด ์ ์ด๋ณด์ธ์.
- ๋๋ฉ์ธ ํนํ ์ธ์ด (DSL)์ ์๋ฏธ
- ์ค๋ 09์ฅ์ ๋์จ ๋ด์ฉ ์ธ์ TDD๋ฅผ ์ค๋ช ํ๋ ค๋ฉด ์ฑ ํ๋๋ก๋ ๋ถ์กฑํ๋ค๊ณ ํ๋ค. ๋ ๋ง์ TDD ๊ท์น์ด ๊ถ๊ธํ๋ค
'Book TIL' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํด๋ฆฐ์ฝ๋ Day 20. ํด๋์ค (0) | 2022.05.12 |
---|---|
ํด๋ฆฐ์ฝ๋ Day 18. ํด์ฆ๋ฐ์ด (0) | 2022.05.09 |
ํด๋ฆฐ์ฝ๋ Day 14 - 15. ์ค๋ฅ ์ฒ๋ฆฌํ๊ธฐ (0) | 2022.05.07 |
ํด๋ฆฐ์ฝ๋ Day 13. ๋ณต์ต + ํด์ฆ Day (0) | 2022.05.07 |
ํด๋ฆฐ์ฝ๋ Day 12. ๊ฐ์ฒด์ ์๋ฃ๊ตฌ์กฐ (0) | 2022.05.04 |
๋๊ธ