Skip to content

πŸ“• [3λΆ€ 리뷰] Test‐Driven Development : By Example

jiwon Han edited this page Jul 2, 2024 · 23 revisions

이세λͺ…

  • ν…ŒμŠ€νŠΈλŠ” μž‘μ€ λ‹¨μœ„λΆ€ν„° 응집λ ₯은 높이고 κ²°ν•©λ ₯은 μ€„μΈλ‹€λΌλŠ” 말에 μ μž–κ²Œ κ³΅κ°ν–ˆλ‹€. ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” 것은 λ‚΄κ°€ λ§Œλ“œλŠ” μ œν’ˆμ„ λΆ„μ„ν•˜λŠ” 일과 λ™μΌν•˜λ‹€λŠ” λŠλ‚Œμ„ λ°›μ•˜λ‹€. μ œν’ˆμ„ λ§Œλ“ λ‹€ ν•΄μ„œ λ¬΄μž‘μ • μ½”λ“œλΆ€ν„° μž‘μ„±ν•˜λŠ” 것이 μ•„λ‹Œ 고객의 μš”κ΅¬μ‚¬ν•­μ„ μ²΄ν¬ν•˜κ³  그에 λ”°λ₯Έ κΈ°λŠ₯을 λ‚˜μ—΄ν•˜κ³  μ€€λΉ„κ°€ 된 ν›„ κ°œλ°œμ— μ°©μˆ˜ν•˜λŠ” κ²ƒμ²˜λŸΌ, ν…ŒμŠ€νŠΈλ„ μ½”λ“œλ₯Ό μž‘μ„±ν•˜κΈ° μ „ μ–΄λ–€ κ²°κ³Όκ°€ λ‚˜μ™€μ•Ό ν•˜λŠ”μ§€ μ–΄λ–»κ²Œ λ™μž‘ν•  것인지λ₯Ό 미리 λ¦¬μŠ€νŠΈμ—… ν•œ ν›„ μž‘μ„±ν•œλ‹€. 이런 일련의 과정을 TDD라고 ν•˜λŠ”κ²Œ μ•„λ‹κΉŒ? 비단 ν…ŒμŠ€νŠΈ μž‘μ„±λΏλ§Œ μ•„λ‹ˆλΌ 거기에 따라 μ˜€λŠ” λ‹€λ₯Έ λ‹€μ–‘ν•œ κ³Όμ •λ“€μ—μ„œ μ£ΌλŠ” 이점에 더 μ§‘μ€‘ν•˜λŠ” 게 λ§žλŠ” λ“― ν•˜λ‹€.
  • λΉ¨κ°„ λ§‰λŒ€ νŒ¨ν„΄μ—μ„œ κ°€μž₯ 곡감된 뢀뢄은 μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈλ₯Ό μž‘κ²Œ λΆ„ν• ν•˜κ³  κ·Έ 원인을 νŒŒμ•…ν•˜λŠ” κ³Όμ •μ΄μ—ˆλ‹€. ν”„λ‘ νŠΈμ—”λ“œ κ°œλ°œμ—μ„œ λ³΅μž‘ν•œ μ»΄ν¬λ„ŒνŠΈλ‚˜ μƒνƒœ 관리 μ½”λ“œλ₯Ό ν…ŒμŠ€νŠΈν•  λ•Œ 이런 λ°©μ‹μœΌλ‘œ 문제λ₯Ό ν•΄κ²°ν•˜λ©΄ 디버깅에 μ†Œμš”λ˜λŠ” μ‹œκ°„μ„ 크게 쀄일 수 μžˆλ‹€. μ‹€νŒ¨ν•œ ν…ŒμŠ€νŠΈλ₯Ό λ‘λ €μ›Œν•˜μ§€ μ•ŠλŠ” λ§ˆμΈλ“œμ— λŒ€ν•œ μ–˜κΈ°λ„ λ‚˜μ™€μ„œ ν…ŒμŠ€νŠΈ 뿐만 μ•„λ‹ˆλΌ 개발 μ „λ°˜μ μΈ 뢀뢄에 λŒ€ν•œ λ§ˆμΈλ“œλ„ 쀑점에 λ‘” λŠλ‚Œμ΄μ—ˆλ‹€.
  • 초둝 λ§‰λŒ€ νŒ¨ν„΄μ˜ λ‚΄μš©μ€ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όμ‹œν‚€λŠ” 과정이 λ‹¨μˆœν•œ 디버깅이 μ•„λ‹Œ 창의적인 해결책을 μ°ΎλŠ” κ³Όμ •μ΄λΌλŠ” 것에 쀑점을 λ‘” λ‚΄μš©μ΄μ—ˆλ‹€.
  • μ»΄ν¬λ„ŒνŠΈ ꡬ쑰λ₯Ό κ°œμ„ ν•˜κ±°λ‚˜ μƒνƒœ 관리λ₯Ό μ΅œμ ν™”ν•  λ•Œ μ΄λŸ¬ν•œ νŒ¨ν„΄μ„ μ μš©ν•˜λ©΄ μ½”λ“œμ˜ 가독성과 μž¬μ‚¬μš©μ„±μ΄ 크게 ν–₯μƒλœλ‹€. λ˜ν•œ, TDDλ₯Ό 톡해 κΉ¨λ—ν•œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ³Όμ •μ—μ„œ ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€κ°€ μ€‘μš”ν•œ 역할을 ν•œλ‹€λŠ” 점을 λ‹€μ‹œ κΉ¨λ‹¬μ•˜λ‹€. ν…ŒμŠ€νŠΈκ°€ μ½”λ“œ ν’ˆμ§ˆμ„ 보μž₯ν•˜κ³ , λ¦¬νŒ©ν† λ§μ„ μ‹œλ„ν•  λ•Œ λ‘λ €μ›Œν•˜μ§€ μ•Šκ²Œ λ„μ™€μ£ΌλŠ” μ‘°λ ₯자의 역할인 λ“― ν•˜λ‹€.
  • λ¦¬νŒ©ν† λ§ 방법에 λŒ€ν•΄μ„œ μ„€λͺ…ν•΄μ£ΌλŠ”λ° κ·Έ 쀑 '차이점 일치 μ‹œν‚€κΈ°'κ°€ λˆˆμ— λ„μ—ˆλ‹€. 보톡 μž‘μ—…μ„ ν•  λ•Œ λ°˜λ³΅μ„ 쀄이렀고 많이 λ…Έλ ₯을 ν•˜λŠ”λ°, κ·Έ λ•Œ λ§Žμ€ 도움이 될 것 κ°™λ‹€. 같은 κΈ°λŠ₯을 μΆ”μΆœν•˜κΈ° μœ„ν•΄μ„œ λΉ„μŠ·ν•œ κΈ°λŠ₯을 μ μ§„μ μœΌλ‘œ κ°™κ²Œ λ§Œλ“€λ©΄μ„œ μΆ”μΆœν•  뢀뢄을 μ°Ύμ•„κ°€λŠ” 방법이 μΈμƒμ μ΄μ—ˆλ‹€.
  • λ§ˆμ§€λ§‰ μž₯은 TDD μ „λ°˜μ— λŒ€ν•œ μ‘°μ–Έκ³Ό μ°Έκ³  사항이 λ‹΄κ²¨μžˆλ‹€. κ·Έ 쀑 ν”„λ‘œμ νŠΈ 도쀑에 TDDλ₯Ό μ μš©ν•  수 μžˆλ‚˜? 에 λŒ€ν•œ 닡변이 μžˆλ‹€. λ§Œμ•½ TDDλ₯Ό μ μš©ν•˜κΈ° μœ„ν•΄ μ½”λ“œλ₯Ό μž‘μ„±ν–ˆλ‹€κ°€ 였λ₯˜κ°€ λ‚œλ‹€λ©΄ 그것은 TDD λ•Œλ¬ΈμΈμ§€ μ•„λ‹ˆλ©΄ κ·Έλƒ₯ 였λ₯˜ λ•Œλ¬ΈμΈμ§€ μ•Œ 수 μ—†λŠ” 마치 λ‹­κ³Ό 달걀 문제처럼 λΆˆμ–΄λ‚˜κΈ° λ•Œλ¬Έμ— μš°μ„ μ€ λ²”μœ„λ₯Ό μ œν•œν•˜κ³  μ μš©ν•΄λ‚˜κ°€λΌλŠ” 쑰언이 인상 κΉŠμ—ˆλ‹€.

