π TDDλ?
β
ν
μ€νΈλ₯Ό λ¨Όμ μμ±ν νμ μ€μ μ½λλ₯Ό μμ±νλ κ°λ° λ°©λ²λ‘
β
μꡬμ¬νμ κΈ°λ°μΌλ‘ ν
μ€νΈ μΌμ΄μ€λ₯Ό λ¨Όμ λ§λ€κ³ , κ·Έ ν
μ€νΈλ₯Ό ν΅κ³Όν μ μλλ‘ μ΅μνμ μ½λλ₯Ό μμ±ν ν, μ΄λ₯Ό μ μ§μ μΌλ‘ κ°μ νλ λ°©μ
3λ¨κ³ μ¬μ΄ν΄
-
RED (μ€ν¨νλ ν μ€νΈ μμ±)
- κΈ°λ₯μ ꡬννκΈ° μ , λ¨Όμ ν μ€νΈλ₯Ό μμ±νλ€.
- μ²μμλ λΉμ°ν μ€ν¨νλ€.
-
GREEN (ν μ€νΈκ° ν΅κ³Όνλλ‘ μ΅μνμ μ½λ μμ±)
- ν μ€νΈκ° ν΅κ³Όν μ μλλ‘ μ΅μνμ μ½λλ₯Ό μμ±νλ€.
- 볡μ‘ν μ΅μ ν μμ΄ κ°μ₯ λ¨μν ν΄κ²°μ± μ μ μ©νλ€.
-
BLUE (리ν©ν λ§)
- μ€λ³΅μ μ κ±°νκ³ , λ λμ μ½λ κ΅¬μ‘°λ‘ κ°μ νλ€.
- ν μ€νΈλ₯Ό λ€μ μ€ννμ¬ λ¦¬ν©ν λ§ κ³Όμ μμ κΈ°λ₯μ΄ κΉ¨μ§μ§ μμλμ§ νμΈνλ€.
TDDμ νμμ±
πΉ μ€κ³ κ°μ
ν
μ€νΈλ₯Ό λ¨Όμ μμ±νλ©΄μ μμ€ν
μ ꡬ쑰μ μΈν°νμ΄μ€λ₯Ό κ³ λ―Όνκ² λμ΄ λ λμ μ€κ³λ₯Ό μ λνλ€.
πΉ μ₯κΈ°μ μΈ κ΄μ μμ κ°λ° λΉμ© κ°μ
μ½λμ μμ μ±μ΄ μ¦κ°νκ³ , 리ν©ν λ§μ μ©μ΄ν μ½λκ° λλ―λ‘ μ₯κΈ°μ μΌλ‘ κ°λ° μλλ₯Ό ν₯μμν¨λ€.
π ν μ€νΈ μ’ λ₯
λ¨μ ν μ€νΈ (Unit Test)
β
κ°μ₯ λ§μ λΉμ¨μ μ°¨μ§νλ ν
μ€νΈ
β
κ°λ³ ν¨μ, ν΄λμ€, λͺ¨λμ λ
립μ μΌλ‘ ν
μ€νΈ
ν΅ν© ν μ€νΈ (Integration Test)
β
μ¬λ¬ λͺ¨λμ΄ κ²°ν©λμμ λ μ μμ μΌλ‘ μλνλμ§ ν
μ€νΈ
β
ν
μ€νΈ 격리 μ λ΅μ΄ νμ
E2E ν μ€νΈ (End-to-End Test)
β μ ν리μΌμ΄μ μ μ 체μ μΈ νλ¦ ν μ€νΈ
π FIRST μμΉ
β ν μ€νΈ μ½λκ° κ°μΆμ΄μΌ ν 5κ°μ§ μμΉ
- Fast (λΉ λ₯΄κ² μ€ν)
- Isolated (λ 립μ μΌλ‘ μ€ν κ°λ₯)
- Repeatable (λ°λ³΅ μ€ν κ°λ₯)
- Self-validating (κ²°κ³Όλ₯Ό μ€μ€λ‘ κ²μ¦ κ°λ₯)
- Timely (μ μμ μμ±, μ½λ μμ± μ μ λ¨Όμ ν μ€νΈ μμ±)
π Testability
β
ν
μ€νΈλ₯Ό μΌλ§λ μ½κ³ , ν¨κ³Όμ μΌλ‘ μνν μ μλμ§ λνλ΄λ μ λ
β
μΌλ§λ μ½κ² μ
λ ₯μ λ³κ²½(Controllability)νκ³ , μΆλ ₯μ κ²μ¦(Observability)ν μ μλκ°?
DIP & DI
κ°μ²΄κ° νμ λͺ¨λμ΄ μλ μΆμνλ μμ λͺ¨λμ μμ‘΄νκ² ν¨(DIP)μΌλ‘μ¨ μ½κ² μ λ ₯(input)μ λ³κ²½ν μ μκ² νλ€. ν μ€νΈ μ λμμ κ°μ²΄μ μ£Όμ (DI)ν΄ μ½κ² μΆλ ₯(output)μ κ²μ¦ν μ μλλ‘ νλ€.
μ΄λ λ³κ²½ μ¬νμ μ μ°νκ² λμν μ μλ μ½λλ₯Ό μ λνλ€.