TDDλ?
TDDλ Test Driven Developmentμ μ½μμ
λλ€.
ν
μ€νΈ μ£Όλ κ°λ° μ¦, ν
μ€νΈλ₯Ό ν΅ν κΈ°λ₯μ ꡬνμ΄λΌ νν ν μ μμ΅λλ€.
μ°λ¦¬κ° μ΄λ² μκ°μ νμ΅νκ²λ ν
ν¬λμ Unit Test(λ¨μν
μ€νΈ) μ
λλ€.
Β
Unit Testλ?
- νΉμ 쑰건μμ ν¨μ(Unit)κ° μ΄λ»κ² μλν΄μΌ νλμ§ μ μνκ³ , κ·Έλ¬ν μ μλλ‘ ν¨μκ° μ μλνλμ§ νμΈνλ λ°©λ²λ‘ μ λλ€.
Β
μ°λ¦¬κ° μ¬μ©ν TDD λΌμ΄λΈλ¬λ¦¬λ Jasmine μ
λλ€ (https://jasmine.github.io/)
Β
TDD μ λ¨κ³
TDD μμλ μ½λ©μ ν λ κΈ°λ₯μ λ°λ‘ κ°λ°νμ§ μκ³ TDD λΌλ λ§ κ·Έλλ‘ ν
μ€νΈ μ½λλ₯Ό λ¨Όμ μμ±ν©λλ€. μ΄λ ν
μ€νΈ μ½λλ λ€μκ³Ό κ°μ λ¨κ³λ₯Ό λ¨Όμ κ±°μΉκ² λ©λλ€.
- μ μ λ¨κ³ : μ±κ³΅νκΈ° μν΄ ν μ€νΈμ μ€ν¨νλ λ¨κ³
- λ Ήμ λ¨κ³ : ν μ€νΈμ μ±κ³΅ν λ¨κ³
- 리ν©ν° λ¨κ³ : ν μ€νΈμ μ±κ³΅ν μ½λλ₯Ό κΈ°λ°μΌλ‘ μ½λμ νμ§μ λμ΄λ λ¨κ³ (refactoring)
Β
TDDλ μ΄ μΈ κ°μ§ λ¨κ³μ λμμλ λ°λ³΅μ΄λΌκ³ ν μ μμ΅λλ€.
Β
Β
TDD μ€μ΅
- νκ²½ ꡬμ±μ κ°λ¨νκ² μ€ν λμΌλ‘ λ°©μμ μ΄μ©ν©λλ€. (https://github.com/jasmine/jasmine/releases )
- κ°λ¨ν ν¨μλ₯Ό ν μ€νΈ ν΄λ΄ λλ€.
- κ°μ²΄μ§ν₯μ μ½λλ₯Ό ꡬννμ¬ TDD ν΄λ΄ λλ€.
Β
Β
κ²°λ‘
TDDμ μ₯μ
- μλ°μ€ν¬λ¦½νΈλ μΈν°νλ¦¬ν° μΈμ΄. μ»΄νμΌλ¬μ μν μ ν μ€νΈλ₯Ό ν΅ν΄ λμ μννμ¬ κΈ°λ₯μ ꡬλμ 보μ₯ν©λλ€. μ΄λ 곧 μ½λλ₯Ό μμ μ μ΄κ³ κ²¬κ³ νκ² λ§λ€μ΄ μ€λλ€.
- ꡬνν΄μΌ νλ κΈ°λ₯μ λν λμ λΆμμ μꡬνκΈ° λλ¬Έμ μλΉμ€μ λν μ΄ν΄λκ° μμΉνκ³ νμ§μ μ°μ νλ μ¬κ³ λ₯Ό νκ²λ©λλ€.
Β
TDDλ₯Ό μ¬μ©ν λ μ£Όμν΄μΌν μ
- ν μ€νΈ μ½λλ₯Ό λ°λ‘ μμ±ν΄μΌ νκΈ° λλ¬Έμ μκ°μ΄ λ λ€μ΄κ°κ³ μ΄λ 곧 μ 무μ λν λΆλ΄μΌλ‘ λ€κ°μ΅λλ€. λλ¬Έμ νλ‘μ νΈκ° κΈλ°νλ€λ©΄ TDD λ₯Ό μ¬μ©νμ§ μλ νΈμ΄ μ’μ΅λλ€. νλ‘μ νΈμ μ±κ²©μ λ°λΌ μ μ€ν νλ¨ν΄μΌν©λλ€.
- TDD κ° λͺ¨λ μμΈ μν©μ ν΄κ²°ν΄μ£Όμ§λ μμ΅λλ€. κ²°κ΅ ν μ€νΈ μ½λλ₯Ό μμ±νλ μ¬λμ΄ κ³ λ €νμ§ μμ μν©μ ν μ€νΈ μ½λλ λμΉ μ μκΈ° λλ¬Έμ ν μ€νΈ μ½λλ₯Ό μμ±νλ€κ³ ν΄μ λ°©μ¬ν μλ μμ΅λλ€. ν μ€νΈ μ½λλ κ²¬κ³ νκ³ μμ μ μΈ μ½λλ₯Ό μ§ν₯νλ κ²μ΄μ§ κ²°μ½ μλ²½νμ§ μμ΅λλ€.