μ΄λ² λ‘λ λ―Έμ μ ꡬννλ©΄μ νμ΄μ TDDλ₯Ό μ°μ΅νλ©΄μ κ°μμμ λ€μλ λͺ¨λ μ΄μ λ€μ λλ μ μμλ€.
μ¬μ€ μλ²½νκ² TDDλ₯Ό μ§ννλ€κ³ μμ ν μ μμΌλ,
κ°μ λ΄μ©μμ λ€μλ μ΄μ λ€μ νμ΄μ ν¨κ» TDDλ₯Ό μ§ννλ©΄μ κ²½νν μ μμλ€.
μ¬κΈ°μλ TDD κ°μ λ΄μ©μ λ€μΌλ©΄μ μ 리ν κ²μ μ‘°κΈ κ°κ³΅ν΄μ μ λ§ κ°λ¨ν κΈ°λ‘νλ€ βοΈ
TDD, 리ν©ν λ§μ΄λ?
TDD(Test Driven Development) - ν μ€νΈ μ£Όλ κ°λ°
νλ‘λμ μ½λ
νλ‘κ·Έλ¨ κ΅¬νμ λ΄λΉνλ μ½λ
ν μ€νΈ μ½λ
νλ‘λμ μ½λκ° μ μμ μΌλ‘ λμνλμ§ νμΈνλ μ½λ
TDDλ?
μΌλ°μ μΌλ‘λ νλ‘λμ λ¨Όμ ꡬν ν ν μ€νΈ μλλ° μ΄κ±΄ ν μ€νΈλ₯Ό λ¨Όμ ν ν νλ‘λμ μ κ°λ°νλ€.
TestFirstDevelopment + 리ν©ν λ§
ν
μ€νΈ μ½λλ₯Ό λ§λ€κ³ νλ‘λμ
ν 리ν©ν λ§
리ν©ν λ§μ κΈ°λ₯μ μΆκ°νμ§ μμ§λ§ μ€κ³λ₯Ό λ³κ²½νλ©΄μ
μ μ§λ³΄μ μ©μ΄, κ°λ
μ±μ μ±κΈ΄λ€.
μ€κ³λ₯Ό νλ²μ λͺ°μμ νλκ² μλλΌ μμ λ¨μλ‘ μμ£Όνμ.
리ν©ν λ§μ μ€κ³μΌ μλ μκ³ λ€μνλ° κ·Έ κ³Όμ μ μμ£Όνμλ κ².
TDDλ λΆμ κΈ°μ μ΄λ©°, μ€κ³ κΈ°μ μ΄κΈ°λ νλ€. - μΌνΈλ²‘, Test Driven Development by Example μ€
todo-listλ₯Ό μ μμ±νλκ² μꡬμ¬ν λΆμμ΄λ€.
λλ²κΉ
μκ°μ΄ μ€μ΄λ λ€.
TDD μ¬μ΄ν΄
- μ€ν¨ ν μ€νΈ ꡬν
- ν μ€νΈ μ±κ³΅νλλ‘ νλ‘λμ ꡬν
- νλ‘λμ μ½λμ ν μ€νΈ μ½λ 리ν©ν λ§
TDD μμΉ
- μμΉ 1 - μ€ν¨νλ λ¨μ ν μ€νΈλ₯Ό μμ±ν λκΉμ§ νλ‘λμ μ½λλ₯Ό μμ±νμ§ μλλ€.
- μμΉ 2 - μ»΄νμΌμ μ€ν¨νμ§ μμΌλ©΄μ μ€νμ΄ μ€ν¨νλ μ λλ‘λ§ λ¨μ ν μ€νΈλ₯Ό μμ±νλ€.
- μμΉ 3 - νμ¬ μ€ν¨νλ ν μ€νΈλ₯Ό ν΅κ³Όν μ λλ‘λ§ μ€μ μ½λλ₯Ό μμ±νλ€.
무쑰건 μ€ν¨ ν μ€νΈλ₯Ό λ³Έ ν νλ‘μ μ μ½λλ₯Ό μμ±νλ€.
TDD μ΄μ
λ§μμ νΈμ
μꡬμ¬ν μμ μ μμ€ μ½λλ₯Ό μμ νκ³ , λΆμν΄νμ§ μλλ€.
νλ²μ νκ°μ§μ μ§μ€
TDD μμ΄ κ°λ°νλ€ λ³΄λ©΄ μλΉν λ¨Έλ¦¬λ‘ μλΉν λ§μ λ‘μ§μ μ§μΌνλλ°
μ²μ¬κ°λ°μκ° μλ μ΄μ μ΄λ ΅λ€.
νλ²μ νκ°μ§λ§ μ§μ€ν μ μλ€.
μ€ν¨ ν μ€νΈ λ§λ€κ³ ν¨μ€λ₯Ό νλ©΄ κ·Έ λ€μ μ λ ₯κ³Ό μΆλ ₯μ μ§μ€, λ‘μ§ κ΅¬ν μ§μ€, ν μ€νΈ ν΅κ³Ό μν μ΄λ ν νμ νμ©.
λλΆλΆμ κ°λ°μλ€μ λμμ κ°μ΄ νλ €κ³ νλ€.
볡μ‘ν μꡬμ¬νμμ μ€κ³λ₯Ό κ³ λ―Όνλ©΄ κ΅μ₯ν μ΄λ ΅λ€.
μ²μλΆν° μλ²½ν μ€κ³λ₯Ό νλ κ²μ΄ μλλΌ, μ μ§μ μΌλ‘ μ€κ³λ₯Ό κ°μ ν μ μλ€.
λΉ λ₯Έ νΌλλ°±
μ΄λ°μλ νΌλλ°±μ μκ°μ΄ μ’ κ±Έλ¦¬μ§λ§ μ μ°¨ λ²κ·Έλ₯Ό μ°Ύλ μμ μ΄ λΉ¨λΌμ§λ€.
μλΉμ€ μμ μ±μ΄ λμμ§
λ²κ·Έ λ°μ κ°λ₯μ±μ΄ μ€κ³ , μ½λ νμ§ ν₯μ
κ°λ°μ μλ κ°ν
νμ΅ ν¨μ¨ λμμ§, ν΅μ¬ λΉμ§λμ€ λ‘μ§ κ΅¬νμ μ§μ€
ꡬνμ΄ μμ±λλ©΄ μ¬λ¦¬μ μμ κ°μ΄ μ겨 μ°½μλ ₯μ΄ μκΉ
ꡬνλΆν°!!!!!
μ€κ³λΆν° νλ©΄ μλ°κ° λλ¬Έμ μ λͺ»ν¨ μ€κ³λ₯Ό κ³ λ―Όνμ§ μμλ λλ€.
μλ²½ν μ€κ³μ λ§μ μκ°μ ν¬μνλ©΄ λμ€μ λ³κ²½λ λ μκΉμμ μ§μ°©νλ€.
μννΈμ¨μ΄λ λ§λλ§λ~
β κΈ°λ₯ μΆκ° μμ λ³κ²½ λΉΌκ³ λ 리ν©ν λ§μ΄λ€
리ν©ν λ§μ μλ‘μ΄ ν
μ€νΈ μΌμ΄μ€κ° μΆκ°λμ§ μμμΌ νλ€.
λ΄κ° ν μ μλ λΆλΆκΉμ§λ§ μ€κ³ (μ΄λ° μ€κ³ μ‘°κΈ)νκ³ TDDλ₯Ό ν΄μΌνλ€.
β κΈ°λ₯ λ¨μ νλ -> test -> ꡬν / μ 체 test -> ꡬν ?
μ νΈνλ λ°©μμ μ°ΎμλΌ ~
β μ€κ³λ μ€μ ν΄λμ€ κ΅¬νμΌλ‘ λ³Ό μ μλμ§? μλλ©΄ λ°λ‘ λ¬Έμλ‘ μ 리ν κ²μ μ€κ³λ‘ λ³Ό μ μλμ§?
UMLμ΄λΌλ ν΄λμ€ μ€κ³κ° μλ€.
μ¬λ¬κ°μ§ λ€μ΄μ΄κ·Έλ¨μ΄ μλλ° μꡬμ¬ν 볡μ‘λμ λ°λΌ λ€μ΄μ΄κ·Έλ¨ μλκ² μ’λ€.
λ³λμ λ¬Έμ (λ€μ΄μ΄κ·Έλ¨)μ΄ μλκ² μ’λ€.
TDD μ΄κ² λ§λ? κΈ΄κ°λ―Όκ°νκ² μ§λ§ βμλ μ²μμ κ²½ννλ κ±°λ€ μ΄λ°κ±°~ λΉμ°ν κ±°μβ
βκ³μ λμ ν κ²μ΄ μμ΄μΌ μ¦κ±°μ΄ κ²β
μ΄λμ μ΄λ»κ² μμν΄μΌν μ§ λͺ¨λ₯΄κ² λ€
μ΄λ μꡬμ¬ν λΆμ λ° μ€κ³λ₯Ό νλΌ
- κ°μ²΄ μΆμΆ
- ν΅μ¬ λλ©μΈ μμ μ§μ€ μ€κ³
Controllerμ Viewλ μμ§, λλ©μΈ μ€κ³μ μ§μ€ν΄λΌ.
λλ©μΈμ λν ν
μ€νΈ μ½λλ₯Ό λ¨Όμ λ§λ€μ΄λΌ
μλμ°¨ TDD
ν μ€νΈ κ°λ₯ν λΆλΆ μ°Ύμ λ¨μ ν μ€νΈ
ν μ€νΈνκΈ° μ΄λ €μ΄ λΆλΆ μ°Ύμ κ°λ₯ν κ΅¬μ‘°λ‘ κ°μ
- λλ€ κ°μ λ°λΌ μ μ§
μ΄λ΄ λλ μ€λΈμ νΈ κ·Έλνμμ μμ‘΄ κ΄κ³λ₯Ό κ°μ§μ§ μλ λ§μ§λ§ λ
Έλλ₯Ό λ¨Όμ μ°Ύλλ€.
μ΄κ² μλ¬΄λ° μμ‘΄ κ΄κ³κ° μλβ¦
κ·ΈλΌ μ΄κ² ν
μ€νΈ νκΈ° μ½λ€λ©΄ μ μ²΄κ° ν
μ€νΈ μ½λ€.
ν
μ€νΈ μμμ΄ λ§μμ§λ€.
λ§μ§λ§ λ
Έλκ° ν
μ€νΈνκΈ° μ¬μμΌ νλ€.
μ΄λ €μ°λ©΄ μ 체μμλ ν
μ€νΈ μμμ΄ μ€μ΄λ λ€.
ν
μ€νΈνκΈ° μ΄λ €μ΄ μμ‘΄ κ΄κ³λ₯Ό μμλ‘ λμ΄ μ¬λ¦¬μ.
κ·Έλ μ§λ§ μΈμ κ°λ ν
μ€νΈνκΈ° μ΄λ €μ΄ μ½λλ λμ¬ μ μλ€.
β ν
μ€νΈ μ΄λ €μ΄ λ
Έλ μ΅λν μμλ‘? μλλ©΄ μ μ λ¨κ³μμ λ©μΆ€?
무쑰건 μ΅μμκ° μλ μ μ ν λ¨κ³ κΉμ§λ§μ΄ μ’λ€.
TDD κ³Όμ
TDDλ μμ λ¨μλ‘ μμν΄μΌμ§ νΈνλ€.
μ»΄νμΌ μλ¬λ₯Ό ν΄κ²°νκΈ° μν΄ ν΄λμ€, λ©μλ λ§λ λ€ .
(λ§₯ κΈ°μ€ μ΅μ
+ μν°)
ν¬λΉλ ν λ©μλλ₯Ό μλ²½ν ꡬν νμ λ 컀λ°νλ€.
μ»΄νμΌ μλλ 건 컀λ°νμ§ λ§μ.
컀λ°νκ³ λ¦¬ν©ν λ§ μ°μ΅ ν΄λ λ¨.
ν
μ€νΈ μ½λμ λν 리ν©ν λ§λνμνλ€.
μ΄λ μ€κ³λ₯Ό κ³ λ―Όν΄λΌ.
μ¬κΈ°μ moveκ° λλ€ κ°μ μμ‘΄νμ§ μλλ‘ λλ€ κ°μ λ°λ λ°©μμΌλ‘ λ°κΎΈμ!
μ¬μ€ μ΄λ κ² μκ°νλκ² μ½μ§λ μμ κ·Έλ¬λ©΄ 리ν©ν λ§ν κ² μκ°λκ³ μ΄λΌ γ
리ν©ν λ§μ ν μ€νΈμΌμ΄μ€ λ³κ²½μ΄ μλ€!
νλλ‘ μ€λ³΅λλκ±°λ μ΄λ κ² λΉΌμ
β νλ‘λμ
μμ±νλ©΄μ 리ν©ν λ§ λ³΄μ΄λ©΄ μΌλ¨ μ°Έκ³ ν
μ€νΈνκ³ λ¦¬ν©ν λ§?
TDDλ νλ²μ νκ°μ§λ§ μ§μ€μ΄λκΉ λ³΄μΈλ€λ©΄ λ¬Έμμ μΌλ¨ μ μ΄λμ!
TDDλ todoλ₯Ό λ§λ€μ΄λΌ
- todo
- done
TDDλ₯Ό νλ€λ³΄λ©΄ μ€κ³κ° μμ ν λ¬λΌμ§ μ μλ€.
(λ©μλ μΆμΆ λ¨μΆν€ : μ΅μ + 컀맨λ + m)
μ΄λ»κ² ν
μ€νΈ κ°λ₯νκ² λ§λλ?
κ³ λ―Όνλ€ λ³΄λ©΄ κΈ°μ‘΄ μ€κ³μλ μμ ν λ€λ₯Έκ² λμ¬ μ μλ€.
λλ€ λ°°μ΄μ μ λ¬ν μλ μκ³ . . .
μ¬λ¬ μ€κ³λ₯Ό κ³ λ―Όν μ μλ€.