๊ณฐํฐ๋ทฐ ์๋น์ค ๊ฐ๋ฐ์์ ์งํํ ๋จ์ ํ ์คํธ์ ํตํฉ ํ ์คํธ ๋ฐฉ์์ ๋ํด ์ค๋ช ํ ๊ธ์ ๋๋ค.
์์ ํฌ์คํธ์์๋ ํ
์คํธ ์ฝ๋๋ ๋ฌด์์ธ์ง, ๋ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ด์ ๋ ๋ฌด์์ธ์ง์ ๋ํด ๊ฐ๋จํ๊ฒ ์์๋ณด์๋ค.
ํ
์คํธ ์ฝ๋๋ ์ ๋ง๋ค๊น?
์ด๋ฒ์๋ ํ
์คํธ ์ฝ๋์ ๋ค์ํ ์ข
๋ฅ์ ๊ฐ ์ข
๋ฅ ๋ณ๋ก ์ํํธ์จ์ด์ ์ด๋ค ๋ถ๋ถ์ ์ง์คํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ์ค์์๋ ํนํ ๋จ์ ํ
์คํธ์ ํตํฉ ํ
์คํธ์ ๋ํด ์์ธํ๊ฒ ์์๋ณด๊ฒ ๋ค.
ํ ์คํธ ์ฝ๋์๋ ๋จ์ ํ ์คํธ, ํตํฉ ํ ์คํธ, ๋ถํ ํ ์คํธ ๋ฑ ์ฐ๋ฆฌ๊ฐ ํํ ๋ค์ด๋ณธ ํ ์คํธ ๋ฐฉ์๋ฟ๋ง ์๋๋ผ ์ธ์ ํ ์คํธ, ํ๊ท ํ ์คํธ, E2E ํ ์คํธ ๋ฑ ์ ๋ง ๋ง์ ์ข ๋ฅ์ ํ ์คํธ๊ฐ ์กด์ฌํ๋ค. ์ฌ๊ธฐ์์๋ ํํ ๊ฐ๋ฐ์๋ค์ด ์ ํ ์ ์๋ ํ ์คํธ์ ๋ํด์ ์ ๋ฆฌํด ๋ณด๊ฒ ๋ค.
์์์ ๋จ์ ํ ์คํธ๋ ์ํํธ์จ์ด์ ๊ฐ์ฅ ์์ ๋จ์์ธ ๋ฉ์๋ ๋ฑ์ ํ ์คํธํ๋ ๊ฒ์ด๋ผ๊ณ ํ์๋ค. ๊ทธ๋ ๋ค๋ฉด ์ค์ ๋ก ํ ์คํธ๋ฅผ ์งํํ ๋๋ ์ด๋ป๊ฒ ์งํ๋๋ ๊ฒ์ผ๊น?
์ค์ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ ์ํฉ์ ์๊ฐํด ๋ณด๋ฉด, ํ๋์ ๋ชจ๋๋ง์ผ๋ก ํ๋ก๊ทธ๋จ์ด ์์ฑ๋๋ ๊ฒ์ด ์๋ ๋ค๋ฅธ ๋ชจ๋์ด๋ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ํธ์์ฉ์ ํตํด ํ๋ก๊ทธ๋จ์ ์ ์ฒด์ ์ธ ๊ณผ์ ์ด ์์ฑ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ํ๋์ ๋ชจ๋ ๋จ์๋ง์ด ์๋๋๋ก ์ ์๋ํ๋์ง ํ์ธํ๋ ๊ฒ์ ๋งค์ฐ ์ด๋ ต๋ค๊ณ ๋ณผ ์ ์๋ค.
์ด๋ฐ ์ํฉ์์ ์ด๋ป๊ฒ ํด์ผ ๋จ์ ํ ์คํธ๊ฐ ์งํ๋ ์ ์์๊น? ๋จ์ ํ ์คํธ๋ ํ๋์ ๋ชจ๋ ๋จ์๋ง ํ ์คํธํ๋ ๊ฒ์ด๊ธฐ์ ๋ค๋ฅธ ๋ชจ๋์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฐ์์๋ ์๋๋ค. ์ฆ, ๋ค๋ฅธ ๋ชจ๋์์๋ ํ ์คํธ ์๋๋ฆฌ์ค์์ ์๋ํ ๋๋ก ์๋ต์ด ์์ผ ํ๋ ๊ฒ์ด๋ค. "ํ ์คํธ ๋์ ๋ชจ๋์ด ์ด๋ฌํ ์๋๋ฆฌ์ค์์ ์ด๋ฌํ ์๋ต์ ํ๋์ง"๋ฅผ ํ ์คํธํ ๊ฒ์ด๊ธฐ์ ๋ค๋ฅธ ๋ชจ๋๋ค์ "์ด๋ฌํ ์๋๋ฆฌ์ค"๋ฅผ ๋ง๋ค์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ๋จ์ ํ ์คํธ๋ฅผ ์งํํ ์ ์๋ ๊ฒ์ด๋ค.
์์์ ๋งํ ๋ค๋ฅธ ๋ชจ๋๋ค์ด "์ด๋ฌํ ์๋๋ฆฌ์ค"๋ฅผ ๋ง๋ค์ด์ค ์ ์๊ฒ ํ๋ ๋ฐ ์ฌ์ฉ๋๋ ๊ฒ์ด ๋ฐ๋ก Mock(๋ชจ์ ๊ฐ์ฒด)์ด๋ค. Mocking์ ํตํด ํ์ฌ ํ ์คํธ๋ฅผ ์งํํ๋ ค๊ณ ํ๋ ๋ชจ๋์ ์ํฅ์ ์ฃผ๋ ๋ค๋ฅธ ๋ชจ๋๋ค์ด ์ง์ ๋ ์๋ต๋ง์ ๋ฐํํ๋๋ก, ์ฆ "ํ๋ด" ๋ด๊ฒ ํ์ฌ ํ ์คํธ ์๋๋ฆฌ์ค๋ฅผ ๊ตฌ์ถํ๊ณ , ๊ทธ๋ฌํ ์ํฉ ์์์ ํ ์คํธ ๋์ ๋ชจ๋์ด ์๋ํ ์๋ต์ ํ๋์ง ํ์ธํ ์ ์๊ฒ ํ๋ ๊ฒ์ด๋ค. "์์กด์ฑ"์ผ๋ก ์ธํ ๋จ์ ํ ์คํธ ์์ ์ด๋ ค์์ Mock์ ์ฌ์ฉํด ํ ๋ฒ์ ํด๊ฒฐํ ์ ์๋ค.
๊ฐ๋จํ ์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค. ํ์ฌ MVC ํจํด์ ๋ฐ๋ฅด๋ Spring ํ๋ก์ ํธ๋ฅผ ๊ฐ๋ฐํ๊ณ , ์ด๋ฅผ ํ
์คํธํ๋ ค๊ณ ํ๋ค๊ณ ๊ฐ์ ํด ๋ณด์. ํน์ Controller ๊ณ์ธต์ ๋ํด ๋จ์ ํ
์คํธ๋ฅผ ์งํํ๋ ค๊ณ ํ๋ค๋ฉด, Controller ๊ณ์ธต์ ๋น์ฐํ๊ฒ๋ Service ๊ณ์ธต์ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฐ๊ฒ ๋๋ค.
Service ๊ณ์ธต์์ A๊ฐ ๋ฐํ๋๋ฉด Controller ๊ณ์ธต์์๋ A'๋ผ๋ ๊ฒฐ๊ณผ, Service ๊ณ์ธต์์ B๊ฐ ๋ฐํ๋๋ฉด Controller ๊ณ์ธต์์๋ B'๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋ ๋ฐฉ์์ ํ
์คํธํด ๋ณด๊ฒ ๋ค๊ณ ํ์. ๊ทธ๋ ๋ค๋ฉด Service ๊ณ์ธต์์ A ๋๋ B๋ผ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฐํ๋๋๋ก Mocking์ ์งํํ๋ฉด ๋๋ค. Mocking ํ Controller ๊ณ์ธต์์ ์ํ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ค๋์ง ํ์ธํ๋ฉด ์ ๋ง ๊ฐ๋จํ๊ฒ ๋จ์ ํ
์คํธ๊ฐ ์๋ฃ๋๋ ๊ฒ์ด๋ค.
๋ง์ฝ Mocking์ด ์์๋ค๋ฉด, Service ๊ณ์ธต์์ A ๋๋ B๊ฐ ๋์ค๋๋ก ์์ฒญ์ด๋ ํ
์คํธ ํ๊ฒฝ์ ๋ํ ์ค๊ณ๋ฅผ ๋ ์ธ๋ฐํ๊ฒ ์กฐ์ ํด์ผ ํ๋ฏ๋ก ํ
์คํธ์ ์์์ผ ํ๋ ๋ฆฌ์์ค๋ ์ปค์ง๊ฒ ๋์ ๊ฒ์ด๋ค. ๋ํ ์์ ๊ฐ์ ๋ฐฉ์์ ํ
์คํธ๋ ๋ค๋ฅธ ๋ชจ๋๋ค๊ณผ ๊ฒฐํฉํ ์ํ์ ํ
์คํธ์ด๊ธฐ์ ๋จ์ ํ
์คํธ๋ผ๋ ๊ฐ๋
์๋ ์ด๊ธ๋๋ ํ
์คํธ๊ฐ ๋ผ๋ฒ๋ฆฐ๋ค.
ํตํฉ ํ ์คํธ๋ ์์์ ์ดํด๋ณธ ๋จ์ ํ ์คํธ์ ๋ค๋ฅด๊ฒ ๋น์ฐํ๋ Mock์ด ํ์๊ฐ ์๋ ์์ ์ด๋ค. ํตํฉ ํ ์คํธ์ ๋ชฉํ ์์ฒด๊ฐ ์ฌ๋ฌ ๋ชจ๋์ ์กฐํฉ์ ํตํด ๋ง๋ค์ด์ง ์ ์ฒด ์์คํ ์ด ์์๋๋ก ๋์๊ฐ๋ ๊ฒ์ ํ์ธํ๋ ๊ฒ์์ ์๊ฐํด ๋ณด๋ฉด ์ฝ๊ฒ ๊ทธ ์ด์ ๊ฐ ์ดํด๋ ๊ฒ์ด๋ค.
์ ์ฒด ์์คํ ์ ๋ํ ํ ์คํธ์ด๋ค ๋ณด๋, ๊ฐ๋ฐ์๊ฐ ๊ฐ๋ฐ ๋จ๊ณ์์ ์ค์ ๋ก ํ๋ก๊ทธ๋จ์ ๊ตฌ๋์์ผ ๋๊ณ ์์ฒด์ ์ผ๋ก ํ ์คํธ๋ฅผ ์งํํ๋ ๊ฒฝ์ฐ์ ๋งค์ฐ ์ ์ฌํ ์๋๋ฆฌ์ค์ ๋ํ ํ ์คํธ๊ฐ ๋ ์๋ฐ์ ์๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ ์ผ ์ฒ์ ํ ์คํธ๋ฅผ ์ ํ์ ๋ ๊ฐ์ฅ ์ ํ๊ฐ ์์ด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๊ณ , ์งํํ ์ ์์๋ ํ ์คํธ์๋ค.
ํ์ง๋ง ํตํฉ ํ ์คํธ์ ์ด๋ ค์์ ์ ์ฒด ์์คํ ์ ๋ํ ํ ์คํธ์ด๊ธฐ ๋๋ฌธ์ DB์ ๊ฐ์ด ์ฝ์ ๋๊ณ , ๋ณ๊ฒฝ๋๊ณ , ๋ ์ญ์ ๋๊ธฐ๋ ํ๋ฉด์ ์์นซ ํ ์คํธ์ ์ค๊ณ๊ฐ ์๋ชป๋๋ค๋ฉด ์ค์ DB์ ์ ์ฅ๋ ๊ฐ์ ์ํฅ์ ๋ผ์น๋ ์ต์ ์ ๊ฒฝ์ฐ๊ฐ ๋ฐ์ํ ์ ์๋ค๋ ์ ์ด๋ค. ๋ฌผ๋ก ์ด๋ฅผ ๋๋นํ์ฌ ์ค์ DB๊ฐ ์๋ ๋ค๋ฅธ ํ ์คํธ DB๋ฅผ ๋ก์ปฌ์ด๋ ๋ค๋ฅธ ์๋ฒ์ ๋ง๋ จํ์ฌ ํ ์คํธ๋ฅผ ์งํํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋จํ๊ฒ ํด๊ฒฐํ ์ ์์ง๋ง, ํ ์คํธ๋ฅผ ์ฒ์ ์ ํ ์ด๋ณด ๊ฐ๋ฐ์์ ๊ฒฝ์ฐ ์์นซ ์ฝ๊ฒ ์ค์ํ ์ ์๋ ๊ฒฝ์ฐ์ด๋ค.
์๋ฅผ ๋ค์ด๋ณด๊ฒ ๋ค. ์์ ๋์ผํ ์ํฉ์ผ๋ก Controller ๊ณ์ธต์ ๋ํ ํตํฉ ํ ์คํธ๋ฅผ ์งํํ๋ค๊ณ ํด๋ณด๊ฒ ๋ค. Mocking์ ํด์ ํ๊ณ , ์์ฒญ์ด๋ ํ ์คํธ ํ๊ฒฝ์ ๋ํ ์ค๊ณ๋ฅผ ์ธ๋ฐํ๊ฒ ์กฐ์ ํ์ฌ Controller๊ฐ ์๋ํ ์๋ต์ ํ๋๋ก ์กฐ์ ํ๋ฉด ๋๋ค.
๋ค์ ๋ธ๋ก๊น ์์๋ ์ค์ ๊ณฐํฐ๋ทฐ์์ ์ด๋ค ์ข ๋ฅ์ ํ ์คํธ๋ค์ ์งํํ์๋์ง์ ๋ํด ์๊ธฐํด ๋ณด๊ฒ ๋ค.