๐งช TDD(Test Driven Development)
ํ
์คํธ ์ฃผ๋ ๊ฐ๋ฐ ์ฆ, ํ
์คํธ๋ฅผ ํตํ ๊ธฐ๋ฅ์ ๊ตฌํ
TDD์ ๋จ๊ณ
TDD ์์๋ ์ฝ๋ฉ์ ํ ๋ ๊ธฐ๋ฅ์ ๋ฐ๋ก ๊ฐ๋ฐํ์ง ์๊ณ ํ
์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๋ค. ์ด๋ ํ
์คํธ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ ๋จ๊ณ์ ๋ฐ๋ณต์ ๊ฑฐ์น๊ฒ ๋๋ค.
- ์ ์ ๋จ๊ณ : ์ฑ๊ณตํ๊ธฐ ์ํด ํ
์คํธ์ ์คํจํ๋ ๋จ๊ณ
- ๋
น์ ๋จ๊ณ : ํ
์คํธ์ ์ฑ๊ณตํ ๋จ๊ณ
- ๋ฆฌํฉํฐ ๋จ๊ณ : ํ
์คํธ์ ์ฑ๊ณตํ ์ฝ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๋์ ํ์ง์ ๋์ด๋ ๋จ๊ณ (refactoring)
(์ด๋ฏธ์ง ์ถ์ฒ - ํ๋ก ํธ์๋์ค์ฟจ 5๊ธฐ ๊ต์)
TDD ๋ฐฉ๋ฒ๋ก
Unit Test
๋จ์ ํ
์คํธ๋ ์ฝ๋์ ๊ฐ์ฅ ์์ ๋จ์๋ฅผ ํ
์คํธํ๋ค. ๋จ์๋ ํจ์, ๋ฉ์๋ ๋๋ ํด๋์ค๊ฐ ๋ ์ ์๋ค. ๋จ์ ํ
์คํธ๋ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฐ์๊ฐ ์์ฑํ๋ฉฐ ๋ณ๋์ ํ
์คํธ ํ์ผ์ ํตํด ์คํ๋๋ค.
E2E Test
E2E(End-to-End) ํ
์คํธ๋ ์ํํธ์จ์ด ์์คํ
์ ์ ์ฒด ๊ธฐ๋ฅ์ ํ
์คํธํ๋ค. ๋ธ๋ผ์ฐ์ ์ ์ํธ์์ฉ์ ํตํ์ฌ ํ
์คํธ๋ฅผ ์งํํ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํ
์คํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ์ง์ํ๋ API ๋ช
๋ น์ด์ cy.visit()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ URL๋ก ์ด๋ํ๊ณ cy.click()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฒํผ์ ํด๋ฆญํ ์ ์๋ค. ์ฌ๋์ด ์ง์ ํ ์๋ ์๋ค(QAํ).
TDD์ ์ฅ์
- ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ธ๋ฐ ์ปดํ์ผ๋ฌ์ ์ญํ ์ ํ
์คํธ๋ฅผ ํตํด ๋์ ์ํํ์ฌ ๊ธฐ๋ฅ์ ๊ตฌ๋์ ๋ณด์ฅํ๋ค. ์ด๋ ๊ณง ์ฝ๋๋ฅผ ์์ ์ ์ด๊ณ ๊ฒฌ๊ณ ํ๊ฒ ๋ง๋ค์ด์ค๋ค.
๐ก ์ปดํ์ผ๋ฌ ์ธ์ด: ์ปดํ์ผ๋ฌ๊ฐ ์กด์ฌํ๋ ์ธ์ด
์ฌ๋์ด ์์ฑํ ์ฝ๋๋ฅผ ์ปดํ์ผ๋ฌ๋ผ๋ ํ๋ก๊ทธ๋จ์ด ๊ธฐ๊ณ์ด๋ก ๋ฐ๊ฟ์ค๋ค.
๋ณํํ๋ ๊ณผ์ ์ค์ ์๋ฌ๊ฐ ์์ผ๋ฉด ๋ฏธ๋ฆฌ ์ก์์ค๋ค. : ์ปดํ์ผ ์๋ฌ
์ปดํ์ผ ๊ณผ์ ์ผ๋ก ์์ฑ๋ ํ์ผ์ ์คํ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅด๋ค.
๐ก ์ธํฐํ๋ฆฌํฐ ์ธ์ด
์ค๊ฐ์ ๋ฒ์ญํ๋ ๊ณผ์ ์ด ์๊ณ ํต์ญ๊ฐ๊ฐ ํต์ญํด์ฃผ๋ ๋ฐฉ์
๋ธ๋ผ์ฐ์ ์์ง์ด ๋ฐ๋ก๋ฐ๋ก ํด์ํ๊ณ ๋ฐ๋ก๋ฐ๋ก ์คํํ๋ค.
๊ทธ๋์ ์คํ์๋๊ฐ ๋๋ฆฌ๋ค.
์ปดํ์ผ๋ฌ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ค์ ๋ก ๋์ํ๋์ง, ๋ฌธ๋ฒ์ ์ค๋ฅ๊ฐ ์๋์ง ์ก์๋ด๋ ๊ณผ์ ์ด ์๋ค.
- ๊ตฌํํด์ผ ํ๋ ๊ธฐ๋ฅ์ ๋ํ ๋์ ๋ถ์์ ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ์๋น์ค์ ๋ํ ์ดํด๋๊ฐ ์์นํ๊ณ ํ์ง์ ์ฐ์ ํ๋ ์ฌ๊ณ ๋ฅผ ํ๊ฒ๋๋ค.
TDD๋ฅผ ์ฌ์ฉํ ๋ ์ฃผ์ํด์ผํ ์
- ํ
์คํธ ์ฝ๋๋ฅผ ๋ฐ๋ก ์์ฑํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ๋ ๋ค์ด๊ฐ๊ณ ์ด๋ ๊ณง ์
๋ฌด์ ๋ํ ๋ถ๋ด์ผ๋ก ๋ค๊ฐ์จ๋ค. ๋๋ฌธ์ ํ๋ก์ ํธ๊ฐ ๊ธ๋ฐํ๋ค๋ฉด TDD๋ฅผ ์ฌ์ฉํ์ง ์๋ ํธ์ด ์ข๋ค. ํ๋ก์ ํธ์ ์ฑ๊ฒฉ์ ๋ฐ๋ผ ํ๋จํด์ผ ํ๋ค.
- TDD๊ฐ ๋ชจ๋ ์์ธ ์ํฉ์ ํด๊ฒฐํด์ฃผ์ง๋ ์๋๋ค. ๊ฒฐ๊ตญ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ์ฌ๋์ด ๊ณ ๋ คํ์ง ์์ ์ํฉ์ ํ
์คํธ ์ฝ๋๋ ๋์น ์ ์๊ธฐ ๋๋ฌธ์ ํ
์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ค๊ณ ํด์ ๋ฐฉ์ฌํ ์๋ ์๋ค. ํ
์คํธ ์ฝ๋๋ ๊ฒฌ๊ณ ํ๊ณ ์์ ์ ์ธ ์ฝ๋๋ฅผ ์งํฅํ๋ ๊ฒ์ด์ง ๊ฒฐ์ฝ ์๋ฒฝํ์ง ์๋ค.
TDD ๋ผ์ด๋ธ๋ฌ๋ฆฌ
https://github.com/yoonmallang22/TDD
๐ก ํ
์คํธ ๊ฐ๋ฅํ ์ฝ๋
- ํ
์คํธํ ์ฝ๋๋ฅผ UI์์ ์์ ํ ๋ถ๋ฆฌํด์ผ ํ๋ค.
- ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ JSํ์ผ๋ก ๋ฐ๋ก ๋ถ๋ฆฌํด์ผ ํ๋ค.
- ๋ชจ๋ ๊ธฐ๋ฅ์ ํจ์๋ก ๊ตฌํํ๋ค. ํจ์ ๋ฐ์ ์๋ ๋ด์ฉ์ ํ
์คํธ๊ฐ ๋ถ๊ฐ๋ฅํ๋ค.
Jasmine
Jest๐
HTML ์์๋ฅผ ํ์ํ๋๋ฐ ์ ๊ทผ์ฑ ๋ง์ปค ์ฆ, WAI-ARIA๋ฅผ ์ด์ฉํ๋ค. TDD๋ฅผ ์์ฑํจ์ผ๋ก์จ ์์ฐ์ค๋ฝ๊ฒ ์ ๊ทผ์ฑ์ ํฅ์์ํค๋ ์ฅ์ ์ด ์๋ค.
๐ก ๋ชจ๋ ํ
์คํธ ํ์ผ์ ์คํํ๋ค.