4. Testing Library
1. Jest
Jest ๊ณต์๋ฌธ์ Jest๋ ๋จ์์ฑ์ ์ด์ ์ ๋ JavaScript ํ ์คํธ ํ๋ ์์ํฌ
Jest๋ Mocha์ Chai์ฒ๋ผ RSpec์ describe-it์ ์ง์ํ๊ณ , expect๋ก ๋จ์ธ(assertion) ๊ฐ๋ฅ Mocking๋ ๋ค์ํ ๋ ๋ฒจ์์ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์์ โ ๊ฑฐ์ ๋ชจ๋ ๊ฒ์ ๊ฐ์ถ ํ ์คํ ๋๊ตฌ ๐
(์ฐธ๊ณ ) ๋ค์ํ ํ
์คํธ ๋๊ตฌ
Mocha
Mocha Node.js ์ ๋ธ๋ผ์ฐ์ ์์ ์คํ๋๋ ๊ธฐ๋ฅ์ด ํ๋ถํ JavaScript ํ ์คํธ ํ๋ ์์ํฌ
Chai
Mocha๋ฅผ ์ฌ์ฉํ ๋ ์ฐ๋ ์ด์ค์
๋ผ์ด๋ธ๋ฌ๋ฆฌ
expect(), assert(), should-style assertions
RSpec
RSpec Ruby์ฉ ํ ์คํธ ๋๊ตฌ TDD๋ฅผ ์์ฐ์ ์ด๊ณ ์ฌ๋ฏธ์๊ฒ ๋ง๋ค๊ธฐ๊ฐ ์๊ฐ ๋ฌธ๊ตฌ ์์กฐ
RSpec ๋ฒ ์คํธ ํ๋ํฐ์ค ๋ชจ์
์ด๋๋ก ์ฌ์ฉํ ์๋ ์์ง๋ง ์ฐธ๊ณ ์ฉ, ํ๋ฆ์ ์ ์ ์์
Jest๋ RSpec์ let ๋ฑ์ ์ง์ํ์ง ์๊ธฐ ๋๋ฌธ์, ํต์ฌ ์์ด๋์ด๋ง ์ฐธ๊ณ
2. ํ
์คํธ
๐ ๋ฒ๊ทธ๋ฅผ ์ฐพ๋ ํ์๋ก ์๊ฐํ๊ธฐ ์ฌ์
๋ฒ๊ทธ๋ ๊ธฐ๋ํ์ง ์์(unexpected) ์ผ์ด ๋ฐ์ํ๋ ๊ฒ โ ์คํ, ์ฌ์(specification)์ ๋ช
ํํ
ํ๋ ๊ฒ์ด ๋งค์ฐ ์ค์
๐ก ์คํ์ ๋ง๊ฒ ์๋ํ๋์ง๋ฅผ ํ์ธํ๋ ๊ฒ์ด ํ
์คํธ
๊ธฐ๋ณธ์ ์ธ ํ
์คํธ ์ฝ๋
์ต์ด์ ๋ฒ๊ทธ
์ต์ด์ ๋ฒ๊ทธ ๊ทธ๋ ์ด์ค ํธํผ (Grace Hopper)
์ต์ด ์ฌ์ฑ ํ๋ก๊ทธ๋๋จธ ์ค ํ ๋ช ์ต์ด์ ๋ฒ๊ทธ ๋ฐ๊ฒฌ - ์ง๊ณต๊ด์ ๋๋ฐฉ ์ปดํ์ผ๋ฌ ๊ฐ๋ ์ ๋ง๋ฆ ์ด๊ธฐ ๊ณ ๊ธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ธ COBOL์ ๊ฐ๋ฐ
TDD
ํ ์คํธ ์ฃผ๋ ๊ฐ๋ฐ, Test-Driven Development ํ ์คํธ๋ฅผ ๋จผ์ ์์ฑํ๊ณ ๊ทธ ํ ์ฝ๋๋ฅผ ์์ฑ
TDD์ ์์
๐ด Red(Fail) โ ๐ข Green(Psss) โ ๐ Refactor
์คํจํ๋ ํ ์คํธ ์์ฑ
๋นจ๋ฆฌ ํต๊ณผํ๋๋ก ์์ฑ
๋ฆฌํฉํ ๋ง์ผ๋ก ์ฝ๋ ๊ฐ์
BDD
ํ์ ์ฃผ๋ ๊ฐ๋ฐ, Behavior-Driven Development TDD์ ํ ๊ฐ๋
๊ธฐ๋ฅ(feature) ๋ชฉ๋ก์ ๋ง๋ค๊ณ ๊ตฌํํ๋ฉด ๋จ(ํ์๋ฅผ ๋จผ์ ์์ฑ) ์ฆ, ์ํํธ์จ์ด์ ๋์(Behavior)์ ๋ํ ๊ฒ
Give/When/Then ํจํด
๋ชจ๋ BDD ์๋๋ฆฌ์ค์ ์๋ 3๊ฐ์ง ํต์ฌ ์์
GIVEN (context, ๋ฌธ๋งฅ ์ค๋ช )
WHEN (action, ๋์ ์ค๋ช )
THEN (outcome, ๊ฒฐ๊ณผ ์ค๋ช )
BDD ์คํ์ผ์ ํ
์คํธ ์ฝ๋
์ผ์ด์ค๋ฅผ ๋๋ ์ฝ๋๋ฅผ ์ง๊ธฐ ๋๋ฌธ์ ํํ๋ ฅ์ด ์ข์์ง๊ณ , ๋ค์ํ ์ํฉ์ ๋ํด ๊ณ ๋ฏผํ ์ ์์
(์ฐธ๊ณ ) Writing BDD Test Scenarios (์ฐธ๊ณ ) Describe-Context-It
2. Describe-Context-It ํจํด
์ํฉ๋ง๋ค ๋ค๋ฅธ ๋งฅ๋ฝ์ ๋ฌ์ฌํ๋ ๊ฒ ์ฝ๋์ ํ๋์ ์ค๋ช ํ๋ ํจํด์ด๊ธฐ ๋๋ฌธ์ ์ดํดํ๊ธฐ ์ฌ์
์ฅ์
์ฐ๊ธฐ ํธํ๊ณ ์ฝ๋์ ์๋๊ฐ ๋ช ํํด์ง
๋ค์ํ ์ํฉ์ ๊ณ ๋ คํ ์ ์์ โ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง์ ์ฆ๋
์ ์ญ๋ณ์๋ฅผ ๋จ๋ฐํ๋ ๋ฌธ์ ํด๊ฒฐ
์์ฑ ๋ฐฉ๋ฒ
Describe์ ์ค๋ช ํ ํ ์คํธ ๋์์ ๋ช ์
Context์ ํ ์คํธ ๋์์ด ๋์ธ ์ํฉ์ ๋ช ์ (with ๋๋ when์ผ๋ก ์์)
It์ ํ ์คํธ ๋์์ ํ๋์ ๊ฐ๋จํ๊ฒ ์ค๋ช
3. React Testing Library
React Testing Library ๊ณต์๋ฌธ์ UI ํ ์คํธ์ ํนํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
jest-dom jest-dom on GitHub ์ถ๊ฐ์ ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ๋งค์ฒ(matcher)
React Testing Library๋ ๊ฑฐ์ E2E Test์ฒ๋ผ ์ฌ์ฉ ๊ฐ๋ฅ โ ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ์๊ฐ ์ค์ ๋ก ์ฌ์ฉํ๋ฏ์ด ํ ์คํธ
โ ๏ธ FE ํ ์คํธ โ only React ์ปดํฌ๋ํธ ํ ์คํธ ํ๋ก ํธ์๋์์์ ํ ์คํธ๋ ์ข ๋ฅ๊ฐ ๋ค์ํ๋ฐ, ๊ทธ ์ค์์ React ํ ์คํธ๋ง ํด์๋ ์ ๋จ UI๋ ๋ด๋ถ์ ์ํ๋ฅผ ํํํด ์ฃผ๋ ๋ฐฉ๋ฒ ์ค์ ํ๋์ผ ๋ฟ(React๊ฐ ๊ทธ๊ฒ์ ์ง์ํ๊ณ ์์ง๋ง) ์ผ์ผ์ด ํ๋ฉด๋ง ๊ฒ์ฌํ๋ ๊ฒ ๋ณด๋ค ๋ด๋ถ ๋ณธ์ง, ์ฆ ์ํ๋ฅผ ๊ฒ์ฌํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ์ ์์ ์ ์ง๋ณด์๋ฅผ ๋๊ธฐ ์ํด ํ ์คํธ ์ฝ๋๋ฅผ ์์ฑํ๋๋ฐ, ํ ์คํธ ์ฝ๋๋ฅผ ์๋ชป ์์ฑํ๋ฉด(๋๋ฌด ๋ง์ ํ ์คํธ ์ฝ๋ ๋ฑ) ์คํ๋ ค ์ ์ง๋ณด์๋ฅผ ์ ํดํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฃผ์ํด์ผ ํจ
E2E Test
End To End ํ ์คํธ์ ์ฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋ฆ์ ์ฒ์๋ถํฐ ๋๊น์ง ํ ์คํธํ๋ ๊ฒ (์ฐธ๊ณ ) ์นด์นด์ค์ํฐํ ์ธ๋จผํธ E2E ํ ์คํธ ๋์ ๊ฒฝํ๊ธฐ
ํ
์คํธ ์ฝ๋ ์์
Last updated