μ΅œλ‹€μΈ

  • 25μž₯ ν…ŒμŠ€νŠΈ 주도 개발 νŒ¨ν„΄ | ν…ŒμŠ€νŠΈ 주도 κ°œλ°œμ„ 잘 ν•˜κΈ° μœ„ν•œ 개발 νŒ¨ν„΄μ΄ λ‹΄κ²¨μžˆλ‹€. ν…ŒμŠ€νŠΈ λͺ©λ‘μ—μ„œ μ–΄λ–€ ν…ŒμŠ€νŠΈλ₯Ό λ¨Όμ € μž‘μ„±ν•΄μ•Όν•˜λŠ”μ§€, ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•Œ 단언을 κ°€μž₯ λ¨Όμ € μž‘μ„±ν•˜λŠ” 것, ν…ŒμŠ€νŠΈ λ‚΄μ˜ 데이터와 가독성을 λ†’μ΄λŠ” 것 λ“± μ„Έμ„Έν•œ νŒλ“€μ΄ λ‹΄κ²¨μžˆμ—ˆλ‹€.
  • 26μž₯ λΉ¨κ°„ λ§‰λŒ€ νŒ¨ν„΄ | ν•™μŠ΅ ν…ŒμŠ€νŠΈ, νšŒκ·€ ν…ŒμŠ€νŠΈ λ“± ν…ŒμŠ€νŠΈλ₯Ό μ μš©ν•  λ§Œν•œ λ‹€μ–‘ν•œ 상황이 μ†Œκ°œλ˜μ—ˆλ‹€. κ·ΈλŸ¬λ‹€ 26μž₯ λ§ˆμ§€λ§‰μ— λ‹€λ‹€λΌμ„œλŠ” 의자λ₯Ό 쒋은 것 μ“°λΌλŠ” λ‚΄μš©κΉŒμ§€ λ‚˜μ™”λ‹€. μ‹œμž‘μ€ ν…ŒμŠ€νŠΈ 주도 κ°œλ°œμ„ 잘 ν•˜κΈ° μœ„ν•œ 개발 νŒ¨ν„΄μ„ λ§ν•˜λ‹€κ°€, λ­”κ°€ λ§ˆμΈλ“œμ…‹ 등이 μ„žμ—¬ λ‚˜μ˜€λŠ” λŠλ‚Œ..πŸ€”
  • 27μž₯ ν…ŒμŠ€νŒ… νŒ¨ν„΄ | λͺ¨μ˜(mock) 객체, μ…€ν”„ μ…˜νŠΈ, ν¬λž˜μ‹œ ν…ŒμŠ€νŠΈ 더미 λ“±λ“± ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλŠ” μ½”λ“œ νŒ¨ν„΄λΆ€ν„°, 개인과 νŒ€μ—μ„œ ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ λ‹€μŒμ„ μœ„ν•΄ μ–΄λ–€ μ‹μœΌλ‘œ λ§ˆλ¬΄λ¦¬ν•˜λŠ”μ§€, 더 μž‘μ€ λ‹¨μœ„λ‘œ ν…ŒμŠ€νŠΈ μͺΌκ°œκΈ° λ“±μ˜ 개발 ν–‰μœ„μ— λŒ€ν•œ νŒ¨ν„΄κΉŒμ§€. μ—¬λŸ¬ 의미의 νŒ¨ν„΄λ“€μ΄ λ‹΄κ²¨μžˆλ‹€. μ „μžμ˜ μ½”λ“œ νŒ¨ν„΄λ“€μ€ μ‹€μ œλ‘œ μ‚¬μš©ν•΄λ³΄μ•˜κ±°λ‚˜, μœ μš©ν•˜κ³  μ‚¬μš©ν•  수 μžˆλŠ” λ“― ν•΄μ„œ μ’‹μ•˜λ‹€.
  • 28μž₯ 초둝 λ§‰λŒ€ νŒ¨ν„΄ | μ΄μ „μ˜ λ‹€λ₯Έ μž₯λ“€μ—μ„œ μ˜ˆμ œμ™€ ν•¨κ»˜ 쀑간 쀑간 λ“±μž₯ν–ˆλ˜ μ‚Όκ°μΈ‘λŸ‰, κ°€μ§œλ‘œ κ΅¬ν˜„ν•˜κΈ°, λͺ…λ°±νžˆ κ΅¬ν˜„ν•˜κΈ° λ“±μ˜ λ‚΄μš©μ„ λ‹€μ‹œ μ •λ¦¬λ˜μ–΄μžˆμ–΄ λ³΅μŠ΅ν•  수 μžˆμ—ˆλ‹€. μΆ”κ°€λ‘œ λ³€ν™” κ²©λ¦¬ν•˜κΈ°μ˜ λ‚΄μš©μ„ μ½μ—ˆλŠ”λ°, λ³€ν™”κ°€ μžˆμ„ λ•Œ 기쑴의 λ‚΄μš©κ³Ό λ³€ν™”ν•œ λ‚΄μš©μ„ λͺ¨λ‘ λ‚¨κ²¨λ‘λŠ” 뢀뢄도 μ‹ κΈ°ν–ˆλ‹€.
  • 29μž₯ xUnit νŒ¨ν„΄ | 2μž₯μ—μ„œ λ‚˜μ™”λ˜ xUnit의 ν˜•νƒœλ₯Ό λ„λŠ” ν…ŒμŠ€νŒ… ν”„λ ˆμž„μ›Œν¬λ“€μ—μ„œ, μ‹€μ§ˆμ μœΌλ‘œ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” νŒ¨ν„΄μ— λŒ€ν•΄ μ†Œκ°œν–ˆλ‹€. μ½”λ“œ μž‘μ„±λ²•μ— κ°€μž₯ κ°€κΉŒμš΄ λ‚΄μš©μΈ 것 κ°™λ‹€. ν…ŒμŠ€νŠΈμ—μ„œ μ‚¬μš©ν•˜λŠ” 단언, ν”½μŠ€μ²˜, μ˜ˆμ™Έ ν…ŒμŠ€νŠΈμ™€, ν…ŒμŠ€νŠΈλ“€μ„ ν•˜λ‚˜λ‘œ λ¬ΆλŠ” 것 등에 λŒ€ν•œ μ†Œκ°œκ°€ λ‚˜μ™”λŠ”λ°, ν˜„μž¬ μ‹€λ¬΄μ—μ„œ μ‚¬μš©ν•˜λŠ” μ—¬λŸ¬ ν…ŒμŠ€νŒ… ν”„λ ˆμž„μ›Œν¬μ—μ„œλ„ κ³΅ν†΅μ μœΌλ‘œ 확인할 수 μžˆμ–΄ λ‚΄μš©μ„ μ΄ν•΄ν•˜κΈ° μˆ˜μ›”ν–ˆλ‹€.
  • 30μž₯ λ””μžμΈ νŒ¨ν„΄ | λ””μžμΈ νŒ¨ν„΄μ€ μ˜›λ‚ μ— μž μ‹œ λ§›λ³΄κΈ°λ‘œ ν•™μŠ΅ ν•œ 적이 μžˆλŠ”λ°, λ„ˆλ¬΄ 이둠적이고 μ‹€μ§ˆμ μΈ 예제λ₯Ό ν•¨κ»˜ μ ‘ν•˜μ§€ λͺ»ν•΄μ„œ λ„ˆλ¬΄ μ–΄λ €μ› μ—ˆλ‹€. TDD κ΄€μ μ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•Œμ™€ λ¦¬νŒ©ν† λ§ ν•  λ•Œ 주둜 μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄λ“€μ΄ μ†Œκ°œλ˜μ—ˆλŠ”λ°, μ–΄λ– ν•œ λ§₯λ½μ—μ„œ ν•΄λ‹Ή νŒ¨ν„΄μ„ λ„μž…ν•΄μ•Όν•˜λŠ”μ§€ κ°„λž΅ν•œ μ„€λͺ…이 μžˆμ–΄ μ „λ³΄λ‹€λŠ” 쑰금 더 이해할 수 μžˆμ—ˆλ˜ 것 κ°™λ‹€. μ—¬μ „νžˆ 잘 λͺ¨λ₯΄κ² λŠ” 것도 있고 μ»΄ν¬μ§€νŠΈλ‚˜ νŒ©ν† λ¦¬μ™€ 같이 μ‹€λ¬΄μ—μ„œλ„ λΉ„μŠ·ν•œ 상황을 λ§ˆμ£Όν•΄μ„œ μ‘°κΈˆμ΄λ‚˜λ§ˆ μ΅μˆ™ν•΄μ§„ 것듀도 μžˆλ‹€. λ§ˆμ§€λ§‰μ— 싱글톀에 λŒ€ν•œ μ„€λͺ…이 제일 μž¬λ―Έμžˆλ‹€. μ „μ—­λ³€μˆ˜λ₯Ό μ–΄λ–»κ²Œ μ¨μ•Όν• κΉŒ? 쓰지 마라. λ‹€μŒ νŽ˜μ΄μ§€κ°€ μžˆλŠ” 쀄 μ•Œμ•˜λ‹€.🀣
  • 31μž₯ λ¦¬νŒ©ν† λ§ | TDDλ₯Ό ν•˜λ©° κΈ°λŠ₯듀을 λ¦¬νŒ©ν† λ§ν•˜λŠ” ꡬ체적인 방법을 μ•Œλ €μ€€λ‹€. TDD 상황 뿐만 μ•„λ‹ˆλΌ, 일반적인 ν”„λ‘œκ·Έλž˜λ° 과정에 μ μš©λ˜λŠ” λ‚΄μš©κ°™λ‹€. 차이점 μΌμΉ˜μ‹œν‚€κΈ°, 데이터 μ΄μ£Όμ‹œν‚€κΈ°, μΈν„°νŽ˜μ΄μŠ€ μΆ”μΆœ λ“± μƒλ‹Ήνžˆ ꡬ체적인 상황과 방식을 μ†Œκ°œν•˜λŠ”λ°, κ²°κ΅­ κ΄€μ‹¬μ‚¬μ˜ 뢄리λ₯Ό 잘 ν•˜κ³  좔상화 ν•˜λŠ” 과정인 것 κ°™λ‹€. ν‰μ†Œμ— κ°œλ°œμ„ ν•˜λ©΄ μžμ—°μŠ€λŸ½κ²Œ κ³ λ―Όν•˜λŠ” λΆ€λΆ„μ΄μ§€λ§Œ, μ΄λ ‡κ²Œ 방법에 이름을 λΆ™μ—¬μ„œ λ‚˜μ—΄ν•œ 것은 처음이라 μ‹ κΈ°ν•˜κΈ°λ„ ν–ˆλ‹€.
  • 32μž₯ TDD λ§ˆμŠ€ν„°ν•˜κΈ° | TDD λ„μž…μ— κ΄€ν•˜μ—¬ 고민해보아야 ν•  λ‹€μ–‘ν•œ 질문과, μ €μžμ˜ 생각을 확인할 수 μžˆλ‹€. TDDλ₯Ό λ„μž…ν•˜λŠ” 것이 κ²½μš°μ— λ”°λΌμ„œλŠ” μ΅œμ„ μ˜ 선택이 아닐 수 μžˆλ‹€λŠ” 것, TDD에 ν•œμ •μ μΈ 개발이 μ•„λ‹ˆλΌ λ‹€λ₯Έ 개발 방법둠듀과 μœ΅ν™”ν•  수 μžˆλŠ” 방법 λ“±, μ•žμœΌλ‘œμ˜ κ°œλ°œμ— μžˆμ–΄μ„œ TDDλ₯Ό 잘 ν™œμš©ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ μ§ˆλ¬Έλ“€λ‘œ λ§ˆλ¬΄λ¦¬ν–ˆλ‹€.

