Skip to content

yejineee/TDD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

14 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ“• Test-Driven Development : By Example

  • μΌ„νŠΈ λ°± μ§€μŒ

πŸ—£ About TDD

  • ν…ŒμŠ€νŠΈ 주도 κ°œλ°œμ—μ„œμ˜ κ·œμΉ™ 두 가지

    • 였직 μžλ™ν™”λœ ν…ŒμŠ€νŠΈκ°€ μ‹€νŒ¨ν•  κ²½μš°μ—λ§Œ μƒˆλ‘œμš΄ μ½”λ“œλ₯Ό μž‘μ„±ν•œλ‹€.
    • 쀑볡을 μ œκ±°ν•œλ‹€.
  • ν”„λ‘œκ·Έλž˜λ° μˆœμ„œ

    • λΉ¨κ°• : μ‹€νŒ¨ν•˜λŠ” μž‘μ€ ν…ŒμŠ€νŠΈ μž‘μ„±ν•œλ‹€. 컴파일쑰차 λ˜μ§€ μ•Šμ„ 수 μžˆλ‹€.
    • 초둝 : 빨리 ν…ŒμŠ€νŠΈκ°€ ν†΅κ³Όν•˜κ²Œλ” ν•œλ‹€.
    • λ¦¬νŒ©ν† λ§ : λͺ¨λ“  쀑볡을 μ œκ±°ν•œλ‹€.

1️⃣ Chapter 1 - 화폐 예제

  • TDD의 리듬
    • λΉ λ₯΄κ²Œ ν…ŒμŠ€νŠΈ μΆ”κ°€ν•œλ‹€.
    • λͺ¨λ“  ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³ , μƒˆλ‘œ μΆ”κ°€ν•œ 것이 μ‹€νŒ¨ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.
    • μ½”λ“œλ₯Ό 쑰금 λ°”κΎΌλ‹€..
    • λͺ¨λ“  ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  μ „λΆ€ μ„±κ³΅ν•˜λŠ”μ§€ ν™•μΈν•œλ‹€.
    • λ¦¬νŒ©ν† λ§μ„ ν†΅ν•œ 쀑볡을 μ œκ±°ν•œλ‹€.

⚑️ 1μž₯ - 닀쀑 톡화λ₯Ό μ§€μ›ν•˜λŠ” Money 객체

1. ν…ŒμŠ€νŠΈλΆ€ν„° μž‘μ„±ν•˜κΈ°

  • ν…ŒμŠ€νŠΈλ₯Ό μž‘μ„±ν•  λ•ŒλŠ” μ˜€νΌλ ˆμ΄μ…˜μ˜ μ™„λ²½ν•œ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄ μƒμƒν•΄λ³΄λŠ” 것이 μ’‹λ‹€.
  • κ°€λŠ₯ν•œ μ΅œμ„ μ˜ APIμ—μ„œ μ‹œμž‘ν•΄μ„œ 거꾸둜 μž‘μ—…ν•œλ‹€.

2. 1μž₯μ—μ„œ μ‹€ν–‰ν•œ TDD의 μˆœμ„œ

  • μž‘μ—…ν•΄μ•Ό ν•  ν…ŒμŠ€νŠΈ λͺ©λ‘ λ§Œλ“ λ‹€.
  • μ˜€νΌλ ˆμ΄μ…˜μ΄ μ™ΈλΆ€μ—μ„œ μ–΄λ–»κ²Œ 보이길 μ›ν•˜λŠ”μ§€λ₯Ό μ½”λ“œλ‘œ ν‘œν˜„ν•œλ‹€.
  • μŠ€ν… κ΅¬ν˜„μ„ 톡해 ν…ŒμŠ€νŠΈλ₯Ό μ»΄νŒŒμΌν•œλ‹€.
    • μŠ€ν… : λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λŠ” μ½”λ“œκ°€ 컴파일 될 수 μžˆλ„λ‘ 껍데기만 λ§Œλ“œλŠ” 것.
  • 무쑰건 ν…ŒμŠ€νŠΈμ— ν†΅κ³Όμ‹œν‚€λ„λ‘ ν•œλ‹€.
  • μƒμˆ˜λ₯Ό λ³€μˆ˜λ‘œ λ³€κ²½ν•˜μ—¬, μ μ§„μ μœΌλ‘œ μΌλ°˜ν™”ν•œλ‹€.
  • μƒˆλ‘œμš΄ ν•  일을 ν•œ λ²ˆμ— μ²˜λ¦¬ν•˜λŠ” λŒ€μ‹ , ν•  일 λͺ©λ‘μ— μΆ”κ°€ν•˜κ³  λ„˜μ–΄κ°„λ‹€.

