๐ Chapter 5: ๊ธฐ์ ์ค์ฒ ๋ฐฉ๋ฒ
- ๊ธฐ์ ์ค์ฒ ๋ฐฉ๋ฒ์ด์ผ๋ง๋ก ์ ์์ผ์ ์ง์ง ํต์์ด๋ค.
- TDD์ ๋ฆฌํฉํฐ๋ง, ๋จ์ํ ์ค๊ณ, ์ฌ์ง์ด ์ง ํ๋ก๊ทธ๋๋ฐ๋ ์๋ค๋ฉด, ์ ์์ผ์ ์๋ ์๋์๋ ๋ฌ๋ฆฌ ์ธ๋ชจ์๋ ๋น ๊ป๋ฐ๊ธฐ๊ฐ ๋ ๊ณ ๋ง๋ค.
๐ ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐโ
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ(Test-Driven Development, TDD)์ ์ ๋๋ก ์ค๋ช
ํ๋ ค๋ฉด ๋ณ๋์ ์ฑ
ํ ๊ถ ํ์ํ ๋งํผ ์ด์ผ๊ธฐํ ๊ฒ์ด ๋ง๊ณ ๋ณต์กํ ์ฃผ์ ์ด๋ค.
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ํ๋ก๊ทธ๋๋จธ์ ๋ณต์ ๋ถ๊ธฐ๋ผ๊ณ ํ ์ ์๋ค. ๊ตฌํํด์ผ ํ๋ ๋์์ ๋ ๋ฒ์ฉ ์
๋ ฅํ๋ค.
- ํ ๋ฒ์ ํ
์คํธ๋ก, ๊ทธ๋ฆฌ๊ณ ํ ๋ฒ์ ์ด ํ
์คํธ๋ฅผ ํต๊ณผํ๊ฒ ๋ง๋๋ ์ ํ ์ฝ๋์ด๋ค.
- ๋ ๋ฒ์ ์
๋ ฅ์ ์๋ก ๋ฑ ๋ง์์ผ ํ๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ TDD๋ฅผ ๊ณต๋ถํ ๋, ๊ธฐ๋ฅ์ ํ ๋ฒ์ ํ๋์ฉ๋ง ์ถ๊ฐํ๋ผ๊ณ ๋ฐฐ์ด๋ค. ์คํจํ๋ ํ
์คํธ ํํ๋ก ๋จผ์ ํ๋ ์ถ๊ฐํ๊ณ , ์ด ํ
์คํธ๋ฅผ ํต๊ณผํ๊ฒ ๋ง๋๋ ์ ํ ์ฝ๋ ํํ๋ก ๋ค์ ์ถ๊ฐํ๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ค๋ฅ๋ฅผ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์๋ค.
๐ฅ TDD์ ์ธ๊ฐ์ง ๊ท์นโ
- ํด๋น ์ฝ๋๊ฐ ์์ด์ ์คํจํ๋ ํ
์คํธ ์ฝ๋๋ฅผ ์ฐ๊ธฐ ์ ์ ์ ํ ์ฝ๋๋ฅผ ๋จผ์ ์ฐ๋ฉด ์ ๋๋ค.
- ํ
์คํธ ์ฝ๋๋ฅผ ์ธ ๋๋ ์คํจํ๋๋ก ๋ง๋ค๊ธฐ ์ํด ํ์ํ ๊ฒ๋ณด๋ค ๋ ๋ง์ด ์ฐ๋ฉด ์ ๋๋ค. ์ปดํ์ผ ์คํจ๋ ์คํจ๋ก ๊ฐ์ฃผํ๋ค.
- ์คํจํ๋ ํ
์คํธ๋ฅผ ํต๊ณผ์ํค๊ธฐ ์ํด ํ์ํ ์ฝ๋๋ณด๋ค ๋ ๋ง์ ์ ํ ์ฝ๋๋ฅผ ์ฐ๋ฉด ์ ๋๋ค.
๐ฅ ๋๋ฒ๊น
โ
- ๋๋ฒ๊ฑฐ์ ๋ฅ์ํด์ง๋ ๋ฐฉ๋ฒ์ ์ค์ ๋ก ๋๋ฒ๊น
์ ๋ง์ ์๊ฐ์ ์ฐ๋ ๊ฒ๋ฐ์ ์๋ค.
- ๋๋ฒ๊น
์ ๋ง์ ์๊ฐ์ ์ด๋ค๋ ๊ฒ์ ์ธ์ ๋ ๊ทธ๋งํผ ๋ฒ๊ทธ๊ฐ ๋ง๋ค๋ ๊ฒ์ด๋ค.
- ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ์ ํ๋ฉด, ๋๋ฒ๊ฑฐ๋ฅผ ์ธ ์ผ์ด ๋ณ๋ก ์๊ธฐ ๋๋ฌธ์ ๋๋ฒ๊ฑฐ์ ์ต์ํด์ง ์๊ฐ ์๋ค.
- ์ธ ๊ฐ์ง ๊ท์น์ ์ค์ฒํ๋ฉด ๋ฒ๊ทธ์ ํ์๋ ์ฌ๊ฐํ ์ ๋๋ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
๐ฅ ๋ฌธ์ํโ
- ์ธ ๊ฐ์ง ๊ท์น์ ๋ฐ๋ฅด๋ค ๋ณด๋ฉด ๋ง๋ค์ด์ง๋ ํ
์คํธ๋ ์ ์ฒด ์์คํ
์ ์ฝ๋ ์์ ๊ฐ ๋๋ค.
- ํ
์คํธ๋ ์ด ํจ์๋ฅผ ํธ์ถํ๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ฃผ๊ณ , ์ด ํจ์๊ฐ ๋์ง๋ ๋ชจ๋ ์์ธ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ์ ๋ณด์ฌ ์ค ๊ฒ์ด๋ค.
- ํ
์คํธ๋ ํ
์คํธํ๋ ์์คํ
์ ์ค๋ช
ํ๋ ๋ฌธ์์ ํ ํํ์ด๋ค.
- ํ๋ก๊ทธ๋๋จธ์๊ฒ ์๋ฒฝํ ํ์์ ๋ฌธ์๊ฐ ์๋ค๋ฉด, ์ฝ๋ ํํ์ผ ๊ฒ์ด๋ค. ํ
์คํธ๊ฐ ๋ฐ๋ก ๊ทธ๋ ๋ค.
- ํ
์คํธ๋ ์์คํ
์ค ์์ ๋ถ๋ถ์ ๋์์ ์ค๋ช
ํ๋ ์๊ณ ๋
๋ฆฝ์ ์ธ ์ฝ๋ ์กฐ๊ฐ์ผ๋ฟ์ด๋ค.
๐ฅ ์ฌ๋ฏธโ
- ์ธ ๊ฐ์ง ๊ท์น์ ๋ฐ๋ผ์ ํ
์คํธ๋ฅผ ๋จผ์ ์์ฑใ
ํ๋ฉด ์ฌ๋ฏธ์๋ค.
- ์๊ฐ ๋์ฐ๊ธฐ๊ฐ ์๋๋ผ ๋ฌด์ธ๊ฐ ์๋ํ๊ฒ ๋ง๋๋ ์ผ ๊ฐ์ด ๋๊ปด์ง ๊ฒ์ด๋ค.
๐ฅ ์๋ฒฝํจโ
- ํ
์คํธ๋ฅผ ๋ง๋ค๊ธฐ ํ๋ ์ด์ ๋ ํ
์คํธ ๊ฐ๋ฅ ์ฌ๋ถ๋ฅผ ์๊ฐํ์ง ์์ผ๋ฉด์ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์ค๊ณํ ๋๋ ํ
์คํธ๋ฅผ ๊ณ ๋ คํ์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค.
- ํ
์คํธ์ ๊ตฌ๋ฉ์ ๋จ๊ฒจ๋๊ฒ ๋์ด ๋์ค์ ๋์์์ ๋ค์ ์์ฑํ๋ฉด ๋๋ค๊ณ ์๊ธฐ ํฉ๋ฆฌํ๋ฅผ ํ๋ค.
- ํ
์คํธ๋ฅผ ํต๊ณผํ๋ค๋ฉด ๋ฐฐํฌํ ๊ฒฐ์ ์ ๋ด๋ฆด ์ ์๋ค.
- ์ด์จ๋ ์๋ฌด๋ฆฌ ์ฑ์คํ๊ฒ ์ธ ๊ฐ์ง ๊ท์น์ ๋ฐ๋ฅด๋๋ผ๋ 100% ์๋ฒฝํ ํ
์คํธ ๋ฌถ์์ด ๋ง๋ค์ด์ง์ง๋ ์๋๋ค. ํ์ง๋ง ๋ฐฐํฌ๋ฅผ ์ํด ๊ผญ 100%์ ์๋ฒฝํจ์ด ํ์ํ ๊ฒ์ ์๋๋ค. ์ปค๋ฒ๋ฆฌ์ง(coverage)๊ฐ 90%๋ ํ๋ฐ ์ ๋๋ฉด ์ถฉ๋ถํ ๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ ์ด ์ ๋๋ ๋น์ฐํ ๋ฌ์ฑํ ์ ์๋ค.
- ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ํ ๋ด๋ถ์ฉ ์งํ์ด์ง ๊ด๋ฆฌ ์งํ๊ฐ ์๋๋ค. ๊ด๋ฆฌ์๋ ์๋ง ์ด ์ซ์๊ฐ ์ด๋ค ์๋ฏธ์ธ์ง ์ ๋๋ก ์์ง๋ ๋ชปํ ๊ฒ์ด๋ค.
- ๊ด๋ฆฌ์๋ ํ
์คํธ ์ปค๋ฒ์ง๋ฅผ ๋ชฉํ๋ ๋ชฉ์ ์ผ๋ก ์ผ์์๋ ์ ๋๋ค. ํ
์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ ํ์ ํ
์คํธ ์ ๋ต์ ํ์ธํ๊ธฐ ์ํด์๋ง ์ฌ์ฉํด์ผ ํ๋ค.
- ์ปค๋ฒ๋ฆฌ์ง๊ฐ ๋ฎ๋ค๊ณ ๋น๋์ ์คํจํ ๊ฒ์ผ๋ก ๋ณด์์๋ ์ ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ๋ก๊ทธ๋๋จธ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ๋์ด๊ธฐ ์ํด ๋จ์ธ๋ฌธ๋ ์์ด ํ
์คํธ๋ฅผ ๋ฃ์ด ๋ฒ๋ฆด ๊ฒ์ด๋ค.
- ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ ์ฝ๋์ ํ
์คํธ์ ๋ํ ๊น์ ์ง์์ด ์์ด์ผ ์ดํดํ ์ ์๋ ๋ณต์กํ ์ฃผ์ ๋ค. ์ ๋ ๊ด๋ฆฌ์ฉ ์งํ๋ก ์ผ์์๋ ์ ๋๋ค.
๐ฅ ์ค๊ณ