TDD
TDDλ?
Test-Driven-Development(ν μ€νΈ μ£Όλ κ°λ°)λ‘ κ°λ°(μ½λ μμ±)μ μ ν μ€νΈ μ½λλ₯Ό λ¨Όμ μμ±νμ¬ ν μ€νΈκ° κ°λ°μ μ΄λμ΄ λκ°λλ‘ νλ λ°©μ
"ν μ€νΈ μ½λλ₯Ό λ¨Όμ μμ±νλ, μ¦ κ΅¬νλ³΄λ€ μΈν°νμ΄μ€μ μ€νμ λ¨Όμ μ μν¨μΌλ‘μ¨ κ°λ°μ μ§ννλ λ°©μμ΄λ€."
TDD μμ
Red(μ€ν¨) β Green(μ±κ³΅) β Refactoring(리ν©ν λ§) κ³Όμ μ λ°λ³΅νλ μ¬μ΄ν΄μ κ°λλ€.
κΈ°λ₯ μꡬμ¬νμ λ°νμΌλ‘ ν μ€νΈ μ½λ μμ±
ν μ€νΈ μ½λ μ€ν (Fail) β μμ§ κ΅¬νμ²΄κ° μμΌλ―λ‘ λΉμ°ν μ€ν¨
μμ±λ ν μ€νΈκ° ν΅κ³Όν μ μλλ‘ κ°λ¨ν μν μ½λ μμ±
ν μ€νΈ μ½λ μ€ν (Success)
3, 4λ² λ¨κ³λ₯Ό λ°λ³΅νλ©° μ½λλ₯Ό κ°λ°
μμ±ν ν μ€νΈλ₯Ό κΈ°λ°μΌλ‘ μ½λλ₯Ό μμ νκ² λ¦¬ν©ν λ§
μμ λ¨κ³λ₯Ό μ°Ύκ³ , μ½λμμ νΌλλ°±μ μ»λκ² μ€μνλ€. 3λ²μ΄ μ΄λ ΅λ€λ©΄ 1λ²μΌλ‘ λμκ°μ λ μκ³ μ¬μ΄ λ¬Έμ λ₯Ό μ μνκ³ , 6λ²μ μν΄ μλλ₯Ό λλ¬λ΄κ³ μ€λ³΅μ μ°Ύμ μ κ±°νλ μ°μ΅μ ν΄μΌ νλ€. μ΄ λμ μ΅νμ§ μμΌλ©΄ TDDλ₯Ό νλκ² κ±°μ λΆκ°λ₯,
TDD μμΉ
μ€ν¨νλ ν μ€νΈλ₯Ό λ¨Όμ μμ±νλΌ β μ¦, 미리 ꡬννμ§λ§κ³ ν μ€νΈλ₯Ό λ¨Όμ μμ±(μꡬμ¬ν λΆμ)ν νμ κΈ°λ₯μ ꡬνν΄μΌ νλ€.
ν μ€νΈλ₯Ό ν΅κ³ΌνκΈ° μν΄ νμν λ§νΌμ μ½λλ§ μμ±νλΌ β λ―Έλμ νμν κ² κ°μ ꡬνμ μ§λ μ§μνμ¬ λΆνμν μ½λλ₯Ό μμ±νλ μ€λ²μμ§λμ΄λ§μ λ°©μ§νλ€.(YAGNI μμΉ)
κ°μ₯ κ°λ¨ν λ¬Έμ λΆν° ꡬννλΌ β κ°λ¨ν κΈ°λ₯λΆν° μ°¨κ·Όμ°¨κ·Ό ꡬννλ©° μ 체μ μΈ κΈ°λ₯μ μμ±ν΄ λκ°λ κ²μ΄ μ€μ
μ½λ 컀λ²λ¦¬μ§ 100%λ₯Ό λͺ©νλ‘ νμ§ λ§λΌ β ν μ€νΈ μ½λλ₯Ό μμ±νκ³ μ½λλ₯Ό κ²μ¦νλ κ²μ΄ λͺ©μ μ΄ λμ΄μΌ νλ€
TDD μ₯μ
ν μ€νΈ μ½λλ₯Ό μμ±νκΈ° μν΄μλ μꡬμ¬νμ λ¨Όμ λΆμν΄μΌ νλ―λ‘ λͺ¨λ μꡬμ¬ν(λͺ©ν)μ λν΄ μ΄ν΄νκ³ μ κ²νλ μκ°μ κ°κ² λλ€.
μμΈ μΌμ΄μ€λ₯Ό 미리 κ³ λ―Όνκ³ μ 리νλ κ³Όμ μ ν΅ν΄ λ²κ·Έκ° μκΈ°λ κ²μ μ¬μ μ λ°©μ§ ν μ μλ€.
ν μ€νΈκ° μ¬μ΄ μ½λλ₯Ό μμ±ν¨μΌλ‘μ¨ μ¬μ©μ μ μ₯μμ μ½λλ₯Ό μμ±ν μ μλ€.
μΈν°νμ΄μ€ μμ£Όμ μ½λ μμ±
μμ€ν μ λ°μ μΈ μ€κ³ ν₯μ
κ°λ° μ§μ€λ ₯ ν₯μ
μ€κ³μ λν νΌλλ°±μ΄ λΉ λ₯΄λ€.
κ°λ°μ μμ κ°μ΄ μκΈ΄λ€
TDD λ¨μ
TDDλ μλ‘μ΄ κ°λ λ° νλ‘μΈμ€λ₯Ό λ°°μμΌνλ―λ‘ νμ΅ κ³‘μ μ΄ λμ μ μλ€.
ν μ€νΈλ₯Ό μμ± λ° μ€ννλ μκ°, μ μ§λ³΄μ μκ° λ±μ λΆκ°μ μΈ μκ°μ΄ νμνλ―λ‘ μ 체 κ°λ° μκ°μ΄ μ¦κ°ν μ μλ€.
μλ―Έμλ ν
μ€νΈ μμ±νκΈ°
ν
μ€νΈ ν΄μΌν κ²
κΈ°λ₯ ν μ€νΈμ μ΄μ μ λ§μΆκ³ , μ¬μ©μ κ΄μ μ μ μ νλ‘μ°λ₯Ό ν΅ν΄ μ¬λ°λ₯΄κ² λμνλμ§ ν μ€νΈ
μ¬μ©μ μꡬμ¬νμ΄ λͺ¨λ ν μ€νΈ μΌμ΄μ€ν λμλμ§
μ μμ μΈ μ λ ₯κ°μ΄ λ€μ΄μ¨ κ²½μ° μ΄λ»κ² μλ΅νλμ§
μ μμ μ΄μ§ μμ μ λ ₯μ΄ λ€μ΄μ¨ κ²½μ°(μ£μ§μΌμ΄μ€) μ΄λ»κ² μλ΅νλμ§
ν
μ€νΈνμ§ μμλ λλ κ²
λ¨μν ν μ€νΈ 컀λ²λ¦¬μ§λ₯Ό λνκΈ° μν΄ λͺ¨λ λΌμΈμ ν μ€νΈλ₯Ό νλ 건 λλΉλ€.
κΈ°λ₯μ΄ λ¨μν κ²
UIμ κ΄λ ¨λ ν μ€νΈ
Jest
μλ°μ€ν¬λ¦½νΈ νκ²½ ν μ€νΈ λꡬ
Jest νΉμ§
Test Runner & Assertion ν΅ν© λΌμ΄λΈλ¬λ¦¬
Zero config: 볡μ‘ν μ€μ μ΄ μλ€.
Snapshots μ 곡: μ΄λ ν μ€λΈμ νΈ λλ νμ¬μ μνλ₯Ό μΊ‘μ³ν μ μλ κΈ°λ₯
Isolated: λ 립μ μ΄λΌ ν μ€νΈ μννλ μλλ μ±λ₯μ΄ λ°μ΄λ¨
Great API: λ€μν ν μ€νΈ api μ 곡
with Typescript
typescript(swc)μ κ°μ΄ μ¬μ©νλ €λ©΄ μλ μ½λμ κ°μ΄ μΆκ° μ€μ μ΄ νμνλ€
BDD μ€νμΌ ν
μ€νΈ μ½λ μν
BDD μ€νμΌ β λμ-νμ μ€μ¬μΌλ‘ ν μ€νΈλ₯Ό μ‘°μ§ννλ λ°©μ.
setupTests.ts
ν μ€νΈ νκ²½μμ ν΄λΉ νμΌμ μ½λλ₯Ό λͺ¨λ ν μ€νΈ νμΌμ ν¬ν¨μν€λ μν μ νλ€.
μ½λμ μ€λ³΅μ νΌνκ³ κΉλνκ² μ μ§νκΈ° μν΄ μ¬μ©νλ€.
Coverage
νΉμ ν μ€νΈμ 컀λ²λ¦¬μ§ μ§ν νμΈνκΈ°
Last updated