์ต์ ์น ๊ฐ๋ฐ์์ ์๋ํ๋ ์๊ฐ์ ํ๊ท ํ ์คํธ๋ฅผ ์ํ ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์ด์ , ๊ตฌํ ๋ฐ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ค๋ฃจ๋ ์ข ํฉ ๊ฐ์ด๋์ ๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ: ์ต์ ์น์ ์ํ ์๊ฐ์ ํ ์คํธ ์๋ํ
์ค๋๋ ๋น ๋ฅด๊ฒ ๋ณํํ๋ ์น ๊ฐ๋ฐ ํ๊ฒฝ์์ ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ์์ ํฝ์ ๋จ์๊น์ง ์๋ฒฝํ๊ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋ ๊ฒ์ ๋งค์ฐ ์ค์ํฉ๋๋ค. ํ์ง๋ง ์๋ ์๊ฐ์ ํ ์คํธ๋ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฌ๊ณ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ธฐ ์ฌ์ฐ๋ฉฐ ํ์ฅํ๊ธฐ ์ด๋ ต์ต๋๋ค. ๋ฐ๋ก ์ด๋ Storybook์ ์ ์์๋ค์ด ๋ง๋ ๊ฐ๋ ฅํ ์๊ฐ์ ํ ์คํธ ๋ฐ ๊ฒํ ์ํฌํ๋ก์ฐ์ธ ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ(Frontend Chromatic)์ด ๋ฑ์ฅํฉ๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ด๋ ๋ฌด์์ธ๊ฐ?
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์๋ํ๋ ์๊ฐ์ ํ๊ท ํ ์คํธ๋ฅผ ์ํด ์ค๊ณ๋ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ํ๋ซํผ์ ๋๋ค. Storybook๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด ๋ค์ํ ์ํ์ ํ๊ฒฝ์์ UI ์ปดํฌ๋ํธ์ ์ค๋ ์ท์ ์บก์ฒํฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ Chromatic์ ์ด ์ค๋ ์ท์ ๊ธฐ์ค์ (baseline)๊ณผ ๋น๊ตํ์ฌ ์ฝ๋ ๋ณ๊ฒฝ์ผ๋ก ์ธํด ๋ฐ์ํ ์๊ฐ์ ์ฐจ์ด, ์ฆ '์๊ฐ์ ํ๊ท'๋ฅผ ๊ฐ์งํฉ๋๋ค.
๊ธฐ๋ฅ์ ์ด์ ์ ๋ง์ถ๋ ๊ธฐ์กด์ ๋จ์ ํ ์คํธ๋ ํตํฉ ํ ์คํธ์ ๋ฌ๋ฆฌ, ํฌ๋ก๋งคํฑ์ ์ธ๊ด์ ์ด์ ์ ๋ง์ถฅ๋๋ค. ์ด๋ UI๊ฐ ๋ค์ํ ๋ธ๋ผ์ฐ์ , ๊ธฐ๊ธฐ ๋ฐ ์ด์ ์ฒด์ ์์ ์๋ํ ๋๋ก ๋ณด์ด๊ณ ์๋ํ๋์ง ํ์ธํ์ฌ ์๋ ํ ์คํธ์์๋ ๋์น ์ ์๋ ๋ฏธ๋ฌํ ์๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์ก์๋ด๋ ๋ฐ ๋์์ ์ค๋๋ค.
์๊ฐ์ ํ ์คํธ๊ฐ ์ค์ํ ์ด์
์ต์ ์น ๊ฐ๋ฐ์์ ์๊ฐ์ ํ ์คํธ๊ฐ ํ์์ ์ธ ๋ค์๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์๋๋ฆฌ์ค๋ฅผ ๊ณ ๋ คํด ๋ณด์ญ์์ค:
- ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ: ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ท๋ชจ UI ์ปดํฌ๋ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ๋ฐ์ ์ผ๊ด์ฑ์ ์ ์งํฉ๋๋ค. ์์ ๋ณ๊ฒฝ์ด๋ผ๋ ์์์น ๋ชปํ ๋ฐฉ์์ผ๋ก ์ปดํฌ๋ํธ์ ์ธ๊ด์ ํ๊ธ ํจ๊ณผ๋ฅผ ๋ฏธ์น ์ ์์ต๋๋ค.
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ: ๋ค์ํ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge) ๋ฐ ์ด์ ์ฒด์ (Windows, macOS, Linux)์์ UI๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋์ง ํ์ธํฉ๋๋ค. ๋ธ๋ผ์ฐ์ ๋ณ ๋ ๋๋ง ์ฐจ์ด๋ก ์ธํด ์๊ฐ์ ๋ถ์ผ์น๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
- ๋ฐ์ํ ๋์์ธ: UI๊ฐ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๊ธฐ๊ธฐ ๋ฐฉํฅ์ ๋ง๊ฒ ์ ์ ํ ์กฐ์ ๋๋์ง ๊ฒ์ฆํฉ๋๋ค. ๋ฐ์ํ ๋ ์ด์์์ ์๋์ผ๋ก ๋ฐ๊ฒฌํ๊ธฐ ์ด๋ ค์ด ๋ฏธ๋ฌํ ์๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์ ๋ฐํ ์ ์์ต๋๋ค.
- ๋ฆฌํฉํฐ๋ง ๋ฐ ์ฝ๋ ์ ๋ฐ์ดํธ: ์ฝ๋๋ฅผ ๋ฆฌํฉํฐ๋งํ๊ฑฐ๋ ์ข ์์ฑ์ ์ ๋ฐ์ดํธํ ๋ ์๋์น ์์ ์๊ฐ์ ํ๊ท๋ก๋ถํฐ ๋ณดํธํฉ๋๋ค. ๊ฒ๋ณด๊ธฐ์๋ ๋ฌดํดํ ์ฝ๋ ๋ณ๊ฒฝ์ด๋ผ๋ ์ค์๋ก UI์ ์ธ๊ด์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- ๋์์ธ ์์คํ ๊ตฌํ: ๋์์ธ ์์คํ ์ ์ค์ ๊ตฌํ์ด ์๋๋ ์๊ฐ์ ์ฌ์ ๋ฐ ์คํ์ผ ๊ฐ์ด๋๋ผ์ธ๊ณผ ์ผ์นํ๋์ง ํ์ธํฉ๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ ์ฌ์ฉ์ ์ด์
ํฌ๋ก๋งคํฑ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐํ์ ๋ค์ํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ์๊ฐ์ ํ๊ท ์กฐ๊ธฐ ๋ฐ๊ฒฌ: ๊ฐ๋ฐ ์ฃผ๊ธฐ ์ด๊ธฐ์ ์๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์๋ณํ๊ณ ์์ ํ์ฌ ํ๋ก๋์ ์ ๋๋ฌํ๊ธฐ ์ ์ ํด๊ฒฐํฉ๋๋ค.
- UI ์ผ๊ด์ฑ ํฅ์: ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๊ธฐ์์ ์ผ๊ด๋๊ณ ์ธ๋ จ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ ๋น ๋ฅธ ๊ฐ๋ฐ ์ฃผ๊ธฐ: ์๋ ์๊ฐ์ ํ ์คํธ์ ์์๋๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ค์ ๋๋ค.
- ์ฝ๋ ๋ณ๊ฒฝ์ ๋ํ ์ ๋ขฐ๋ ์ฆ๊ฐ: ์๊ฐ์ ํ๊ท๊ฐ ์๋์ผ๋ก ๊ฐ์ง๋ ๊ฒ์ด๋ผ๋ ํ์ ์ ๊ฐ์ง๊ณ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐฐํฌํฉ๋๋ค.
- ํ์ ๊ฐํ: ์๊ฐ์ ๊ฒํ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ ๋์์ด๋์ ๊ฐ๋ฐ์๊ฐ ๋ ํจ๊ณผ์ ์ผ๋ก ํ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
- ํ์ฅ ๊ฐ๋ฅํ ํ ์คํธ: ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ฑ์ฅํ๊ณ ๋ฐ์ ํจ์ ๋ฐ๋ผ ์๊ฐ์ ํ ์คํธ ๋ ธ๋ ฅ์ ์ฝ๊ฒ ํ์ฅํ ์ ์์ต๋๋ค.
- ํฌ๊ด์ ์ธ ๋ณด๊ณ : ์๊ฐ์ ํ๊ท ๋ํฅ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ป๊ณ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๋ฐ์ ์ธ ์๊ฐ์ ์ํ๋ฅผ ์ถ์ ํฉ๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์ฃผ์ ๊ธฐ๋ฅ
ํฌ๋ก๋งคํฑ์ ์๊ฐ์ ํ ์คํธ ์ํฌํ๋ก์ฐ๋ฅผ ๊ฐ์ํํ๋๋ก ์ค๊ณ๋ ๊ธฐ๋ฅ๋ค๋ก ๊ฐ๋ ์ฐจ ์์ต๋๋ค:
- Storybook ํตํฉ: Storybook๊ณผ ์ํํ๊ฒ ํตํฉ๋์ด ์ต์ํ์ ์ค์ ์ผ๋ก UI ์ปดํฌ๋ํธ์ ์ค๋ ์ท์ ์บก์ฒํ ์ ์์ต๋๋ค.
- ์๋ ์ค๋ ์ท ์ดฌ์: ์ฝ๋๋ฅผ ํธ์ํ ๋๋ง๋ค UI ์ปดํฌ๋ํธ์ ์ค๋ ์ท์ ์๋์ผ๋ก ์บก์ฒํฉ๋๋ค.
- ์๊ฐ์ ๋น๊ต(Visual Diffing): ์ค๋ ์ท์ ๊ธฐ์ค์ ๊ณผ ๋น๊ตํ์ฌ ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ฐ์งํ๊ณ ๋ณ๊ฒฝ๋ ์์ญ์ ๊ฐ์กฐ ํ์ํฉ๋๋ค.
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํ ์คํธ: ์ฌ๋ฌ ๋ธ๋ผ์ฐ์ (Chrome, Firefox, Safari, Edge)์์ ํ ์คํธ๋ฅผ ์คํํ์ฌ ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ ํธํ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- ๋ณ๋ ฌ ํ ์คํธ: ํ ์คํธ๋ฅผ ๋ณ๋ ฌ๋ก ์คํํ์ฌ ํ ์คํธ ํ๋ก์ธ์ค์ ์๋๋ฅผ ๋์ ๋๋ค.
- GitHub, GitLab ๋ฐ Bitbucket ํตํฉ: ์ธ๊ธฐ ์๋ Git ์ ์ฅ์์ ํตํฉํ์ฌ ํ ๋ฆฌํ์คํธ์์ ์ง์ ์๊ฐ์ ํ๊ท ํผ๋๋ฐฑ์ ์ ๊ณตํฉ๋๋ค.
- ๊ฒํ ์ํฌํ๋ก์ฐ: ๋์์ด๋์ ๊ฐ๋ฐ์๊ฐ ์๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ์น์ธํ๊ฑฐ๋ ๊ฑฐ๋ถํ ์ ์๋ ํ์ ๊ฒํ ์ํฌํ๋ก์ฐ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์ฃผ์ ๋ฐ ๋ฉ๋ชจ: ์ฌ์ฉ์๊ฐ ์๊ฐ์ ๋น๊ต์ ์ฃผ์๊ณผ ๋ฉ๋ชจ๋ฅผ ์ถ๊ฐํ์ฌ ์ปค๋ฎค๋์ผ์ด์ ๊ณผ ํ์ ์ ์ด์งํ ์ ์์ต๋๋ค.
- ๊ธฐ์ค์ ๊ด๋ฆฌ: UI๊ฐ ๋ฐ์ ํจ์ ๋ฐ๋ผ ๊ธฐ์ค์ ์ ์ ๋ฐ์ดํธํ ์ ์๋๋ก ๊ด๋ฆฌ ๋๊ตฌ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ์๋ฆผ ๋ฐ ๊ฒฝ๊ณ : ์๊ฐ์ ํ๊ท๊ฐ ๊ฐ์ง๋๋ฉด ์๋ฆผ๊ณผ ๊ฒฝ๊ณ ๋ฅผ ๋ณด๋ ๋๋ค.
- ์ ๊ทผ์ฑ ํ ์คํธ: ์ ๊ทผ์ฑ ํ ์คํธ ๋๊ตฌ์ ํตํฉํ์ฌ UI ์ปดํฌ๋ํธ์ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ ์์ํ๊ธฐ
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์์ํ๋ ๋จ๊ณ๋ณ ๊ฐ์ด๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Storybook ํ๋ก์ ํธ ์ค์ : ์์ง ์๋ค๋ฉด UI ์ปดํฌ๋ํธ๋ฅผ ์ํ Storybook ํ๋ก์ ํธ๋ฅผ ์์ฑํฉ๋๋ค.
- Chromatic CLI ์ค์น: npm ๋๋ yarn์ ์ฌ์ฉํ์ฌ Chromatic ๋ช
๋ น์ค ์ธํฐํ์ด์ค(CLI)๋ฅผ ์ค์นํฉ๋๋ค:
npm install -g chromatic
๋๋yarn global add chromatic
- Chromatic ์ธ์ฆ: CLI๋ฅผ ์ฌ์ฉํ์ฌ Chromatic์ ์ธ์ฆํฉ๋๋ค:
chromatic login
- Storybook ํ๋ก์ ํธ ์ฐ๊ฒฐ: CLI๋ฅผ ์ฌ์ฉํ์ฌ Storybook ํ๋ก์ ํธ๋ฅผ Chromatic์ ์ฐ๊ฒฐํฉ๋๋ค:
chromatic
. ์ด ๊ณผ์ ์ ์ ์ฅ์๋ฅผ ์ฐ๊ฒฐํ๋ ๋จ๊ณ๋ฅผ ์๋ดํฉ๋๋ค. - Chromatic ๊ตฌ์ฑ: ํ์์ ๋ง๊ฒ Chromatic์ ๊ตฌ์ฑ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค. ํ ์คํธํ ๋ธ๋ผ์ฐ์ , ์ค๋ ์ท ํด์๋ ๋ฐ ๊ธฐํ ์ต์ ์ ์ง์ ํ ์ ์์ต๋๋ค.
- ์ฒซ ํ
์คํธ ์คํ: CLI๋ฅผ ์ฌ์ฉํ์ฌ ์ฒซ ์๊ฐ์ ํ
์คํธ๋ฅผ ์คํํฉ๋๋ค:
chromatic
. ์ด ๋ช ๋ น์ UI ์ปดํฌ๋ํธ์ ์ค๋ ์ท์ ์บก์ฒํ์ฌ Chromatic์ ์ ๋ก๋ํฉ๋๋ค. - ๊ฒฐ๊ณผ ๊ฒํ : Chromatic ์น ์ธํฐํ์ด์ค์์ ํ ์คํธ ๊ฒฐ๊ณผ๋ฅผ ๊ฒํ ํฉ๋๋ค. ์๊ฐ์ ํ๊ท๊ฐ ๊ฐ์ง๋๋ฉด ์น์ธํ๊ฑฐ๋ ๊ฑฐ๋ถํ ์ ์์ต๋๋ค.
- CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํตํฉ: Chromatic์ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํตํฉํ์ฌ ์ฝ๋๋ฅผ ํธ์ํ ๋๋ง๋ค ์๊ฐ์ ํ ์คํธ๋ฅผ ์๋์ผ๋ก ์คํํฉ๋๋ค.
์์ : React ํ๋ก์ ํธ์ Chromatic ์ค์ ํ๊ธฐ
Storybook์ด ์ค์ ๋ React ํ๋ก์ ํธ๊ฐ ์๋ค๊ณ ๊ฐ์ ํด ๋ด ์๋ค. ๋ค์๊ณผ ๊ฐ์ด Chromatic์ ํตํฉํ ์ ์์ต๋๋ค:
- Chromatic CLI ์ค์น:
npm install -g chromatic
- Chromatic์ ๋ก๊ทธ์ธ:
chromatic login
- Chromatic ์คํ (์ค์ ์ ์๋ดํฉ๋๋ค):
chromatic
- `package.json`์ Chromatic ์คํฌ๋ฆฝํธ ์ถ๊ฐ:
"scripts": { "chromatic": "chromatic" }
- ์ด์ Chromatic ์คํ:
npm run chromatic
ํฌ๋ก๋งคํฑ์ ์ฌ์ฉํ ์๊ฐ์ ํ ์คํธ ๋ชจ๋ฒ ์ฌ๋ก
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์ต๋ํ ํ์ฉํ๋ ค๋ฉด ๋ค์ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด์ญ์์ค:
- ํฌ๊ด์ ์ธ ์คํ ๋ฆฌ ์์ฑ: UI ์ปดํฌ๋ํธ์ ๋ชจ๋ ๊ฐ๋ฅํ ์ํ์ ๋ณํ์ ๋ค๋ฃจ๋ ํฌ๊ด์ ์ธ Storybook ์คํ ๋ฆฌ๋ฅผ ๋ง๋ญ๋๋ค.
- ์ปดํฌ๋ํธ ๋ถ๋ฆฌ: UI ์ปดํฌ๋ํธ๊ฐ ๋ฐ์ดํฐ ์์ค๋ API์ ๊ฐ์ ์ธ๋ถ ์ข ์์ฑ์ผ๋ก๋ถํฐ ๊ฒฉ๋ฆฌ๋๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ธ๋ถ ์์ธ์ด ์๊ฐ์ ํ ์คํธ ๊ฒฐ๊ณผ์ ์ํฅ์ ๋ฏธ์น๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ์์ ์ ์ธ ์ปดํฌ๋ํธ ID ์ฌ์ฉ: ์์ ์ ์ด๊ณ ๊ณ ์ ํ ์ปดํฌ๋ํธ ID๋ฅผ ์ฌ์ฉํ์ฌ Chromatic์ด ์๊ฐ ๊ฒฝ๊ณผ์ ๋ฐ๋ผ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ๊ฒ ์ถ์ ํ ์ ์๋๋ก ํฉ๋๋ค.
- ๋ถ์์ ํ ํ ์คํธ(Flaky Tests) ๋ฐฉ์ง: ๊ฒฐ์ ๋ก ์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๊ณ ํ ์คํธ๋ง๋ค ๋ฌ๋ผ์ง ์ ์๋ ์ ๋๋ฉ์ด์ ์ด๋ ์ ํ์ ํผํ์ฌ ๋ถ์์ ํ ํ ์คํธ์ ๊ฐ๋ฅ์ฑ์ ์ต์ํํฉ๋๋ค.
- ์๊ฐ์ ๊ฒํ ์ํฌํ๋ก์ฐ ์๋ฆฝ: ๋๊ฐ ์๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ๊ณ ์น์ธํ ์ฑ ์์ด ์๋์ง ์ ์ํ๋ ๋ช ํํ ์๊ฐ์ ๊ฒํ ์ํฌํ๋ก์ฐ๋ฅผ ์๋ฆฝํฉ๋๋ค.
- ์ ๊ธฐ์ ์ธ ๊ธฐ์ค์ ์ ๋ฐ์ดํธ: ์๋์ ์ธ UI ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ๊ธฐ ์ํด ์ ๊ธฐ์ ์ผ๋ก ๊ธฐ์ค์ ์ ์ ๋ฐ์ดํธํฉ๋๋ค.
- ์๊ฐ์ ํ๊ท ๋ํฅ ๋ชจ๋ํฐ๋ง: ์๊ฐ์ ํ๊ท ๋ํฅ์ ๋ชจ๋ํฐ๋งํ์ฌ ์ ์ฌ์ ์ธ ๋ฌธ์ ๋ฅผ ์กฐ๊ธฐ์ ์๋ณํฉ๋๋ค.
- ์๊ฐ์ ํ ์คํธ ์๋ํ: Chromatic์ CI/CD ํ์ดํ๋ผ์ธ๊ณผ ํตํฉํ์ฌ ์๊ฐ์ ํ ์คํธ๋ฅผ ์๋ํํ๊ณ ์๊ฐ์ ํ๊ท๊ฐ ํ๋ก๋์ ์ ๋๋ฌํ๊ธฐ ์ ์ ๋ฐ๊ฒฌ๋๋๋ก ํฉ๋๋ค.
ํฌ๋ก๋งคํฑ vs. ๋ค๋ฅธ ์๊ฐ์ ํ ์คํธ ๋๊ตฌ
์ฌ๋ฌ ์๊ฐ์ ํ ์คํธ ๋๊ตฌ๊ฐ ์์ง๋ง, ํฌ๋ก๋งคํฑ์ Storybook๊ณผ์ ๊น์ ํตํฉ๊ณผ ์ปดํฌ๋ํธ ์์ค ํ ์คํธ์ ๋ํ ์ง์ค์ผ๋ก ๋๊ฐ์ ๋ํ๋ ๋๋ค. ๋ค๋ฅธ ์ธ๊ธฐ ์๋ ์๊ฐ์ ํ ์คํธ ๋๊ตฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- Percy: ์ ์ฒด ํ์ด์ง ์ค๋ ์ท์ ์บก์ฒํ๊ณ ์๊ฐ์ ์ฐจ์ด๋ฅผ ๊ฐ์งํ๋ ์๊ฐ์ ํ ์คํธ ํ๋ซํผ์ ๋๋ค.
- Applitools: ๊ณ ๊ธ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ํ๊ท๋ฅผ ๊ฐ์งํ๋ ์๊ฐ์ AI ํ๋ซํผ์ ๋๋ค.
- BackstopJS: ์คํฌ๋ฆฐ์ท์ ์บก์ฒํ๊ณ ๊ธฐ์ค์ ๊ณผ ๋น๊ตํ๋ ์คํ ์์ค ์๊ฐ์ ํ๊ท ํ ์คํธ ๋๊ตฌ์ ๋๋ค.
ํ์์ ๊ฐ์ฅ ์ ํฉํ ๋๊ตฌ๋ ํน์ ์๊ตฌ ์ฌํญ๊ณผ ์์ฐ์ ๋ฐ๋ผ ๋ฌ๋ผ์ง๋๋ค. ๊ทธ๋ฌ๋ ์ด๋ฏธ Storybook์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์ํํ ํตํฉ๊ณผ ์ฌ์ฉ ํธ์์ฑ์ผ๋ก ์ธํด ํฌ๋ก๋งคํฑ์ด ์์ฐ์ค๋ฌ์ด ์ ํ์ ๋๋ค.
ํฌ๋ก๋งคํฑ๊ณผ ๊ธ๋ก๋ฒ ๊ฐ๋ฐํ
์ ์ธ๊ณ์ ๋ถ์ฐ๋ ๊ฐ๋ฐํ์๊ฒ ํฌ๋ก๋งคํฑ์ ๋ค์๊ณผ ๊ฐ์ ์๋นํ ์ด์ ์ ์ ๊ณตํฉ๋๋ค:
- ํ์คํ๋ ์๊ฐ์ ํ ์คํธ: ์์น์ ๊ด๊ณ์์ด ๋ชจ๋ ํ์์ด ๋์ผํ ์๊ฐ์ ํ ์คํธ ํ๋ก์ธ์ค์ ํ์ค์ ์ฌ์ฉํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
- ์ค์ ์ง์ค์ ๊ฒํ : ์๊ฐ์ ๋ณ๊ฒฝ ์ฌํญ์ ๊ฒํ ํ ์ ์๋ ์ค์ ์ง์ค์ ํ๋ซํผ์ ์ ๊ณตํ์ฌ ์๊ฐ๋์ ๊ฑธ์น ํ์ ์ ์ด์งํฉ๋๋ค.
- ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ: ๋ค๋ฅธ ์ง์ญ๊ณผ ์ธ์ด์ ๊ฑธ์ณ ์ผ๊ด๋ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค๋๋ค.
- ์ปค๋ฎค๋์ผ์ด์ ๊ฐ์ : ๋์์ด๋์ ๊ฐ๋ฐ์ ๊ฐ์ ์ปค๋ฎค๋์ผ์ด์ ์ ๊ฐํํ์ฌ ์คํด์ ์ฌ์์ ์ ์ค์ ๋๋ค.
์๋ฅผ ๋ค์ด, ์ ๋ฝ, ๋ถ๋ฏธ, ์์์์ ๋ถ์ฐ๋ ํ์ ์๊ฐํด ๋ณด์ญ์์ค. ํฌ๋ก๋งคํฑ์ ์ฌ์ฉํ๋ฉด ์ธ๋์ ๊ฐ๋ฐ์๊ฐ UI๋ฅผ ๋ณ๊ฒฝํ ํ, ํ๋์ค์ ๋์์ด๋์ ๋ฏธ๊ตญ์ ์ ํ ๊ด๋ฆฌ์๊ฐ ๋ค๋ฅธ ์๊ฐ์ ์์ ํ๋๋ผ๋ ์๊ฐ์ ์ผ๋ก ๋ณ๊ฒฝ ์ฌํญ์ ์ฝ๊ฒ ๊ฒํ ํ ์ ์์ต๋๋ค. ์ฃผ์ ๋ฐ ๋ฉ๋ชจ ๊ธฐ๋ฅ์ ํผ๋๋ฐฑ ํ๋ก์ธ์ค๋ฅผ ๊ฐ์ํํ์ฌ ๋ชจ๋ ์ฌ๋์ด ๋์ผํ ์ ๋ณด๋ฅผ ๊ณต์ ํ๋๋ก ๋ณด์ฅํฉ๋๋ค.
๋ค์ํ ์ฐ์ ๋ถ์ผ์ ์ผ๋ฐ์ ์ธ ์ฌ์ฉ ์ฌ๋ก
ํฌ๋ก๋งคํฑ์ ์ด์ ์ ๋ค์ํ ์ฐ์ ์ ๊ฑธ์ณ ํ์ฅ๋ฉ๋๋ค:
- ์ ์์๊ฑฐ๋: ๋ชจ๋ ๊ธฐ๊ธฐ์ ๋ธ๋ผ์ฐ์ ์์ ์ ํ ์ด๋ฏธ์ง, ์ค๋ช , ๋ ์ด์์์ด ์ฌ๋ฐ๋ฅด๊ฒ ํ์๋๋๋ก ํ์ฌ ๋ ๋์ ์ ํ์จ๋ก ์ด์ด์ง๋๋ค.
- ๊ธ์ต ์๋น์ค: ๊ธ์ต ๋์๋ณด๋ ๋ฐ ๋ณด๊ณ ์์ ์๊ฐ์ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ์ฌ ์ ํํ ๋ฐ์ดํฐ ํํ๊ณผ ๊ท์ ์ค์๋ฅผ ๋ณด์ฅํฉ๋๋ค.
- ์๋ฃ: ์๋ฃ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผ์ฑ๊ณผ ์ฌ์ฉ์ฑ์ ๋ณด์ฅํ์ฌ ์ค๋ฅ๋ฅผ ์๋ฐฉํ๊ณ ํ์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ํฉ๋๋ค.
- ๊ต์ก: ๋ค์ํ ํ๋ซํผ์์ ์ผ๊ด๋ ํ์ต ๊ฒฝํ์ ์ ๊ณตํ์ฌ ํ์ ์ฐธ์ฌ๋์ ๋ง์กฑ๋๋ฅผ ๋์ ๋๋ค.
- ์ ๋ถ: ์ ๋ถ ์น์ฌ์ดํธ์ ์๋น์ค๊ฐ ๋ชจ๋ ์๋ฏผ์๊ฒ ์ ๊ทผ ๊ฐ๋ฅํ๊ณ ์ฌ์ฉ์ ์นํ์ ์ด๋๋ก ๋ณด์ฅํฉ๋๋ค.
๊ณ ๊ธ ํฌ๋ก๋งคํฑ ๊ธฐ์
๊ธฐ๋ณธ ์ฌํญ์ ์ต์ํด์ง๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณ ๊ธ ๊ธฐ์ ์ ํ์ํด ๋ณด์ญ์์ค:
- ๋์ ์ฝํ ์ธ ๋ฌด์: ํฌ๋ก๋งคํฑ์ ๋ฌด์ ์์ญ(ignore regions) ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ๋ ์ง๋ ํ์์คํฌํ์ ๊ฐ์ ๋์ ์ฝํ ์ธ ๋ฅผ ์๊ฐ์ ๋น๊ต์์ ์ ์ธํฉ๋๋ค.
- ๋ค์ํ ๋ทฐํฌํธ ์ฌ์ฉ: ๋ค์ํ ๋ทฐํฌํธ์์ UI ์ปดํฌ๋ํธ๋ฅผ ํ ์คํธํ์ฌ ๋ฐ์์ฑ์ ํ์ธํฉ๋๋ค.
- ๋ฐ์ดํฐ ๋ชจํน: Storybook์ addon-mock์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ชจํนํ๊ณ ๋ค์ํ ์๋๋ฆฌ์ค๋ฅผ ์๋ฎฌ๋ ์ด์ ํฉ๋๋ค.
- ์ ๊ทผ์ฑ ํ ์คํธ ๋๊ตฌ์ ํตํฉ: ํฌ๋ก๋งคํฑ์ ์ ๊ทผ์ฑ ํ ์คํธ ํตํฉ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์ ๊ทผ์ฑ ๋ฌธ์ ๋ฅผ ์๋ณํฉ๋๋ค.
- ํฌ๋ก๋งคํฑ ๊ตฌ์ฑ ์ฌ์ฉ์ ์ ์: ํน์ ์๊ตฌ์ ๋ง๊ฒ ํฌ๋ก๋งคํฑ์ ๊ตฌ์ฑ์ ์ฌ์ฉ์ ์ ์ํฉ๋๋ค.
์๊ฐ์ ํ ์คํธ์ ๋ฏธ๋ ๋ํฅ
์๊ฐ์ ํ ์คํธ ๋ถ์ผ๋ ๋์์์ด ๋ฐ์ ํ๊ณ ์์ต๋๋ค. ์ฃผ๋ชฉํด์ผ ํ ๋ฏธ๋ ๋ํฅ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- AI ๊ธฐ๋ฐ ์๊ฐ์ ํ ์คํธ: AI ๊ธฐ๋ฐ ์๊ฐ์ ํ ์คํธ ๋๊ตฌ๋ ๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ์ฌ ์๊ฐ์ ํ๊ท๋ฅผ ์๋์ผ๋ก ๊ฐ์งํ๊ณ ๋ฌธ์ ์ ์ฐ์ ์์๋ฅผ ์ ํ ๊ฒ์ ๋๋ค.
- ์ฝ๋๋ก ์์ฑํ๋ ์๊ฐ์ ํ ์คํธ(Visual Testing as Code): ์ฝ๋๋ก ์๊ฐ์ ํ ์คํธ๋ฅผ ์ ์ํ ์ ์๊ฒ ๋์ด ์๊ฐ์ ํ ์คํธ๋ฅผ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ ์ฝ๊ฒ ํตํฉํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
- ํค๋๋ฆฌ์ค ์๊ฐ์ ํ ์คํธ: ํค๋๋ฆฌ์ค ์๊ฐ์ ํ ์คํธ๋ ๋ธ๋ผ์ฐ์ ์์ด ์๊ฐ์ ํ ์คํธ๋ฅผ ์คํํ ์ ์๊ฒ ํ์ฌ ํ ์คํธ ํ๋ก์ธ์ค์ ์๋๋ฅผ ๋์ผ ๊ฒ์ ๋๋ค.
- ์ ๊ทผ์ฑ์ ์ด์ ์ ๋ง์ถ ์๊ฐ์ ํ ์คํธ: ์ ๊ทผ์ฑ ํ ์คํธ๋ฅผ ์๊ฐ์ ํ ์คํธ ์ํฌํ๋ก์ฐ์ ์ง์ ํตํฉํ๋ ๋ฐ ๋ํ ๊ด์ฌ์ด ์ฆ๊ฐํ ๊ฒ์ ๋๋ค.
๊ฒฐ๋ก
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ ์๊ฐ์ ํ๊ท ํ ์คํธ๋ฅผ ์๋ํํ๊ณ ์ผ๊ด๋๊ณ ์ธ๋ จ๋ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ ๋๋ค. ๊ฐ๋ฐ ์ํฌํ๋ก์ฐ์ ํฌ๋ก๋งคํฑ์ ํตํฉํจ์ผ๋ก์จ ์๊ฐ์ ๋ฒ๊ทธ๋ฅผ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ์๋ ํ ์คํธ์ ์์๋๋ ์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์ค์ด๋ฉฐ ๋ ํฐ ์์ ๊ฐ์ ๊ฐ์ง๊ณ ์ฝ๋ ๋ณ๊ฒฝ์ ๋ฐฐํฌํ ์ ์์ต๋๋ค. ์์ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ๋ ๋๊ท๋ชจ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ถํ๋ , ํฌ๋ก๋งคํฑ์ ๋ ๋์ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๊ณ ๋์ ์์ค์ ์๊ฐ์ ํ์ง์ ์ ์งํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
ํ๋ก ํธ์๋ ํฌ๋ก๋งคํฑ์ผ๋ก ์๋ํ๋ ์๊ฐ์ ํ ์คํธ์ ํ์ ๋ฐ์๋ค์ฌ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์ง๊ณผ ์ผ๊ด์ฑ์ ํ ๋จ๊ณ ๋์ฌ๋ณด์ธ์. ์ค๋ ๋ฐ๋ก ์๊ฐ์ ์ผ๋ก ์๋ฒฝํ ์น์ ํฅํ ์ฌ์ ์ ์์ํ์ธ์!