π TDD λ²μΉ μΈ κ°μ§
- μ€ν¨νλ λ¨μ ν μ€νΈλ₯Ό μμ±ν λκΉμ§ μ€μ μ½λλ₯Ό μμ±νμ§ μλλ€.
- μ»΄νμΌμ μ€ν¨νμ§ μμΌλ©΄μ μ€νμ΄ μ€ν¨νλ μ λλ‘λ§ λ¨μ ν μ€νΈλ₯Ό μμ±νλ€.
- νμ¬ μ€ν¨νλ ν μ€νΈλ₯Ό ν΅κ³Όν μ λλ‘λ§ μ€μ μ½λλ₯Ό μμ±νλ€.
TDDλ μ€μ μ½λλ₯Ό μ§κΈ° μ μ λ¨μ ν μ€νΈλΆν° μ§λΌκ³ μꡬνκ³ μλ€. μ΄λ κ² νλ€ λ³΄λ©΄ λ§μ ν μ€νΈ μΌμ΄μ€κ° λμ€κ² λλ€. νμ§λ§ μ€μ μ½λμ λ§λ¨Ήμ μ λλ‘ ν μ€νΈ μ½λλ λ°©λν΄μ§λ©° μ΄μ λν κ΄λ¦¬ λ¬Έμ λ₯Ό μ λ°νκΈ°λ νλ€.
π ν μ€νΈ μ½λλ κΉλνκ² μ μ§νμ.
ν μ€νΈ μΌμ΄μ€μ μ€μμ±
κ°λ°μλ€μ μ½λμ μ μ°μ±, μ μ§λ³΄μμ±, μ¬μ¬μ©μ±μ λν μ€μμ±μ μκ³ μλ€. ν΄λΉ λ¨μμμλ μ΄λ¬ν μ€μμ±μ λν λ²νλͺ©μ΄ λ¨μ ν μ€νΈλΌκ³ μκ°νλ€. μ΄μ λ ν μ€νΈ μΌμ΄μ€κ° μμΌλ©΄ λ³κ²½μ λλ ΅μ§ μκΈ° λλ¬Έμ΄λΌ νλ€. λλ μ΄μ 곡κ°νλ€. ν μ€νΈ μΌμ΄μ€κ° μμ λ μ½λλ₯Ό μμ νκ³ μ νλ©΄ λ€λ₯Έ κ³³μ λ¬Έμ κ° μκΈΈκΉ λ΄ λλ ΅κ³ λ§μ€μ¬μ‘λ€. ν μ€νΈ μΌμ΄μ€κ° μμΌλ©΄ μ΄λ¬ν λλ €μμ μμ¨ μ μλ€.
ν μ€νΈ μ½λκ° μ§μ λΆνλ€λ©΄?
μ€μ μ½λλ₯Ό λ³κ²½νλ©΄ κΈ°μ‘΄ ν μ€νΈ μΌμ΄μ€λ μ€ν¨νλ€. κ·Έλ¬λ©΄ ν μ€νΈ μ½λλ λ³κ²½ν΄μΌ νλ€. μ¬κΈ°μ μ΄λ€ λ¬Έμ κ° μκΈΈ μ μμμ§ μκ°ν΄λ΄μΌ νλ€. ν μ€νΈ μ½λκ° λ§μ½ μ§μ λΆνλ€λ©΄ μ΄λ¨κΉ? μ€μ μ½λμ κ°λ€. μ§μ λΆνλ€λ©΄ λ³κ²½νκΈ°κ° λλ ΅κ³ μ΄λ €μμ§λ€. ν μ€νΈ μ½λλ κΉλνκ² μ μ§ν΄μΌ νλ€λ μ리μ΄λ€. μ€μ μ½λλ λ§μ λ³κ²½μ΄ μΌμ΄λκΈ° λλ¬Έμ΄λ€. κ·Έλ κ² νμ§ λͺ»νλ€λ©΄ ν μ€νΈ μ½λμ λ³Έμ§μ μμ΄ μ€νλ € λΆλ΄μ΄ λ μ μλ€.
μ΄λ»κ² κΉλνκ² μ μ§ν΄μΌ ν κΉ?
ν μ€νΈ μ½λλ μ€μ μ½λλ§νΌ λ¨μνκ³ , κ°κ²°νκ³ , ννλ ₯μ΄ νλΆν΄μΌ νλ€. μ΅μνμ ννμΌλ‘ λ§μ κ²μ λνλ΄λ κ²μ΄ λ² μ€νΈμ΄λ€. νμ§λ§ μ€μ μ½λλ§νΌ ν¨μ¨μ μΌ νμλ μλ€. μ€μ νκ²½μ΄ μλλΌ ν μ€νΈ νκ²½μμ λμκ°λ μ½λμ΄κΈ° λλ¬Έμ΄λ€.
ν μ€νΈλ μ£Όλ‘ μλμ κ°μ΄ μΈ λΆλΆμΌλ‘ λλλ€.
- [μ€λΉ] ν μ€νΈ μλ£λ₯Ό λ§λ λ€.
- [μ€ν] ν μ€νΈ μλ£λ₯Ό μ‘°μνλ€.
- [κ²μ¦] μ‘°μν κ²°κ³Όκ° μ¬λ°λ₯Έμ§ νμΈνλ€.
λ§μ κ°λ°μκ° μ΄λ―Έ μκ³ μμ μ μλ€. given-when-then ν¨ν΄μ λ μ¬λ¦΄ μ μλ€. νΉμλ given-when-then ν¨ν΄μ μ΅μνμ§ μλ€λ©΄ μλ λ§ν¬λ₯Ό μ°Έκ³ νλ©΄ μ’μ κ² κ°λ€. ν΄λΉ κΈμμλ [μ€λΉ-μ€ν-κ²μ¦]μ΄λΌκ³ κ°λ¨νκ² νννμλ€. λ§μ½ λ΄κ° μν¬λ₯΄κ±°λ λ§κ΅¬μ‘μ΄λ‘ μμ±νλ€λ λλμ΄ λ λ€λ©΄, μ΄λ° μμΌλ‘ ꡬ쑰ννλ κ²μ΄ μ’λ€κ³ μκ°νλ€.
Given-When-Then Pattern
ν μ€νΈ μ½λ μμ± νν λ°©λ² (μ€νλ§ λΆνΈ νκ²½μμ) | μ΄λ² κΈμμλ, ν μ€νΈ μ½λ μμ± μ μμ£Ό μ¬μ©νλ Given-When-Then Patternμ λν΄μ κ°λ΅νκ² μκ°νκ² λ€. λ³ λ΄μ© μλ κΈμ΄λ―λ‘, μμ£Ό νΈν
brunch.co.kr
μ± μμλ νλμ ν μ€νΈμ assert νλλ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€κ³ νλ€. μ΄ λΆλΆμ μ½μΌλ©΄μ νλμ ν μ€νΈμ assert μ¬λ¬ κ°λ‘ κ²μ¦νλ λμ μ½λκ° λ μ¬λλ€. assert νλλ‘ μμ±νλ €λ©΄ κ²°κ΅μ ν μ€νΈλ₯Ό λλ μ€μΌ νλ€. νμ§λ§ μ¬κΈ°μ λ§μ μ€λ³΅μ΄ λ°μν μ μλ€. κ·Έλμ assert μ¬λ¬ κ°λ₯Ό μ¬μ©νλ€. μ± μμλ μ€λ³΅μ μ κ±°νλ λ°©λ²μΌλ‘ TEMPLATE METHOD ν¨ν΄μ μΈκΈνλ€. νμ§λ§ λ°°λ³΄λ€ λ°°κΌ½μ΄ λ ν¬κΈ° λλ¬Έμ μ°¨λΌλ¦¬ assert λ¬Έμ μ¬λ¬ κ°λ₯Ό μ¬μ©νλ κ²μ΄ μ’λ€κ³ νλ€. λκ° λͺ¨μμ μΈ μν©μΈ κ² κ°λ€. κ²°κ΅μ assert λ¬Έμ μ΅λν μ€μ΄λ©°, ν μ€νΈ ν¨μλ§λ€ ν κ°λ λ§ ν μ€νΈνμ λΌκ³ κ·μΉμ μ νλ κ²μ΄ μ’λ€.
π F.I.R.S.T
F.I.R.S.Tλ κΉ¨λν ν μ€νΈλ₯Ό λ§λ€κΈ° μν 5κ°μ§ κ·μΉμ λ§νλ€.
F.I.R.S.T | μ€λͺ |
λΉ λ₯΄κ²(Fast) | ν
μ€νΈλ λΉ¨λΌμΌ νλ€. ν μ€νΈλ μμ£Ό λλ €μΌνκΈ° λλ¬Έμ΄λ€. |
λ 립μ μΌλ‘(Independent) | κ° ν
μ€νΈλ μμ‘΄νλ©΄ μ λλ€. μλ¬μ μ€ν¨νμ¬ μμΈμ μ§λ¨νκΈ° μ΄λ ΅κ³ νλ° ν μ€νΈκ° μ°ΎμμΌ ν κ²½ν¨μ΄ μ¨κ²¨μ§ μ μλ€. |
λ°λ³΅κ°λ₯νκ²(Repeatabel) | μ΄λ€ νκ²½μμλ λ°λ³΅ κ°λ₯ν΄μΌ νλ€. λ€νΈμν¬μ μ°κ²°λμ΄ μμ§ μκ±°λ μ€μ νκ²½ λͺ¨λ μ€νν μ μμ΄μΌ νλ€. |
μκ°κ²μ¦νλ(Self-Validating) | ν μ€νΈλ λΆμΈ κ°μΌλ‘ μ±κ³΅ μλλ©΄ μ€ν¨λ‘ κ²°κ³Όλ₯Ό λ΄μΌ νλ€. |
μ μμ(Timely) | ν
μ€νΈλ μ μμ μμ±ν΄μΌ νλ€. λ¨μ ν μ€νΈλ ν μ€νΈνλ €λ μ€μ μ½λλ₯Ό ꡬννκΈ° μ§μ μ ꡬννλ€. |
π κ²°λ‘
ν μ€νΈ μ½λλ μ€μ μ½λλ§νΌ μ€μνλ€.
μ΅λν λ¨μνκ³ , κ°κ²°νκ³ , ννλ ₯μ΄ νλΆνκ² λνλ΄λΌ.
assert λ¬Έμ μ΅λν μ€μ΄κ³ , νλμ ν μ€νΈμ ν κ°λ λ§ ν μ€νΈνκ³ μλμ§ λ¬Όμνλ₯Ό λμ Έλ΄λΌ.
'μ± > CleanCode' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
β¨ Clean Code 9μ₯: λ¨μ ν μ€νΈ (0) | 2021.01.31 |
---|---|
β¨ Clean Code 7μ₯: μ€λ₯ μ²λ¦¬ (0) | 2021.01.21 |
β¨ Clean Code 6μ₯: κ°μ²΄μ μλ£κ΅¬μ‘° (0) | 2021.01.20 |
β¨ Clean Code 5μ₯: νμ λ§μΆκΈ° (0) | 2021.01.14 |
β¨ Clean Code 3μ₯: ν¨μ (0) | 2020.12.15 |
β¨ Clean Code 2μ₯: μλ―Έ μλ μ΄λ¦ (0) | 2020.11.23 |