[Test] ์ ๋ ํ ์คํธ(Unit Test), ํตํฉ ํ ์คํธ(Integration Test), ๊ธฐ๋ฅ ํ ์คํธ(Functional Test)๋?
์ธ ์ค ์์ฝ
- ์ ๋ ํ ์คํธ: ํจ์ ํ๋ํ๋์ ๊ฐ์ด ์ฝ๋์ ์์ ๋ถ๋ถ์ ํ ์คํธํ๋ ๊ฒ
- ํตํฉ ํ ์คํธ: ์๋ก ๋ค๋ฅธ ์์คํ ๋ค์ ์ํธ์์ฉ์ด ์ ์ด๋ฃจ์ด ์ง๋์ง ํ ์คํธํ๋ ๊ฒ
- ๊ธฐ๋ฅ ํ ์คํธ: ์ฌ์ฉ์์ ์ดํ๋ฆฌ์ผ์ด์ ์ ์ํธ์์ฉ์ด ์ํํ๊ฒ ์ด๋ฃจ์ด์ง๋์ง ํ ์คํธํ๋ ๊ฒ
์๋ก
๊ฐ๋ฐ์ ํ๋ค ๋ณด๋ฉด ๋ด ์ฝ๋๊ฐ ์ ๋์ํ๊ณ ์๋์ง ๋ฒ๊ทธ๊ฐ ์๋์ง ํ ์คํธํ๊ณ ์ถ์ ๋๊ฐ ์๋ค.
๊ทธ๋ด ๋ '์ด๋ป๊ฒ ํ ์คํธ๋ฅผ ํ๋ฉด ์ข์๊น..?'๋ผ๋ ์๊ฐ์ ํ๊ฒ ๋๊ณ ํ ์คํธ๋ฅผ ํ๋ ๋ฐฉ๋ฒ๊ณผ ์ข ๋ฅ์ ๋ํด ์ฐพ๊ฒ ๋๋ค.
ํ ์คํธ๋ฅผ ๋ฒ์์ ๋ฐ๋ผ ๋ถ๋ฅํด๋ณด๋ฉด ์ ๋ ํ ์คํธ, ํตํฉ ํ ์คํธ, ๊ธฐ๋ฅ ํ ์คํธ๋ก ๋๋ ๋ณผ ์ ์๋ค.
๊ทธ๋ฆผ์ผ๋ก ํํํ์๋ฉด ์์ ๊ฐ์ด ํํํ ์ ์๋ค.
Acceptance Test๋ Integration Test์ ๊ฐ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
๊ทธ๋ฆผ์ ๋ณด๋ฉด ์ ๋ ํ ์คํธ๊ฐ ๊ฐ์ฅ ํฌ๊ณ ํตํฉ ํ ์คํธ๊ฐ ์ค๊ฐ ๊ธฐ๋ฅ ํ ์คํธ๊ฐ ๊ฐ์ฅ ์์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๊ณ ์๋๋ฐ..
์ด๋ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์๋ผ๊ณ ๋ณด๋ฉด ๋ ๊ฒ ๊ฐ๋ค. ์ฝ๋ ๋ฒ์๋ก ๋ฐ์ง๋ฉด ์ ๋ ํ ์คํธ๊ฐ ๊ฐ์ฅ ์๊ณ ๊ธฐ๋ฅ ํ ์คํธ๊ฐ ๊ฐ์ฅ ํฌ๋ค.
์๊ธฐ ์ฝ๊ฒ ๋น๊ตํด๋ณด์
์ญ์ ์ค๋ช ์ ๊ฒ์์ ์๋ก ๋๋ ๊ฒ์ด ๊ฐ์ฅ ์ดํด ๊ฐ๊ธฐ ์ฌ์ธ ๊ฒ ๊ฐ์ ๊ฒ์์ผ๋ก ์๋ฅผ ๋ค์๋ฉด.
์ฌ๋ผ์์ด๋ผ๋ ๋ชฌ์คํฐ๊ฐ ์๊ณ ์ ์ ๊ฐ ์ฌ๋ผ์์ ๋๋ ค์ก๋ ์ํฉ์ด๋ค. ์ด๋ ๋ค์๊ณผ ๊ฐ์ ํจ์๊ฐ ์๋ค๊ณ ๊ฐ์ ํ์.
- ์ ์ ๊ฐ ์ฌ๋ผ์์๊ฒ ๋ฌ๋ ค๊ฐ๋ Move ํจ์
- ์ ์ ๊ฐ ์ฌ๋ผ์์ ๊ณต๊ฒฉํ๋ Attack ํจ์
- ์ฌ๋ผ์์ ๋๋ ค์ก์ ํ ์ ๋ฆฌํ์ ์์งํ๋ Gather ํจ์
์ ๋ ํ ์คํธ๋ Move, Attack, Gather ํจ์๊ฐ ์ ๋์ํ๋์ง (์ฌ๋ฌ ๊ฐ์ง ์ ๋ ฅ ๊ฐ์ ์ค๋ด์ ์ ๋๋ก ๋ ์ถ๋ ฅ ๊ฐ์ด ๋์ค๋์ง)
ํจ์ ํ๋ํ๋๋ฅผ ํ ์คํธ๋ฅผ ํ๋ ๊ฒ์ ๋น์ ํ ์ ์๋ค.
ํตํฉ ํ ์คํธ๋ ์ ์ ๊ฐ ์ฌ๋ผ์์ ๋๋ ค์ก๊ณ ์ ๋ฆฌํ์ ์์งํ ํ ๋ฐ ์ค์ ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์์งํ ์ ๋ฆฌํ์ด ์ ๋ค์ด๊ฐ๋์ง ํ ์คํธ๋ฅผ ํ๋ ๊ฒ์ ๋น์ ํ ์ ์๋ค.
๊ธฐ๋ฅ ํ ์คํธ๋ ์ ์ ๊ฐ ์ฌ๋ผ์์๊ฒ ๋ฌ๋ ค๊ฐ ์ฌ๋ผ์์ ๋๋ ค์ก๊ณ ์ ๋ฆฌํ์ ์์งํ๋ ํ๋์ ๊ณผ์ ์ด ์ ๋๋ก ์ํ๋์๋์ง ํ ์คํธํ๋ ๊ฒ์ ๋น์ ํ ์ ์๋ค.
์ด๋ฌํ ํ ์คํธ๋ค์ด ์ด๋ ํ ํน์ง์ ๊ฐ์ง๊ณ ์๋์ง ํ๋ํ๋ ์์๋ณด์.
์ ๋ ํ ์คํธ(Unit Test)
์ ๋ ํ ์คํธ๋ ์ ์ฒด ์ฝ๋ ์ค ์์ ๋ถ๋ถ์ ํ ์คํธํ๋ ๊ฒ์ด๋ค. (์๋ฅผ ๋ค์ด, ํจ์ ํ๋ํ๋ ๊ฐ๋ณ๋ก ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ) ๋ง์ฝ ํ ์คํธ์ ๋คํธ์ํฌ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ฐ์ ์ธ๋ถ ๋ฆฌ์์ค๊ฐ ํฌํจ๋๋ค๋ฉด ๊ทธ๊ฒ์ ์ ๋ ํ ์คํธ๊ฐ ์๋๋ค.
๋ํ, ์ ๋ ํ ์คํธ๋ ๋งค์ฐ ๊ฐ๋จํ๊ณ ๋ช ํํ์ฌ์ผ ํ๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ํ ์คํธ๋ฅผ ์ํ ์ ๋ ฅ ๊ฐ์ ์ฃผ์ด์ ๊ทธ์ ๋ํ ํจ์์ ์ถ๋ ฅ ๊ฐ์ด ์ ํ ํ์ง ์๋์ง๋ฅผ ํ๋จํ๋ ๊ฒ์ด ์ ๋ ํ ์คํธ๋ผ ํ ์ ์๋ค.
์ฝ๋์ ์ค๊ณ๊ฐ ๋ณ๋ก ์ข์ง ๋ชปํ๋ค๋ฉด ์ ๋ ํ ์คํธ๋ฅผ ์์ฑํ๊ธฐ๋ ์ด๋ ค์์ง๋ค.
๋ฐ๋ผ์ ํจ์(๋ฉ์๋) ํ๋ํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ ๋ ํ ์คํธ๋ ์ข ๋ ๋์ ์ฝ๋๋ฅผ ๋ง๋ค ์ ์๋๋ก ๋์์ค๋ค.
๋น์ ํ์๋ฉด, ์ ๋ ํ ์คํธ๋ ์ฒ์ถ์ ๋น์ ํ ์ ์๋ค.
์ ๋ ํ ์คํธ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ข์ ์ฝ๋๋ฅผ ๋์์ธํ ์ ์์ ๋ฟ๋ง ์๋๋ผ ์ด๋ค ํจ์(๋ฉ์๋)์ ๋ณํ๊ฐ ์๊ฒผ์ ๋ ๊ทธ ํจ์๊ฐ ์์ ํ๊ฒ ์ํ๋๋์ง๋ฅผ ๋ณด์ฅํด์ฃผ๊ณ ๊ฐ์ ํจ์(๋ฉ์๋)๋ฅผ ๋ค๋ฅธ ์ข ๋ฅ์ ํ ์คํธ์์๋ ์ ์ฉํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค๋ค.
์ ๋ ํ ์คํธ๋ ๋น๋ฒํ ์ผ์ด๋๋ ๋ฒ๊ทธ๋ฅผ ๋ง๋๋ฐ๋ ๋ฐ์ด๋ ์ญํ ์ ํ๋ค.
์ฝ๋ ์ผ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์์ ๊ฒฝ์ฐ ์๋ฌด๋ฆฌ ๋ง์ด ๋ฌธ์ ์๋ ๋ถ๋ถ์ ์์ ํ๋ ค ํด๋ ์์ ํ ๋ถ๋ถ์ ์ฝ๋๊ฐ ๋ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๊ณ .. ๋ฌธ์ ๊ฐ ๋ฌธ์ ๋ฅผ ๋ณ๋ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ค.
์ด๋ด ๋ ๋ฒ๊ทธ๊ฐ ์๋์ง ์๋์ง ์ฒดํฌํ๋ ์ ๋ ํ ์คํธ๋ฅผ ๋ง๋ค์ด ๋ ์ผ๋ก์จ ์ด๋ฌํ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ ์ ์๋ค.
ํตํฉ ํ ์คํธ(Integration Teset), ๊ธฐ๋ฅ ํ ์คํธ(Functional Teset)๋ ์ด๋ฒคํธ์ ํ๋ฆ์ ์ด์์ด ์๋์ง ํ ์คํ ํ๋๋ฐ ์ข์ ๋ฐ๋ฉด, ์ ๋ ํ ์คํธ๋ ์ด๋ ํ ๋ถ๋ถ์ ๋ฌธ์ ๊ฐ ์๊ณ ๊ณ ์น ๋ถ๋ถ์ด ์ด๋์ธ์ง ๋ช ํํ๊ฒ ํด ์ค ๋ ์ข๋ค.
์ ๋ฆฌํ์๋ฉด, ํ ์คํธ ์ค์ฌ ๊ฐ๋ฐ(test-driven development) ์ผ ๋ ์ ๋ ํ ์คํธ๋ ๊ผญ ์์ฑํด์ผ ํ๋ฉฐ, ์ฝ๋์ ๋์์ธ์ ๊ฐ์ ํด์ฃผ๊ณ ๋์ค์ ์ฝ๋์ ๋ฆฌํฉํ ๋ง์ด ํ์ํ ๋ ์ด๋ค ๋ถ๋ถ์ ์์ ํ ๋ถ๋ฆฌํ ํ์ ์์ด ๊น๋ํ๊ฒ ํด ์ค๋ค.
ํตํฉ ํ ์คํธ(Integration Test)
ํตํฉ ํ ์คํธ๋ ์ด๋ฆ์์ ์๋ฏธํ๋ ๋ฐ์ ๊ฐ์ด ๊ฐ๊ฐ์ ์์คํ ๋ค์ด ์๋ก ์ด๋ป๊ฒ ์ํธ์์ฉํ๊ณ ์ ๋๋ก ์๋ํ๋์ง ํ ์คํธํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
ํตํฉ ํ ์คํธ๋ ์ ๋ ํ ์คํธ์ ๋น์ทํ๋ฐ, ํฐ ์ฐจ์ด์ ์ด ํ๋ ์๋ค. ์ ๋ ํ ์คํธ๋ ๋ค๋ฅธ ์ปดํฌ๋ํธ๋ค๊ณผ ๋ ๋ฆฝ์ ์ธ ๋ฐ๋ฉด ํตํฉ ํ ์คํธ๋ ๊ทธ๋ ์ง ์๋ค.
์๋ฅผ ๋ค์๋ฉด ์ ๋ ํ ์คํธ์์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ๊ทผํ๋ ์ฝ๋๋ ์ค์ ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ํต์ ํ๋ ๊ฒ์ ์๋์ง๋ง, ํตํฉ ํ ์คํธ๋ ์ค์ ํต์ ํด์ผ ํ๋ค.
ํตํฉ ํ ์คํธ๋ ์ ๋ ํ ์คํธ๋ง์ผ๋ก ์ถฉ๋ถํ๋ค๊ณ ๋๋ผ์ง ๋ชปํ ๋ ์ฌ์ฉ๋๋ค.
๋๋๋ก ๋ ๊ฐ์ ๋ค๋ฅธ ๋ถ๋ฆฌ๋ ์์คํ ๋ผ๋ฆฌ ์ ํต์ ํ๊ณ ์๋์ง ์ฆ๋ช ํ๊ณ ์ถ์ ๋๊ฐ ์๋๋ฐ(์๋ฅผ ๋ค์ด ๋์ ์ฑ๊ณผ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๊ฐ ์ ๋๋ก ์ํธ์์ฉํ๊ณ ์๋์ง...) ์ด๊ฒ์ ํตํฉ ํ ์คํธ๋ผ ํ๋ค.
ํตํฉ ํ ์คํธ๋ ๋๊ฒ ์ ๋ ํ ์คํธ๋ฅผ ์์ฑํ๋ ๊ฒ๋ณด๋ค ๋ณต์กํ๊ณ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. (๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ธํ ํ ๋, ์ค์ ํ์ผ์ ์ฝ์ด ์ค๋ ๊ณผ์ ์ด๋ผ๋๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ ์ธํ ๋์๋์ง ํ์ธํ๋ ๊ณผ์ ์ด๋ผ๋๊ฐ)
๋ฐ๋ผ์ ํตํฉ ํ ์คํธ๊ฐ ๊ผญ ํ์ํ ๊ฒ์ด ์๋๋ฉด ์ ๋ ํ ์คํธ๋ฅผ ์์ฑํ๋๋ฐ ์ง์คํ๋ ๊ฒ์ด ์ข๋ค.
๊ธฐ๋ฅ ํ ์คํธ(Functional Test)
๊ธฐ๋ฅ ํ ์คํธ๋ E2E ํ ์คํธ(E2E Test) ํน์ ๋ธ๋ผ์ฐ์ ํ ์คํธ(Browser Test)๋ผ๊ณ ๋ถ๋ฆฌ๋ฉฐ ๋ชจ๋ ๊ฐ์ ์๋ฏธ๋ค.
๊ธฐ๋ฅ ํ ์คํธ๋ ์ด๋ค ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ ๋๋ก ๋์ํ๋์ง ์์ ํ ๊ธฐ๋ฅ์ ํ ์คํธํ๋ ๊ฒ์ ์๋ฏธํ๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ฅ ํ ์คํธํ๋ค๊ณ ๊ฐ์ ํด๋ณด๋ฉด ๋ธ๋ผ์ฐ์ ์๋ํ ๋๊ตฌ๋ฅผ ์ฌ์ฉํด ํน์ ํ ํ์ด์ง๋ฅผ ํด๋ฆญํ๋ค๋๊ฐ ํ๋ ๊ฒ์ด ๊ธฐ๋ฅ ํ ์คํธ๋ผ ํ ์ ์๋ค.
์ ๋ ํ ์คํธ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ๋ณ์ ํจ์๊ฐ ์ ๋๋ก ๋์ํ๋์ง ํ์ธํ๊ณ ํตํฉ ํ ์คํธ๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ ์์คํ ์ด ์ ์ํธ์์ฉ ํ๋์ง ํ์ธํ ์ ์๋ค.
๊ธฐ๋ฅ ํ ์คํธ๋ ์ด์ ์์ ํ ๋ค๋ฅธ ๋ ๋ฒจ์ ์๋ค๊ณ ์๊ฐํ๋ฉด ๋๋ค.
์ ๋ ํ ์คํธ๋ ์๋ฐฑ ๊ฐ์ง๊ฐ ์์ ์ ์์ง๋ง ๊ธฐ๋ฅ ํ ์คํธ๋ ๊ทธ๋ ์ง ๋ชปํ๋ค.
๊ธฐ๋ฅํ ์คํธ๋ ์์ฑํ๊ธฐ ๋งค์ฐ ์ด๋ ต๊ณ ๋์ ๋ณต์ก์ฑ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค. (์น ์ดํ๋ฆฌ์ผ์ด์ ์ ๊ฐ์ ํ๋ฉด ๊ธฐ๋ฅ ํ ์คํธ๋ ์ค์ ์ฌ์ฉ์ ์ํธ ์์ฉ์ ์๋ฎฌ๋ ์ด์ ํ๋ฏ๋ก ํ์ด์ง ๋ก๋ฉ ์๊ฐ์กฐ์ฐจ๋ ๊ธฐ๋ฅ ํ ์คํธ์ ํ ์์ธ์ด ๋๋ค)
์์ ๊ฐ์ ์ด์ ๋ก ๊ธฐ๋ฅ ํ ์คํธ๋ฅผ ๋งค์ฐ ์ธ๋ฐํ๊ฒ ๋๋ ์ ํ๋ฉด ์ข์ง ๋ชปํ๋ค.
๋์ ๊ธฐ๋ฅ ํ ์คํธ๋ ์ฌ์ฉ์์ ์ฑ์ ์ํธ์์ฉ์ ํ ์คํธํ๊ณ ์ถ์ ๋ ์ ์ฉํ๋ค. (์๋ฅผ ๋ค์ด, ํ์ ๊ฐ์ ๊ณผ ๊ฐ์ด ๋ธ๋ผ์ฐ์ ์์ ์ฑ์ ํน์ ํ๋ฆ์ ์๋์ผ๋ก ํ ์คํธํ๋ ๊ฒฝ์ฐ)
ํ์ ๊ฐ์ ์ ๋ํ ๊ธฐ๋ฅ ํ ์คํธ๋ผ ํ๋ฉด ์ ์ ๊ฐ ํ์๊ฐ์ ์ ๋ง์น๊ณ "์ ํฌ ์ฌ์ดํธ์ ํ์ ๊ฐ์ ํ๊ฒ ๋ ๊ฒ์ ์ถํ๋๋ฆฝ๋๋ค."๋ผ๋ ํ์ด์ง๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ์ถ๋ ฅํด์ค ๊ฒ์ ๋ณด์ฅํด์ฃผ์ด์ผ ํ๋ค.
์ถ์ฒ
https://codeutopia.net/blog/2015/04/11/what-are-unit-testing-integration-testing-and-functional-testing/
battlecook๋์ ๊ฒฝํ๊ณผ ์ง์ ์ธ์ฉ (https://battlecook.github.io/)
๋๊ธ
์ด ๊ธ ๊ณต์ ํ๊ธฐ
-
๊ตฌ๋
ํ๊ธฐ
๊ตฌ๋ ํ๊ธฐ
-
์นด์นด์คํก
์นด์นด์คํก
-
๋ผ์ธ
๋ผ์ธ
-
ํธ์ํฐ
ํธ์ํฐ
-
Facebook
Facebook
-
์นด์นด์ค์คํ ๋ฆฌ
์นด์นด์ค์คํ ๋ฆฌ
-
๋ฐด๋
๋ฐด๋
-
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
๋ค์ด๋ฒ ๋ธ๋ก๊ทธ
-
Pocket
Pocket
-
Evernote
Evernote