3. μž‘μ€ 단계λ₯Ό λ°Ÿμ„ λŠ₯λ ₯을 κ°–μΆ”λŠ” κ²ƒμ˜ μ€‘μš”μ„±

  • μž‘μ€ 단계λ₯Ό μ—°μŠ΅ν•˜λ©΄μ„œ, λ‚˜μ—κ²Œ μž‘μ€ 단계λ₯Ό λ°Ÿμ„ λŠ₯λ ₯이 μžˆλ‹€λŠ” 것을 λŠλ‚„ 수 μžˆλ‹€.
  • μž‘μ€ λ‹¨κ³„λ‘œ μž‘μ—…ν•˜λŠ” 방법을 배우면, μ €μ ˆλ‘œ μ μ ˆν•œ 크기의 λ‹¨κ³„λ‘œ μž‘μ—…ν•  수 있게 λœλ‹€.

⚑️ 2μž₯ - νƒ€λ½ν•œ 객체

1. λ‚˜λˆ„μ–΄μ„œ μ •λ³΅ν•˜κΈ°

λͺ©ν‘œλŠ” μž‘λ™ν•˜λŠ” κΉ”λ”ν•œ μ½”λ“œλ₯Ό μ–»λŠ” 것이닀. 이 λͺ©ν‘œλŠ” λ„λ‹¬ν•˜κΈ° μ–΄λ €μš°λ―€λ‘œ, 일단 Divide and Conquerλ₯Ό ν•΄λ³΄μž.

  • μš°μ„ , μž‘λ™ν•˜λŠ” μ½”λ“œλ₯Ό λ¨Όμ € μ •λ³΅ν•˜κ³ , κΉ”λ”ν•œ μ½”λ“œλ‘œ λ§Œλ“œλŠ” 것이닀.

2. μΈν„°νŽ˜μ΄μŠ€μ™€ ν…ŒμŠ€νŠΈμ˜ μˆ˜μ •

μƒˆλ‘œμš΄ ν…ŒμŠ€νŠΈλ₯Ό ν•˜λ €κ³  ν–ˆμ„ λ•Œ, 기쑴의 μΈν„°νŽ˜μ΄μŠ€μ™€ ν…ŒμŠ€νŠΈλ₯Ό μˆ˜μ •ν•΄μ•Όν•  수 μžˆλ‹€. 문제될 것은 μ—†λ‹€!

  • μ–΄λ–€ κ΅¬ν˜„μ΄ μ˜¬λ°”λ₯Έκ°€μ— λŒ€ν•œ 좔츑이 μ™„λ²½ν•˜μ§€ λͺ»ν•œ 것과 λ§ˆμ°¬κ°€μ§€λ‘œ, μ˜¬λ°”λ₯Έ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•œ μΆ”μΈ‘ μ—­μ‹œ μ™„λ²½ν•˜μ§€ λͺ»ν•˜λ‹€. => κ·ΈλŸ¬λ―€λ‘œ, μˆ˜μ •μ„ κ±°λ“­ν•  수 μžˆλ‹€.

3. λŠλ‚Œμ„ ν…ŒμŠ€νŠΈλ‘œ λ³€ν™˜ν•˜κΈ°

  • λΆ€μž‘μš©μ— λŒ€ν•œ λŠλ‚Œμ„ ν…ŒμŠ€νŠΈλ‘œ λ³€ν™˜ν•˜λŠ” 것은 TDD의 일반적인 μ£Όμ œμ΄λ‹€.
  • 일단 μ˜¬λ°”λ₯Έ ν–‰μœ„μ— λŒ€ν•œ 결정을 λ‚΄λ¦° 후에, κ·Έ ν–‰μœ„λ₯Ό μ–»μ–΄λ‚Ό 수 μžˆλŠ” μ΅œμƒμ˜ 방법에 λŒ€ν•΄ 이야기할 수 μžˆλ‹€.

