ν μ€νΈλ₯Ό μμμΌ νλ μ΄μ
TDDλΌλ λ§μ λ€μ΄λ΄μ μ μ©ν΄λ³΄κ³ μΆλ€λ©΄?
ν΄λ¦°μ½λκ° λ¬΄μμΈμ§ κΈ°μ€μ μ‘μλ³΄κ³ μΆλ€λ©΄?
리ν©ν°λ§μ μΈμ , μ΄λ»κ² νλ©΄ μ’μμ§ μκ³ μΆλ€λ©΄?
μ΄ λ¬Έμλ₯Ό λ³΄κ³ λλ©΄
TDDλ‘ κ°λ¨ν counter κΈ°λ₯μ ꡬνν μ μλ€.
ν΄λ¦°μ½λλ‘ λμκ°κΈ° μν 리ν©ν°λ§ κΈ°μ€μ μ μ€μ€λ‘ λ§λ€μ΄ λκ° μ μλ€.
1. TDD(Test Driven Development)
TDDλ ν
μ€νΈλ₯Ό λ¨Όμ μμ±νκ³ κ·Έ ν μ€μ μ½λλ₯Ό μμ±νλ λ°©λ²μ
λλ€. TDDλ μΌνΈ λ°±(Kent Beck) μ΄ κ°λ° νΉμ λ리 μλ¦° κ°λ
μ
λλ€. ννλ€ κ°λ°μ μ ν
μ€νΈ μ½λλ₯Ό μ§λκ² TDDλΌκ³ λ§ μκ°ν μ μλλ°, κ·Έλ³΄λ€ λ³Έμ§μ μΈ μλ―Έλ λ¬Έμ λ₯Ό μ μνκ³ , κ·Έ ν΄λ΅μ μ°Ύμκ°λ κ³Όμ μ΄λΌλκ² TDDμ κΈ°λ³Έ μ·¨μ§μ
λλ€. κ·Έλ¦¬κ³ ν
μ€νΈλꡬλ κ·Έ μ² νμ μ΄ννλ λꡬμ
λλ€. TDDλ μ£Όλ‘ κ°λ° μ½λλ₯Ό μ λμΌλ‘ ꡬνν©λλ€. μ½λμ κΈ°λ₯μ κ²μ¦νλκ² μ€μν λͺ©ν
μ₯μ
1.
ν
μ€νΈλ₯Ό λ¨Όμ μμ±νκΈ° λλ¬Έμ μ 체 μ½λμμ μΌλ§λ λ§μ μ½λκ° ν
μ€νΈλλκ°λ₯Ό μΈ‘μ νλ ν
μ€νΈ 컀λ²λ¦¬μ§ λΉμ¨μ΄ μμ°μ€λ½κ² λμμ§λ€.
2.
ν
μ€νΈ λλ κ²λ§ μ½λλ‘ μμ±νλ―λ‘ μ½λκ° λ°©λν΄μ§μ§ μλλ€.
3.
λ²κ·Έλλ¬Έμ λ°μνλ μκ° λλΉ μ€μ¬μ£Όκ³ , μ½λκ° μνλ λ°λ₯Ό λͺ
νν λ¬μ±νλμ§ μ½κ² νμΈ
λ°©λ²
1.
ν
μ€νΈλ₯Ό λ¨Όμ μμ±νλ€. λ§μ‘±νλ μ½λκ° μλ μνμ΄λ―λ‘ ν
μ€νΈλ μ€ν¨ν¨
2.
ν
μ€νΈλ₯Ό ν΅κ³Όνλ μ½λλ₯Ό μμ±νλ€.
3.
리ν©ν°λ§: μ€λ³΅μ΄ 보μ΄κ±°λ λ κ°μ ν λ°©λ²μ΄ μλ€λ©΄ μ½λλ₯Ό κ°μ νλ€.
3λ μμΉ - λ‘λ²νΈ C. λ§ν΄ (λ°₯ μμ μ¨, ν΄λ¦° μ½λ)
1.
μ€ν¨ν ν
μ€νΈλ₯Ό μμ±νκΈ° μ μλ μλ¬΄λ° νλ‘λμ
μ½λλ μμ±νμ§ μλλ€.
2.
μ€ν¨ν ν
μ€νΈ λ§κ³ λ μμ±νμ§ μλλ€.
3.
νμ¬ μ€ν¨ν ν
μ€νΈλ₯Ό λ§μ‘±μν€λ μ½λ μΈμλ μμ±νμ§ μλλ€.
μ’μ ν μ€νΈμ 쑰건
β’
μ€ν μλκ° λΉ¨λΌμΌ ν¨.
β’
λ΄λΆ ꡬν(ν
μ€νΈνμ§ μλ λΆλΆ)μ λ³κ²½νλ€κ³ ν΄μ ν
μ€νΈκ° μ€ν¨νλ©΄ μλλ€. μΈν°νμ΄μ€(μ
μΆλ ₯ μμ£Ό)λ₯Ό μ€μ¬μΌλ‘ μμ±.
β’
λ²κ·Έλ₯Ό μ°Ύμ μ μμ΄μΌ νλ€. λ§λ€μλ€κ³ λμ΄ μλ ν
μ€νΈ μλ리μ€λ₯Ό μ μ€μ ν΄μΌ ν¨.
β’
ν
μ€νΈ κ²°κ³Όμ μΌκ΄μ±μ΄ μμ΄μΌ νλ€. μ½λκ° λ³νμ§ μμλ€λ©΄ ν
μ€νΈ κ²°κ³Όλ νμ λμΌ ν΄μΌ νλ€.
β’
μλκ° λͺ
νν λλ¬λμΌ νλ€.
2. BDD(Behaviour Driven Development)
BDDμμλ ν
μ€νΈ μΌμ΄μ€ μμ²΄κ° μꡬμ¬μμ΄ λλλ‘ κ°λ°ν©λλ€. κ·Έλμ μ μ μ€ν 리λ₯Ό λ¨Όμ μμ±ν΄μΌ νλλ°μ.
TDDμ λν μ½μΉμ νλ BDDμ μλ²μ§ λ λ
Έμ€(Dan north)λ TDDμμ λ€μκ³Ό κ°μ λ²½μ λ§μ£Όμ³€μμ΅λλ€.
1.
νλ‘μΈμ€μ μ΄λμλΆν° μμν΄μΌ νλκ°(Where to start in the process).
2.
무μμ ν
μ€νΈνκ³ λ 무μμ νμ§ λ§μμΌ νλκ°(What to test and what not to test).
3.
ν λ²μ μΌλ§λ§νΌ ν
μ€νΈν΄μΌ νλκ°(How much to test in on go).
4.
ν
μ€νΈλ₯Ό μ΄λ»κ² λͺ
λͺ
ν΄μΌ νλκ°(What to call the tests).
5.
ν
μ€νΈκ° μ€ν¨νλ μ΄μ μ λν΄ μ΄λ»κ² μ΄ν΄ν΄μΌ νλκ°(How to understand why a test fails).
μ΄μ λ λ
Έμ€μ κ·Έμ λλ£λ€μ νλμ ν
νλ¦Ώμ λ§λ€μ΄ μ±ννλλ° μλμ κ°μμ΅λλ€.
1.
νΉμ κ°μ΄ μ£Όμ΄μ§κ³ (Given)
2.
μ΄λ€ μ΄λ²€νΈκ° λ°μνμ λ(When)
3.
κ·Έμ λν κ²°κ³Όλ₯Ό 보μ₯ν΄μΌ νλ€(Then).
λ λ
Έμ€λ TDD μ½μΉμ νλ μμ βTestβλΌλ λ¨μ΄λ₯Ό μ¬μ©νμ§ μλ νΈμ΄ μ¬λλ€μ΄ μ’λ TDDμ μ리λ₯Ό μ΄ν΄νλ λ° λμλ κ²μ΄λΌ μκ°νκ³ , TestλΌλ κ°λ
보λ€λ βBehaviourβλΌλ κ°λ
μ μΌμ λ ν
μ€νΈ μ λμ μλκ° μ’λ λͺ
νν΄μ§λ€λ κ²μ κΉ¨λ¬μλ€κ³ ν©λλ€. κ·Έλ¦¬κ³ λ λͺ¨λ ν
μ€νΈ λ©μλλͺ
μ βshouldβλ₯Ό λ£κΈ° μμνμ΅λλ€.
shouldλ μλ¬Έλ²μμ μ΄λ€ νμλ₯Ό κΈ°λνλ€λ μ‘°λμ¬μ
λλ€. μ΄λ₯Ό μ¬μ©ν¨μΌλ‘μ¨ κ°λ°μλ λ μ΄μ ν
μ€νΈ λ©μλλ₯Ό μμ±ν λ μ΄λ»κ² λͺ
λͺ
ν΄μΌ νλμ§ νΌλμ λλΌμ§ μμλ λκ³ , μ΄λ‘μ¨ ν
μ€νΈ μ λμ κΈ°λλλ νμλ€μ΄ λͺ
νν΄μ‘μ΅λλ€. λν μμ±νλ μ½λκ° κΈ°λνλ νμμ λ§μ§ μλλ€λ©΄ μ΄λ 리ν©ν λ§μ μ§μ‘°κ° λκΈ° λλ¬Έμ 리ν©ν λ§μ ν΅ν΄ λͺ¨λ ꡬν μ½λμ μλ λν λͺ
νν΄μ§λλ€.
μμ μ§νν κ³μ°κΈ° λ―Έμ
μ μλ‘ λ€μ΄λ³΄κ² μ΅λλ€.
μ€ν 리
Given (μ£Όμ΄μ§ νκ²½)
β’
μ μ μκ² κ³μ°κΈ° νλ©΄μ΄ λ λλ§ λ ν
When (νμ)
β’
μ μ κ° μ«μ 4μ ν΄λ¦νλ€.
β’
μ μ κ° + λ²νΌμ ν΄λ¦νλ€
β’
μ μ κ° 2λ₯Ό ν΄λ¦νλ€.
β’
μ μ κ° = μ ν΄λ¦νλ€.
Then (κΈ°λκ²°κ³Ό)
β’
κ³μ°κΈ° νλ©΄μλ 6μ΄λΌλ μ«μκ° λ³΄μ¬μ§λ€.
μ΄λ° μ μ μ νμλ₯Ό κ·Έλλ‘ ν
μ€νΈμ½λλ₯Ό μ΄μ©νμ¬ μ¬νν©λλ€. μ΄μ²λΌ BDDλ νμλ₯Ό μ€μ μΌλ‘ κΈ°μ νλ©΄μ ν
μ€νΈλ₯Ό νλ건λ°, μ¬μ€μ TDDμ μ¬μ΄ν΄μ λΉμ·ν©λλ€. κ·Έλμ νΉμλ BDDλ₯Ό μλ TDDλΌκ³ νννλλ°μ. κ²°κ΅ μ€μν건 λ¬Έμ λ₯Ό μ μνκ³ , κ·Έ ν΄λ΅μ μ°Ύμκ°λ κ³Όμ μ΄λΌλκ²λλ€.