1. TDD
๊ตฌํ๋ณด๋ค ์ธํฐํ์ด์ค์ ์คํ์ ๋จผ์ ์ ์, ํ ์คํธ ์ฝ๋๋ฅผ ๋จผ์ ์์ฑํ๋ ๋ฐฉ์์ด๋ค.
TDD Cycle
Red โ ์คํจํ๋ ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑ. ์ธํฐํ์ด์ค์ ์คํ์ ์ง์คํ๋ค.
Green โ ์ฌ๋นจ๋ฆฌ ํ ์คํธ๋ฅผ ํต๊ณผ์ํจ๋ค. ์ฌ๋ฐ๋ฅธ ๋ฐฉ๋ฒ์ด ์๋์ด๋ ๊ด์ฐฎ๋ค.
Refactor โ ๋ฆฌํฉํฐ๋ง์ ํตํด ์ฝ๋๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ง๋ ๋ค. TDD์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ด์ง๋ง, ๊ฐ๊ณผ๋ ๋๊ฐ ๋ง๋ค.
ํ ์คํธ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋์์ ๋ฐ๋์ง ์๊ณ ๋ฆฌํฉํ ๋ง์ ํตํด ๊ฐ์ ์์ผ ๋๊ฐ๋ค.
ํฐ ๋จ์๋ก์ ๋ฐ๋ณต์ ํ๋๋, ์์ ๋จ๊ณ๋ฅผ ๋ง๋ ๋ค.
Jest
ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ ์ํ ๋ ํฌ๊ฒ ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค:
test ํจ์๋ก ๊ฐ๋ณ ํ ์คํธ๋ฅผ ๋์ดํ๋ ๋ฐฉ์.
BDD ์คํ์ผ๋ก ์ฃผ์ฒด-ํ์ ์ค์ฌ์ผ๋ก ํ ์คํธ๋ฅผ ์กฐ์งํํ๋ ๋ฐฉ์.
Jest์์ TypeScript ์ฌ์ฉํ๋๋ก jest.config.js ์์ฑํด์ค๋ค
App.test.ts๋ App.spec.ts ๋ฅผ ์ด์ฉํด ์ฌ์ฉํ๋ค. ์ฒ์์๋ test ํจ์๋ก ๊ฐ๋ณ ํ ์คํธ๋ฅผ ์จ๋ณผ ์ ์๋ค.
์ด๋ ๊ฒ ์์ฑํ๊ณ npx jest
๋ช
๋ น์ด๋ก ํ
์คํธ ์คํ.
๊ณ์ ์คํํด์ผ๋๋ ๋ถํธํ๋ค.
npx jest --watchAll
ํด์ฃผ๋ฉด hot reload ๋๋ค.
BDD style
BDD ์คํ์ผ๋ก ํ
์คํธ ๋์
๊ณผ ํ์
๋ฅผ ๋ช
ํํ ๋๋ฌ๋ผ ์ ์๋ค.
BDD๋ ์ธ๋ฐ์์ด ๊ธธ์ด์ง๋๊ฑฐ ์๋๊ฐ?
ํ describe์ ๋ค๋ฅธ describe๋ฅผ ๋ฃ์ด์ค ์ ์๋ค.
๊ฐ์ ๋งฅ๋ฝ์ ํ ์คํธ๋ฅผ ์ฌ๋ฟ ์ถ๊ฐํ๋ค.
ํ ์คํธ๋ฅผ ๋ฏฟ๊ณ add ํจ์๋ฅผ refactoring ํ ์ ์๋ค.
test๋ ๋ฌผ๋ก ๊ฐ๋ฅํ๋ค.
์์ BDD ๋ฐฉ์์ description์ ์ถ๊ฐํด์ค ์ ์์ด ์ข ๋ ๋ช ํํ ๊ฒ.
๋จ์ ํ
์คํธ๋
ํ
์คํธ๋ ๋ฒ์๋ ์ฑ๊ฒฉ์ ๋ฐ๋ผ UI Test
, Integration Test
, Unit Test
๋ฑ์ผ๋ก ๋๋๋ค.
๊ทธ ์ค unit test
๋ ์์ ๋จ์(ํจ์ ๋จ์) ์์ค ์ฝ๋์ ํน์ ๋ชจ๋์ด ์๋๋ ๋๋ก ์ ํํ ์๋ํ๋์ง ๊ฒ์ฆํ๋ ์ ์ฐจ์ด๋ค.
์ฆ, ๋ชจ๋ ํจ์
์ ๋ฉ์๋
์ ๋ํ ํ
์คํธ ์ผ์ด์ค๋ฅผ ์์ฑํ๋ ์ ์ฐจ๋ฅผ ๋งํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ด์ ์ด ์๋ค.
์์ฑํ ์ฝ๋๊ฐ ์๋ํ ๋๋ก ์๋ํ๋์ง ๊ฒ์ฆํ๊ธฐ ์ํ ์ ์ฐจ๋ก ๋ฌธ์ ๋ฅผ ๋ฐฉ์งํ๋ ๊ธฐ๋ฅ
์ฝ๋ ๋ณ๊ฒฝ์ ์ํ ์ฌ์ด๋ ์ดํํธ๋ฅผ ์ต๋ํ ์ค์ผ ์ ์๋ ์๋ฐฉ์ฑ ์ด ๋๊ธฐ๋ ํ๋ค.
์๋น์ค ์๊ตฌ์ฌํญ ๋ณ๊ฒฝ์ด๋ ๋ฆฌํฉํ ๋ง์ผ๋ก ์ธํด ์ฝ๋ ์์ ์ด ํ์ํ ์ํฉ์์ ๋ ์ ์ฐํ๊ณ ์์ ์ ์ธ ๋์์ ํ ์ ์๊ฒ ๋๋ค.
ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ์์ฐ์ค๋ฝ๊ฒ ์ฝ๋์ ๋ชจ๋ํ๋ฅผ ๊ณ ๋ฏผํ๊ฒ ๋๋ ๋ฑ์ ๋ถ์์ ์ธ ์ด์ ๋ค๋ ์๋ค.
Last updated