ν•œμ§€μ›

  • ν…ŒμŠ€νŠΈμ£Όλ„κ°œλ°œ νŒ¨ν„΄
    TDDλ₯Ό μˆ˜ν–‰ν•˜λŠ”λ° ν•„μš”ν•œ 정보와 과정이 κΈ€λ‘œ μžμ„Ένžˆ μ“°μ—¬μžˆμ–΄μ„œ 예제λ₯Ό 톡해 μ ‘ν•˜λŠ” κ²ƒκ³ΌλŠ” 또 λ‹€λ₯Έ 배움을 μ–»μ—ˆλ‹€. μžλ™ν™”λœ ν…ŒμŠ€νŠΈμ™€ 슀트레슀의 관계λ₯Ό λ‚΄κ°€ κ°œλ°œν• λ•Œ λ§Œλ‚˜λŠ” 상황듀에 λŒ€μž…ν•΄λ³΄λ‹ˆ TDDκ°€ μ™œ κ°•μ‘°λ˜λŠ”μ§€ μ•Œ 것 κ°™μ•˜λ‹€. ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” κ³Όμ •μ—μ„œ μ˜€λŠ” 뢀담이 μžˆμ—ˆλŠ”λ° 이 μ±…μ—μ„œ μ œμ‹œν•œ TDD의 원리λ₯Ό μ μš©ν•œλ‹€λ©΄ 였히렀 ν…ŒμŠ€νŠΈμ½”λ“œκ°€ to-do list 역할을 ν•΄μ£Όμ–΄ ν•΄μ•Όν•  일을 더 효율적으둜 관리할 수 있고, 결과적으둜 μž‘μ—…μ˜ μ™„μ„±λ„λŠ” μ˜¬λΌκ°€κ² λ‹€λŠ” 생각이 λ“€μ—ˆλ‹€. 책을 μ½μ„μˆ˜λ‘ TDD의 ν•„μš”μ„±μ΄ 더 ν™•μ‹€ν•΄μ§€κ³ μžˆλ‹€ πŸ˜„
  • λΉ¨κ°„λ§‰λŒ€ νŒ¨ν„΄
    μ„±μž₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨μ„ κ°œλ°œν•˜κΈ° μœ„ν•΄ λ°”λ‘œ μž‘μ„±ν•  수 μžˆλŠ” ν…ŒμŠ€νŠΈλΆ€ν„° μƒˆλ‘œμš΄ 무언가λ₯Ό 배울 수 μžˆλŠ” ν…ŒμŠ€νŠΈκΉŒμ§€ λ°œμ „μ‹œν‚€κΈ° / ν•œλ²ˆμ— ν•œ 문제만 ν•΄κ²°ν•˜κΈ°, κ·Έλ ‡κ²Œ ν•  수 μžˆλŠ” ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λŠ” κ²ƒμœΌλ‘œ μ‹œμž‘ν•˜κΈ° / ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό 톡해 μ„€λͺ…이 κ°€λŠ₯ν•˜λ„λ‘ ν•˜κΈ° / μ™ΈλΆ€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό ν…ŒμŠ€νŠΈμ½”λ“œλ‘œ μ‹œν—˜ν•΄λ³΄κΈ° / (νšŒκ·€ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•˜λ©°πŸ˜…) νšŒκ·€ν…ŒμŠ€νŠΈλ₯Ό 막을 수 있던 방법 κ³ μ•ˆν•΄λ³΄κΈ° / 지쳀을땐 νœ΄μ‹ν•˜κΈ° / λ‹€μ‹œ μ‹œλ„ν•˜κΈ° λ“± ν…ŒμŠ€νŠΈμ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” μ‹œμ λ§ˆλ‹€ μ–΄λ–»κ²Œ μ‹œμž‘ν•΄μ•Όν• μ§€ κ°€μ΄λ“œλ₯Ό 받은 μ±•ν„°μ˜€λ‹€.
  • ν…ŒμŠ€νŒ… νŒ¨ν„΄
    κ°œλ°œμ„ ν•˜λ©° λ§ˆμ£Όν•˜λŠ” 상황 별 ν…ŒμŠ€νŠΈ μΌ€μ΄μŠ€λ₯Ό μž‘μ„±ν•˜λŠ” 방법을 μ œμ‹œν•΄μ£ΌλŠ” νŒŒνŠΈμ˜€λ‹€. ν…ŒμŠ€νŠΈμ½”λ“œ μ˜ˆμ‹œλ₯Ό λ³Ό λ•Œ κ·Έ μ•ˆμ—μ„œ ν˜ΈμΆœν–ˆλ˜ ν•¨μˆ˜λ‚˜ 둜직의 μˆœμ„œκ°€ μ™œ κ·Έλ ‡κ²Œ μž‘μ„±λμ—ˆλŠ”μ§€ μ΄ν•΄λ˜μ—ˆλ‹€. μž‘μ—…μ„ μž μ‹œ 쀑단할 λ•Œ μ™„μ „νžˆ λλ‚˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μ€‘λ‹¨ν•˜κ³ , μΆ”ν›„ λ‹€μ‹œ μ‹œμž‘ν•  λ•Œ 더 빨리 μ‹œμž‘ν•  수 μžˆλ„λ‘ ν•˜λŠ” λ¦¬μ°¨λ“œ κ°€λΈŒλ¦¬μ—˜μ˜ νŠΈλ¦­μ€ λ‚˜μ—κ²Œ λ§Žμ€ 도움을 쀄 것 κ°™λ‹€.
  • 초둝 λ§‰λŒ€ νŒ¨ν„΄
    λΉ¨κ°„λ§‰λŒ€λ₯Ό κ°€λŠ₯ν•œ ν•œ 빨리 μ œκ±°ν•˜κΈ° μœ„ν•΄ μ½”λ“œκ°€ ν…ŒμŠ€νŠΈλ₯Ό "톡과"ν•˜κ²Œ ν•΄μ£ΌλŠ” νŒ¨ν„΄λ“€μ— λŒ€ν•΄ μ†Œκ°œλ˜μ–΄μžˆλ‹€. κΉ¨λ—ν•˜κ³  λͺ…λ°±ν•œ μ½”λ“œλ₯Ό λ°”λ‘œ κ΅¬ν˜„ν•  수 μžˆλŠ” 방법이 μ•„λ‹Œ μ΄ˆλ‘λ§‰λŒ€λ₯Ό μ–Όλ₯Έ λ§Œλ“€μ–΄λ†“κ³  κ°œλ°œμ„ μ΄μ–΄κ°ˆ 수 μžˆλŠ” 방법에 λŒ€ν•œ λ‚΄μš©μ΄λΌμ„œ μ²˜μŒλΆ€ν„° λͺ…λ°±ν•˜κ³  κΉ”λ”ν•œ μ½”λ“œλ₯Ό 짜기 μœ„ν•΄ μ‹œκ°„μ„ 쏟고, κ²°κ΅­ κ·Έ 방법이 μ˜¬λ°”λ₯΄μ§€ μ•Šμ•˜λ‹€λŠ” 것을 λ’€λŠ¦κ²Œ κΉ¨λ‹«λŠ” μˆœκ°„λ“€μ— 도움을 쀄 수 μžˆμ„ 것이라고 μƒκ°ν–ˆλ‹€.
  • xUnit νŒ¨ν„΄
    xUnit ν”„λ ˆμž„μ›Œν¬μ™€ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλŠ” νŒ¨ν„΄ν™”λœ ν…ŒμŠ€νŒ… 기법을 μ œμ‹œν•΄μ£Όκ³ μžˆλ‹€. μ—¬λŸ¬ ν…ŒμŠ€νŠΈμ— 걸쳐 λ™μΌν•˜κ²Œ 객체λ₯Ό μ„ΈνŒ…ν•˜λŠ” μ½”λ“œλ₯Ό ν”½μŠ€μ³λΌκ³  λΆ€λ₯΄λ©° setup λ©”μ„œλ“œλ‚΄μ—μ„œ μ΄ˆκΈ°ν™”μ‹œμΌœμ£ΌλŠ” 기법, ν…ŒμŠ€νŠΈ μ „κ³Ό ν›„μ˜ μ™ΈλΆ€ 세계가 λ™μΌν•˜κ²Œ μœ μ§€λ˜κ²Œ ν•˜κΈ° μœ„ν•΄ ν…ŒμŠ€νŠΈ μ’…λ£Œ μ‹œμ μ— tearDown이 ν˜ΈμΆœλœλ‹€λŠ” 점, ν…ŒμŠ€νŠΈ λ©”μ„œλ“œ μž‘μ„± νŒ¨ν„΄, μ˜ˆμ™Έν…ŒμŠ€νŠΈ 방법에 λŒ€ν•΄ μ œμ‹œν•΄μ€€λ‹€.
  • λ””μžμΈ νŒ¨ν„΄
    μ—¬λŸ¬ μ’…λ₯˜μ˜ λ””μžμΈ νŒ¨ν„΄μ΄ TDD μˆ˜ν–‰μ˜ μ–΄λ–€ 단계에 μ‚¬μš©λ˜λŠ”μ§€ λΆ„λ₯˜λ˜μ–΄μžˆλ‹€. λ§ˆμ§€λ§‰ νŽ˜μ΄μ§€μ˜ 싱글톀 기법에 λŒ€ν•œ μ„€λͺ…은 κ°€μž₯ μ§§μ•˜μ§€λ§Œ λ‡Œλ¦¬μ— λ°•ν˜”λ‹€ 😁
  • λ¦¬νŒ©ν† λ§
    TDDλ₯Ό ν•˜λ©° λ¦¬νŒ©ν† λ§μ„ ν•˜λŠ” 방법듀을 μ œμ‹œν•΄μ€€λ‹€. ν…ŒμŠ€νŠΈμ½”λ“œκ°€ μ •κ΅ν•˜κ²Œ μž‘μ„±λ˜μ–΄μžˆλ‹€λ©΄ 거침없이 λ¦¬νŒ©ν† λ§μ„ ν•  수 μžˆλ‹€λŠ” 것이 TDD의 큰 μž₯점이라고만 μƒκ°ν•΄μ™”μ—ˆλ‹€. ν•΄λ‹Ή λ‚΄μš©μ„ μ½μœΌλ‹ˆ λ¦¬νŒ©ν† λ§μ„ 진행할 λ•Œ κ³ λ―Όν•΄μ•Όν•  λ‚΄μš©κ³Ό μ—¬λŸ¬ 방법듀이 μžˆλ‹€λŠ” 것을 μ•Œ 수 μžˆμ—ˆλ‹€.
  • TDD λ§ˆμŠ€ν„°ν•˜κΈ°
    TDDλ₯Ό κ³΅λΆ€ν•˜λ©° 또 μ§„ν–‰ν•˜λ©° μƒκΈ°λŠ” μ—¬λŸ¬κ°€μ§€ μ˜λ¬Έμ λ“€κ³Ό 그에 λŒ€ν•œ 닡변을 μ œμ‹œν•΄μ£Όλ©° 이 μ±…μ˜ 주제인 TDD에 λŒ€ν•΄ μ •λ¦¬ν•΄μ£ΌλŠ” νŒŒνŠΈμ˜€λ‹€. TDDλŠ” λˆ„κ΅¬λ₯Ό μœ„ν•œ 것인가? λΌλŠ” μ§ˆλ¬Έμ— λŒ€ν•œ λ‚΄μš©μ΄ κ°€μž₯ μΈμƒκΉŠμ—ˆλ‹€. TDDκ°€ λͺ¨λ“  것을 ν•΄κ²°ν•΄μ£ΌλŠ” 것도 μ•„λ‹ˆκ³  λ“€μ΄λŠ” μˆ˜κ³ μ— λΉ„λ‘€ν•˜μ—¬ 그만큼의 결함을 ν•΄κ²°ν•΄μ£ΌλŠ” 것도 μ•„λ‹ˆμ§€λ§Œ μž₯기적인 κ΄€μ μ—μ„œ 봀을 λ•Œ κ°œλ°œμžμ™€ μž‘μ—…λ¬Ό λͺ¨λ‘μ—κ²Œ 긍정적인 영ν–₯을 쀄 수 μžˆλŠ” ν–‰μœ„μΌ κ²ƒμ΄λΌλŠ” λ‚΄μš©μ— 곡감이 λ˜μ—ˆλ‹€.