4. 2μž₯μ—μ„œ μ‹€ν–‰ν•œ TDD

  • μ„€κ³„μƒμ˜ 결함을 κ·Έ κ²°ν•¨μœΌλ‘œ 인해 μ‹€νŒ¨ν•˜λŠ” ν…ŒμŠ€νŠΈλ‘œ λ³€ν™˜ν–ˆλ‹€.
  • μŠ€ν… κ΅¬ν˜„μœΌλ‘œ 컴파일이 될 수 μžˆλ„λ‘ ν•œλ‹€.
  • μ˜¬λ°”λ₯΄λ‹€κ³  μƒκ°ν•˜λŠ” μ½”λ“œλ₯Ό μž‘μ„±ν•˜μ—¬ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•œλ‹€.

λŠλ‚€μ 

  • μš°μ„  μž‘λ™ν•˜κ²Œ λ§Œλ“€κΈ°

    κ·Έλ™μ•ˆ λ‚˜λŠ” κΉ”λ”ν•œ μ½”λ“œλ₯Ό λ¨Όμ € μž‘μ„±ν•˜κΈ° μœ„ν•΄ κ³ κ΅°λΆ„νˆ¬ν•œ 것 κ°™λ‹€. μ²˜μŒλΆ€ν„° κΉ”λ”ν•˜κΈ°λž€ λ„ˆλ¬΄ μ–΄λ €μš΄ κ²ƒμ΄μ—ˆλ‹€. μš°μ„  μž‘λ™ν•˜λŠ” μ½”λ“œλ₯Ό λ¨Όμ € λ§Œλ“€κ³  λ‚œ 후에, κΉ”λ”ν•œ μ½”λ“œλ‘œ λ§Œλ“œλŠ” 것이 λ°©λ²•μ΄λΌλŠ” 것을 μ•Œκ²Œλ˜μ—ˆλ‹€.

  • λͺ©ν‘œλ₯Ό μ„€μ •ν•˜κΈ°

    ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό λ¨Όμ € μž‘μ„±ν•˜λŠ” μ΄μœ κ°€, "μ˜¬λ°”λ₯Έ ν–‰μœ„"와, "μ›ν•˜λŠ” μΈν„°νŽ˜μ΄μŠ€"λ₯Ό λ¨Όμ € μ •μ˜ν•΄μ•Ό, κ·Έ 방법에 λŒ€ν•΄ 생각해볼 수 μžˆλ‹€λŠ” 것을 μ•Œκ²Œ λ˜μ—ˆλ‹€. μ›ν•˜λŠ” λ°”λ₯Ό λͺ…ν™•ν•˜κ²Œ μ„€μ •ν•˜κ³ , 그것을 μ–»μ–΄λ‚΄κΈ° μœ„ν•Έ 길을 μ°Ύμ•„λ‚΄μ•Ό ν•˜λŠ” 것 κ°™λ‹€.

  • μˆ˜μ •ν•˜λŠ” 것에 λŒ€ν•œ 두렀움 μ—†μ• κΈ°

    μ²˜μŒλΆ€ν„° μ™„λ²½ν•œ κ΅¬ν˜„μ„ ν•˜λŠ” 것은 μ—†λŠ” 것 κ°™λ‹€. κ΅¬ν˜„μ„ ν•˜λŠ” μ‹œκΈ°μ—λŠ” 쒋은 섀계λ₯Ό μœ„ν•œ 고민을 ν•΄μ•Ό ν•œλ‹€. ν•˜μ§€λ§Œ, λ³€ν™”λ₯Ό μ£Όμ–΄μ•Ό ν•  λ•ŒλŠ” μ΄μ „μ˜ κ΅¬ν˜„μ—μ„œμ˜ 잘λͺ»μ„ μΈμ •ν•˜κ³  μˆ˜μ •ν•  수 μžˆμ–΄μ•Ό ν•˜λŠ” 것 κ°™λ‹€. ν…ŒμŠ€νŠΈμ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μˆ˜μ •ν•˜λŠ” 것은 μ΄μƒν•œ 일이 μ•„λ‹ˆμ—ˆλ‹€.

About

Study Test Driven Development πŸ„

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published