์ถ์ ์ ๋ง๋ค ์์ ์ ๊ฒ์์ 100๋ฒ์ฉ ํ๋ ์ดํ์ง ๋ง์ธ์โ์ง๋ฃจํ ์์ ์ ๋ก๋ด์๊ฒ ๋งก๊ธฐ๊ณ , ์ฌ๋ฏธ์๋ ๋ถ๋ถ์ ๋ฉ์ง๊ฒ ๋ง๋๋ ๋ฐ ์ง์คํ์ธ์
์ฐ๋ฆฌ๊ฐ ์๋ชปํ๊ณ ์๋ค๋ ์ฌ์ค์ ๊นจ๋ฌ์ ์ ํํ ์๊ฐ์ด ๊ธฐ์ต๋ฉ๋๋ค. ์๋ฒฝ 2์์๊ณ , ๊ฐ์ ์ธ๋ฒคํ ๋ฆฌ ํ๋ฉด์ 300๋ฒ์งธ ํด๋ฆญํ๋ฉฐ '์ฌ์ํ' ์์ง ์ ๋ฐ์ดํธ ํ์๋ ๊ฒ ์์ด์ฝ์ด ์ ๋๋ก ๋ณด์ด๋์ง ํ์ธํ๊ณ ์์์ต๋๋ค. ๋ฆฌ๋ ๊ฐ๋ฐ์๊ฐ ๋ค๊ฐ์์ ๋งํ๊ธธ, "์ด๊ฑฐ, ์๋ํ๋ ๊ฒ์ ํ ์คํธ๊ฐ ์ฒ๋ฆฌํด์ผ ํ ์ผ์ด์์, ๊ทธ๋ ์ง?" ๊ฒ์ ์ฒด์ธ์ ์์ต๋๋ค.
๋ฉ์ง ์ ๊ธฐ๋ฅ์ด ์ค์๋ก ํํ ๋ฆฌ์ผ ๊น์ํ ๊ณณ์ ์จ๊ฒจ์ง ๋ฌด์ธ๊ฐ๋ฅผ ๋ง๊ฐ๋จ๋ฆด ๋์ ๊ทธ ๋๊ฐํ ๋๋, ์์์ฃ ? ์๋ QA๋ ํ์์ ์ด์ง๋ง, ์ฌ๋์ ํผ๊ณคํด์ง๊ณ , ์ฃ์ง ์ผ์ด์ค๋ฅผ ๋์น๋ฉฐ, ์์งํ ๋งํด 300๊ฐ์ ์์ดํ ์ด ์ฌ์ ํ ์ฌ๋ฐ๋ฅด๊ฒ ์์ด๋์ง ํ์ธํ๋ ๋์ ์ด์ํ ํ๋ ์ด์ด ํ๋์ ํ์ํด์ผ ํฉ๋๋ค. ๊ทธ๋ ํ ์คํธ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์ฌ๋ฌ๋ถ์ ์ ์ ์ ์ง์ผ์ค๋๋ค.
ํต์ฌ ์ ํ์ ์? ๊ฒ์ ์ฝ๋๋ฅผ ๊ฒฌ๊ณ ํ ๊ฒ์ ๊ฐ๋ฐ ํ ์คํธ ๋๊ตฌ๊ฐ ํ์ํ ๋ค๋ฅธ ์ํํธ์จ์ด ํ๋ก์ ํธ์ฒ๋ผ ์ทจ๊ธํ๋ ๊ฒ์ ๋๋ค. ๋๋ถ๋ถ์ ์์ง์๋ ์ด์ ๋ด์ฅ ๋๋ ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฐ์ ๊ฒ์ ํ ์คํธ ํ๋ ์์ํฌ๊ฐ ํจ๊ป ์ ๊ณต๋๋ฏ๋ก, ๋งค ๋น๋๋ฅผ ๋งจ์์ผ๋ก ํ ์คํธํด์ผ ํ๋ค๋ ๋ณ๋ช ์ ํตํ์ง ์์ต๋๋ค. Unity๋ Unreal์ด๋ , ์ปคํผ๋ฅผ ๋ง์๋ ๋์ ์คํ๋๋ ํ ์คํธ ์ค์ํธ๋ฅผ ๊ฐ์ง ์ ์์ต๋๋ค. ์ด์ ์ค์ ๋ก ์ด๋ป๊ฒ ํ๋์ง, ์คํฌ๋ฆฝํธ๋ถํฐ ์ง์์ ํตํฉ๊น์ง, ์ฐฝ์์ ์ธ ๋ถ๊ฝ์ ์์ง ์์ผ๋ฉด์ ์ด์ผ๊ธฐํด ๋ด ์๋ค.
๊ฒ์ ํ
์คํธ ์คํฌ๋ฆฝํธ ์์ฑ๋ฒ์ ์ฒซ๊ฑธ์์ ์ด์ํ๊ฒ ๊ฒฉ์ ์์ด ๋ณด์
๋๋ค. ์ฌ๋ฌ๋ถ์ ๊ฒ์์ ํ๋ ์ดํ๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด๋๊น์. ์๊ฒ ์์ํ์ธ์. ์ ์ฒด ๋๋๊ณค ๋ณด์ค ์ ํฌ๋ฅผ ํ
์คํธํ๋ ๋์ , ๋ฉ์ธ ๋ฉ๋ด๋ฅผ ์ด๊ณ '์ ๊ฒ์' ๋ฒํผ์ด ์กด์ฌํ๋์ง ํ์ธํ ํ ๋๋ฅด๋ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ธ์. Unity์์๋ Test Framework๋ฅผ ์ฌ์ฉํ ํ๋ ์ด๋ชจ๋ ํ
์คํธ์
๋๋ค. [UnityTest] ์์ฑ์ด ์๋ ๋ฉ์๋๋ฅผ ์์ฑํ๊ณ , SceneManager.LoadScene์ ์ฌ์ฉํ ํ ํ์ดํ ํ๋ฉด์ ๋ก๋ํ ํ ์ฌ๋ฐ๋ฅธ ํ๊ทธ๋ฅผ ๊ฐ์ง GameObject๊ฐ ํ์ฑํ๋์๋์ง ๊ฒ์ฆํฉ๋๋ค. ์ง , ์ฒซ ๋ฒ์งธ ์๋ํ๋ ๊ธฐ๋ณธ ์ ๊ฒ์
๋๋ค. ์ต์ํด์ง๋ฉด ์ฌ์ํ ๊ฒ์ฌ์์ ์ ์์ฑ, ์
๋ ฅ ์ํ์ค ์๋ฎฌ๋ ์ด์
, ๊ทธ๋ฆฌ๊ณ ์ฌ๋ผ์์ด ๊ณต๊ฒฉํ ๋ ํ๋ ์ด์ด ์ฒด๋ ฅ์ด ์ ํํ ์ผ๋ง๋ ๊ฐ์ํ๋์ง ํ์ธํ๋ ๋จ๊ณ๋ก ๋์๊ฐ๋๋ค.
Unity ์๋ํ ํ
์คํธ๋ ๋๋๋๋ก ์ ๊ทผํ๊ธฐ ์ฌ์์ก์ต๋๋ค. ํจํค์ง๊ฐ ์๋ํฐ์ ํฌํจ๋์ด ์์ผ๋ฉฐ, Edit Mode ํ
์คํธ(๋ก์ง, ์ฌ ์์)์ Play Mode ํ
์คํธ(๋ฐํ์, ์ ์ฒด ์๋ฎฌ๋ ์ด์
)๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค. ์ ๋ ์ฃผ๋ก ์ธ๋ฒคํ ๋ฆฌ ์์คํ
์ Edit Mode์์ ๋ถ๋ฆฌํ์ฌ ์์ํฉ๋๋ค. ์์ดํ
์ถ๊ฐ, ๋ฌด๊ฒ ํ์ธ, ์ค๋ณต ๊ณ ์ ์์ดํ
์ถ๊ฐ ์๋ ๋ฑ, ๋ฌด๊ฑฐ์ด ์ฌ์ ๋ก๋ํ์ง ์๊ณ ์ํํฉ๋๋ค. Play Mode ํ
์คํธ๋ ์๊ฐ์ ํผ๋๋ฐฑ์ ์ฒ๋ฆฌํฉ๋๋ค. ์ผ๋ฐ์ ์ธ ํธ๋ฆญ์ ํ
์คํธ์์ UnityEngine.InputSystem ๋ํผ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ํจ๋๋ ํค๋ณด๋ ์ด๋ฒคํธ๋ฅผ ์๋ฎฌ๋ ์ด์
ํจ์ผ๋ก์จ ํ๋ก๊ทธ๋๋ฐ ๋ฐฉ์์ผ๋ก ์ง์ ์ผ๋ก ๊ฒ์์ 'ํ๋ ์ด'ํ๋ ๊ฒ์
๋๋ค. ๋ฌธ ๊ทผ์ฒ์์ 'E'๋ฅผ ๋๋ฅด๋ ํฌํผ๋ฅผ ์์ฑํ ํ ํ๋ ์ด์ด์ ๋ณํ์ด ์ ๋ฐฉ์ผ๋ก ๋ณ๊ฒฝ๋์๋์ง ๊ฒ์ฆํ์ธ์. ์ด๋ฌํ ํจํด์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ QA ์๋ํ ํํ ๋ฆฌ์ผ์ ๋ง์ด ์ฐพ์ ์ ์์ต๋๋ค. ๋ฆฌ๋ฌ์ ํ๋ฉด ๋ฐ๋ก ๊ฐ์ด ์กํ๋๋ค.
Unreal ์์ง ํ
์คํธ ์๋ํ๋ ๋น์ทํ ๊ธธ์ ๋ฐ๋ฅด์ง๋ง ๊ณ ์ ํ ํน์ฑ์ด ์์ต๋๋ค. UE์ Automation System์ ์ฌ์ฉํ๋ฉด ์๋ํฐ์์ ์ง์ Functional Test๋ฅผ ์์ฑํ ์ ์์ผ๋ฉฐ, ๋น์ฃผ์ผ ์คํฌ๋ฆฝํ
์ ์ ํธํ๋ค๋ฉด ์ข
์ข
๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ฌ์ฉํฉ๋๋ค. C++ ๊ฐ๋ฐ์๋ผ๋ฉด FAutomationTestBase ํด๋์ค๊ฐ ์์ต๋๋ค. ์ ๋ ๋ ๋ฒจ์ "Functional Test Actor"๋ฅผ ๋ฐฐ์นํ๊ณ , ์ผ๋ จ์ ๋์(์ฌ๊ธฐ๋ก ์ด๋, ์ ๊ธฐ ๋ณด๊ธฐ, ๋ฐ์ฌ)์ ์ฒจ๋ถํ ํ ์ฑ๊ณต ์กฐ๊ฑด์ ์ค์ ํ๋ ๊ฒ์ ์ข์ํฉ๋๋ค. ๋ง์น ๋งค์ฐ ์์ข
์ ์ธ ๋ฐฐ์ฐ๋ฅผ ์ฐ์ถํ๋ ๊ฒ๊ณผ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ Unreal ํ๋ก์ ํธ๋ ๋ฐฉ๋ํ๊ธฐ ๋๋ฌธ์ ๋งต์ด๋ ํ๊ทธ๋ก ํํฐ๋ง๋ ํ
์คํธ๋ฅผ ์คํํ ์ ์์ด, ์ฌ๋ ํ
์คํฐ๊ฐ ์๋ฆฌ ์ก๊ธฐ ์ ์ ๋ฌผ๋ฆฌ๋ ๋ณต์ ์์์ ํ๊ท๋ฅผ ์ก์๋
๋๋ค. ์ ๊ฐ ๋ณธ ์ต๊ณ ์ ๊ฒ์ ํ
์คํธ ๋ชจ๋ฒ ์ฌ๋ก ์ค ์ผ๋ถ๋ ์ด๋ฅผ Gauntlet ์๋ํ ํ๋ ์์ํฌ์ ๊ฒฐํฉํ์ฌ ๋ฉํฐํ๋ ์ด์ด ์คํธ๋ ์ค ํ
์คํธ๋ฅผ ์ํํ๊ณ , ์์ญ ๊ฐ์ ๋๋ฏธ ํ๋ ์ด์ด๊ฐ ์ธ์
์ ์ํํ๊ฒ ์ฐธ์ฌํ๋ ๊ฒ์ ์๋ฎฌ๋ ์ด์
ํ๋ ๊ฒ์
๋๋ค.
์ด์ ํ ์คํธ๋ฅผ ๋ง์ด ๋ง๋ค์๋ค๋ฉด, ์๋์ผ๋ก๋ง ์คํํ๋ฉด ์ธ๋ชจ๊ฐ ์์ต๋๋ค. ์ฌ๊ธฐ์ ๊ฒ์ ๊ฐ๋ฐ CI/CD ํ ์คํ ์ด ๋ฑ์ฅํฉ๋๋ค. ํ ์คํธ ์ค์ํธ๋ฅผ Jenkins, GitHub Actions ๋๋ TeamCity์ ์ฐ๊ฒฐํ์ธ์. ๋ชจ๋ ์ฝ๋ ํธ์ ์๋ง๋ค CI ํ์ดํ๋ผ์ธ์ด ๊ฒ์์ ๋น๋ํ๊ณ , ํค๋๋ฆฌ์ค ๋ชจ๋(๋๋ ๋ ๋ ํ ์ฌ์ฉ)๋ก ์คํํ๋ฉฐ, ๋ชจ๋ ํ ์คํธ ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์คํํ๊ณ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ์ํฉ๋๋ค. ์ ๋ ์ธ๋ฒคํ ๋ฆฌ ์คํํน ํ ์คํธ๊ฐ ์คํจํ๋ฉด ๊ฐ๋ฐ์์ Slack์ ์คํจ ํ๋ ์์ ์คํฌ๋ฆฐ์ท๊ณผ ํจ๊ป ์๋์ผ๋ก ๋ต์ฅ์ ๋ณด๋ด๋ ์์คํ ์ ์ค์ ํ ์ ์ด ์์ต๋๋ค. ๊ทธ ๋๋ถ์ ํ๋ ์ด์ด๊ฐ ์ ์ค์ ๊ฒ์ ๋ณต์ ํ ์ ์๋ ๋ฒ๊ทธ๋ฅผ ์ถ์ํ์ง ์์์ต๋๋ค. ๋ชจ๋ฐ์ผ ๊ฒ์์ ๊ฒฝ์ฐ ์ค์ ํ๋์จ์ด์์ ํ ์คํธ๋ฅผ ์คํํ๊ธฐ ์ํด ๋๋ฐ์ด์ค ํ์ ํตํฉํ ์๋ ์์ง๋ง, ๋น์ฉ์ด ๋ ๋ง์ด ๋ญ๋๋ค.
์ด๋ ๊ฒ ์๊ฐํ ์๋ ์์ต๋๋ค. "ํ์ง๋ง ์ค์ ์ฌ๋ฏธ๋ฅผ ์ด๋ป๊ฒ ํ ์คํธํ์ง? ์๊ณ ๋ฆฌ์ฆ์ด ์ ํ๊ฐ ์ข์ ๋๋์ธ์ง ๋งํด์ค ์๋ ์์์." ๋ง์ต๋๋ค. ๊ทธ๋์ ์๋ํ๋ ํ๋ ์ด











