TDD
1οΈβ£ TDDλ?
Test Driven Develpment
μ μ½μλ‘μ¨ ν
μ€νΈ μ£Όλ κ°λ°μ΄λΌλ λ»μ κ°μ§λ€. λ€μλ§ν΄, μ§§μ κ°λ° μ¬μ΄ν΄μ λ°λ³΅νλ νλ‘μΈμ€λ‘, ν
μ€νΈλ‘ νμ¬κΈ μ 체μ μΈ κ°λ°μ μ£Όλνκ²λνλ λ°©λ²λ‘ μ€ νλμ΄λ€. κΈ°μ‘΄μ μ¬μ©νλ κ°λ°λ°©λ²μ (μ€κ³ β‘οΈ κ°λ° β‘οΈ ν
μ€νΈ) β‘οΈ μμ β‘οΈ λ°λ³΅μ μμλ₯Ό λ°λλ€λ©΄, TDDλ (μ€κ³ β‘οΈ μμ β‘οΈ ν
μ€νΈ) β‘οΈ λ°λ³΅ β‘οΈ κ°λ°μ μμλ₯Ό κ°μ§λ€.
2οΈβ£ κΈ°μ‘΄ κ°λ°λ°©μμ λ¨μ
κΈ°μ‘΄μ μ¬μ©νλ κ°λ°λ°©μμ μ¬μ©μμ μꡬμ¬νμ΄ μ²μλΆν° λͺ ννμ§ μμμ μκΈ° λλ¬Έμ κ°λ°μ΄ν μ½λλ₯Ό μ¬μ€κ³ν΄μΌ νλ κ²½μ°κ° κ½€ λ°μνλ€. μ¬κΈ°μ κΈ°μ‘΄ κ°λ°λ°©μμ λ¨μ μ΄ λ°μνλ€.
κ°λ°μκ° μ½λλ₯Ό μ¬μ€κ³(μ½λλ₯Ό μμ , μμ , μ½μ )νλ κ³Όμ μμ λΆνμν μ½λκ° λ¨κ²¨μ§κ±°λ μ€λ³΅λλ μ½λκ° μκΈΈ κ°λ₯μ±μ΄ λλ€.
μμ κΈ°λ₯ μμ μλ μ 체μ μΈ λΆλΆμ ν μ€νΈν΄μΌ νλ―λ‘ λ²κ·Έ κ²μΆμ΄ νλ€μ΄μ§κ³ , μ΄λμ λ²κ·Έκ° λ°μν μ§ λͺ¨λ₯΄λ―λ‘ μ 체μ μΈ μμ€μ½λμ νμ§μ΄ μ νλλ€.
μ΅μ’ μ μΌλ‘ μ¬μ¬μ©μ΄ μ΄λ ΅κ³ , μ μ§λ³΄μκ° νλ€μ΄μ§κ³ ν μ€νΈ λΉμ©μ΄ λμμ§λ κ²°κ³Όλ₯Ό λ³λλ€.
3οΈβ£ TDD λ°©μμ μ₯λ¨μ
TDDμ κ²½μ°, κΈ°μ‘΄μ κ°λ°λ°©μκ³Ό ν° μ°¨μ΄μ μ΄ ν μ€νΈ μ½λλ₯Ό μμ± ν μ€μ μ½λλ₯Ό μμ± νλ€λ μ μ΄λ€.
μ₯μ
ν μ€νΈμΌμ΄μ€λ₯Ό μμ±νλ©° μκΈ°λ μμ μ¬νκ³Ό λ²κ·Έκ° λ°μν λΆλΆμ μ¦μ μΆκ°νλ―λ‘ λ²κ·Έ κ²μΆλ₯λ ₯ μμΉ λ° μμ€μ½λμ κ°κ²°ν
λ€λ₯Έ κ°λ°μμμ νμ μ ν μ€νΈμΌμ΄μ€κ° μ‘΄μ¬νκΈ° λλ¬Έμ λΉ λ₯Έ μ½λμ μ΄ν΄μ μ€μ μ λμλ λΆλΆ 곡μ κ°λ₯
λ¨μ
ν μ€νΈμΌμ΄μ€κ° μ¦κ°ν μλ‘ μ€μ κ°λ° μμ€μ½λλ₯Ό μμ±νκΈ°κΉμ§μ μκ°μ΄ μ¦κ°νλ€.
κΈ°μ‘΄ κ°λ°λ°©μμ΄ μ΄λ―Έ λͺΈμ 체νλ κ²½μ°, TDD λ°©μμ μ μ©νκΈ° νλ€λ€.
4οΈβ£ TDD μμ
JavaScriptμμ μ¬μ©λλ ν μ€νΈ νλ μμν¬μΈ Jestλ₯Ό μ¬μ©νμ¬ κ°λ¨ν μ¬μ©μμλ₯Ό λ€μ΄λ³΄μ.
λ¨Όμ pnpm init
μ pnpm install --save-dev jest
λ₯Ό μ
λ ₯νμ¬ package.json νμΌμ λ§λ€κ³ Jestλ₯Ό κ°λ° μμ‘΄μ±μΌλ‘ μ€μΉνλ€.
κ°λ¨ν ν μ€νΈν νμΌ κ΅¬μ‘°μ΄λ€.
package.jsonμ test 컀맨λλ₯Ό jest
λ‘ μμ νμ¬ pnpm test
λ₯Ό μ€ννμμλ jestλ‘ νμ¬κΈ ν
μ€νΈ ν μ μλλ‘ λ§λ€μ΄ μ€λ€.
λ§€μ° κ°λ¨ν λνκΈ° κΈ°λ₯μ λ§λ€κ±΄λ°, μμΈλ₯Ό λκΈ° μν΄ λ§€κ°λ³μμ μ«μκ° μλ κ°μ΄ λ€μ΄μ€λ©΄ "μ«μκ° μλλλ€"λ₯Ό 리ν΄ν΄μΌνλ€λ κ°μ μ μΆκ°νμ.
κ·Έλ λ€λ©΄ ν μ€νΈν΄μΌν μ¬νλ€μ
μμ/μμ + μμ/μμ
λ¬Έμμ΄ + μμ / μμ
μ λκ° μμ κ² κ°λ€.
μ 2κ°μ§ 쑰건μμ Failμ κ²μΆν΄μΌ νλ 쑰건μ 2λ²μ΄λ€. λ¨Όμ μ λκ°μ§μ 쑰건μ μΆ©μ‘±νλ ν μ€νΈμΌμ΄μ€λ₯Ό μμ±ν΄λ³΄μ
μ΄ 4κ°μ§μ ν μ€νΈμΌμ΄μ€λ₯Ό μμ±ν΄λ³΄μλλ°, κ°κ° μμ+μμ, μμ+μμ, μμ+μμ, κ·Έλ¦¬κ³ sumμ΄λΌλ ν¨μμ νμν λ§€κ°λ³μ μ€ νλκ° λ¬Έμμ΄μΈ κ²½μ° 2κ°μ λ λ§€κ°λ³μκ° λ¬Έμμ΄μΈ κ²½μ°λ₯Ό μμ±νλ€.
μ΄μ ν μ€νΈμΌμ΄μ€μ μ λ’°μ±μ μν΄ λ¬Έμμ΄μ΄ λ§€κ°λ³μλ‘ λ€μ΄κ° ν μ€νΈμΌμ΄μ€κ° Failμ 리ν΄νλ κ²μ¦ μ½λλ₯Ό μμ±νν ν μ€νΈλ₯Ό μ€νν΄λ³΄μ
pnpm test
컀맨λλ₯Ό μ
λ ₯νμ¬ μ€ννκ² λλ©΄
μμ²λΌ ν μ€νΈ κ²°κ³Όκ° λμ€κ² λλ€.
μλνλλ‘ λ¬Έμμ΄μ΄ λ§€κ°λ³μμ λ€μ΄κ° κ²½μ°λ λͺ¨λ Failμ 리ν΄νμμΌλ―λ‘, μ΄μ ν΄λΉ μΌμ΄μ€λ€μ΄ λͺ¨λ Successλ₯Ό ν μ μλλ‘ μ½λλ₯Ό μμ νλ€.
μ΄μ λ€μ νλ² ν μ€νΈλ₯Ό μ§νν΄λ³΄μ
νμ¬ μμ±ν ν μ€νΈκ° λͺ¨λ ν΅κ³ΌνκΈ° λλ¬Έμ ν΄λΉ μ½λλ₯Ό κ°λ°λ¨κ³λ‘ κ°μ Έκ° μ¬μ©ν μ μλ€λ λ»μ΄ λλ€.
5οΈβ£ μ 리
κ°λ¨ν μμ½νμλ©΄ TDD
λ κ°λ°νλ €λ κΈ°λ₯μ ν
μ€νΈμΌμ΄μ€λ₯Ό 미리 μμ±μ νκ³ μ΄μ λ§μΆμ΄ κ°λ°νλ λ°©μ μ€ νλμ΄λ€.
μμ TDDλ°©μμ λ¨μ μΌλ‘ κΌ½ν ν μ€νΈμΌμ΄μ€κ° μ¦κ°ν μλ‘ μ€μ κ°λ° μμ€μ½λλ₯Ό μμ±νκΈ°κΉμ§μ μκ°μ΄ μ¦κ°νλ€λ μ μ νλ‘κ·Έλ¨μ μ 체 κ°λ°/μ μ§λ³΄μμ λ€μ΄κ°λ 리μμ€λ₯Ό κ³ λ €νλ€λ©΄ μ€νλ € TDDλ°©μμ μ₯μ μ μ λνλ΄λ λΆλΆμ΄λΌκ³ μκ°νλ€.
κΈ°μ‘΄μ κ°λ°λ°©μμΌλ‘ μμ€μ½λλ₯Ό μμ±μλ£ ν μμΈλ₯Ό μκ°νλ©° ν μ€νΈμΌμ΄μ€λ₯Ό μμ±νκ³ , λ²κ·Έκ° λ°μν λΆλΆμ λλ²κΉ νλ κ²λ³΄λ€ TDDλ°©μμ μ¬μ©νλκ²μ΄ ν¨μ¬ νΈλ¦¬νκ³ ν¨μ¨μ μ΄λΌλκ²μ λΆμ ν μ μλ μ¬μ€μ΄λ€. TDDλ°©μμ μ¬μ©νμ¬ κ°λ°μ νλ€λ κ² μμ²΄κ° κ²°κ΅ κ°λ°μκ° μκ°ν μ μλ μμΈμ λν΄μ λͺ¨λ μ²λ¦¬κ° λμλ€λ λ»μ΄λΌλ κ²μ΄κΈ° λλ¬Έμ΄λ€.
μ΄ κ³Όμ μ κ±°μ³ μ 체 κ°λ° μμ€μ½λλ₯Ό μμ±μλ£νμλ€λ©΄ μμ€μ½λκ° κ°κ²°νκ³ κ°κ°μ κΈ°λ₯μ λν λͺ¨λ ν μ€νΈμΌμ΄μ€κ° μ‘΄μ¬νκΈ°μ λ€λ₯Έ κ°λ°μκ° μΈμμΈκ³ λ°λλΌλ ν΄λΉ μ½λλ₯Ό μ μ§λ³΄μνκΈ° μμν΄μ§λ€.
μ¦, TDD λ°©μμ ν μ€νΈμΌμ΄μ€μ ν¬μν 리μμ€κ° κ²°κ΅ μ₯κΈ°μ μΌλ‘ μ μ§λ³΄μμ λ§€μ° μ©μ΄ν΄μ Έ μ 체 κ°λ°/μ μ§λ³΄μμ λ€μ΄κ°λ 리μμ€λ₯Ό μλΉλΆλΆ λ¨μΆμμΌμ£Όλ λ°©μμ΄κΈ° λλ¬Έμ κΈ°μ‘΄μ κ°λ°λ°©μλ³΄λ€ ν¨μ¬ ν¨μ¨μ μ΄λΌκ³ μκ°λλ€.
Last updated