λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
🍎 iOS

[Unit Test] Test Double

by ν‹΄λ”” 2023. 4. 14.
728x90
λ°˜μ‘ν˜•

 

  • Unit Testλ₯Ό μ§„ν–‰ν•˜λŠ” λ™μ•ˆ requestκ°€ λ°œμƒν•˜λ©΄ λ°μ΄ν„°λ² μ΄μŠ€μ˜ 영ν–₯을 λ°›κ²Œ 됨. μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ” κΈ°λŠ₯을 가진 λ‘œμ§μ„ μž‘μ„±ν–ˆλ‹€ ν•˜λ”λΌλ„ 데이터 베이슀의 μƒνƒœμ— 따라 ν…ŒμŠ€νŠΈ κ²°κ³Όκ°€ λ‹€λ₯΄κ²Œ λ‚˜μ˜¬ κ°€λŠ₯성이 있음
  • Unit TestλŠ” λΉ λ₯΄κ³  μ•ˆμ •μ μœΌλ‘œ μ§„ν–‰λ˜μ–΄μ•Ό 함
  • μ•ˆμ •μ„± 외에도 μ‹€μ œ μ„œλ²„μ™€ ν†΅μ‹ ν•˜κ²Œ 되면 λ‹¨μœ„ ν…ŒμŠ€νŠΈ 속도가 느렀짐
  • ν…ŒμŠ€νŠΈν•˜λ €λŠ” 객체가 μ§μ ‘μ μœΌλ‘œ λ„€νŠΈμ›Œν‚Ή ν•˜μ§€ μ•Šκ³  ν…ŒμŠ€νŠΈ ν•  λ•Œ λŒ€μ‹  μ‚¬μš©ν•  수 μžˆλŠ” 객체λ₯Ό ν…ŒμŠ€νŠΈ 더블이라고 함

 

Dummy

  • μΈμŠ€ν„΄μŠ€ 객체가 ν•„μš”ν•˜μ§€λ§Œ κΈ°λŠ₯은 ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ” 객체 => 전달은 λ˜μ§€λ§Œ μ‚¬μš©λ˜μ§€ μ•ŠμŒ
  • μ•„λ¬΄λŸ° λ™μž‘μ„ ν•˜μ§€ μ•Šμ•„λ„ ν…ŒμŠ€νŠΈμ— 영ν–₯을 λ―ΈμΉ˜μ§€ μ•ŠλŠ” 객체

 

Fake

  • 객체 λ‚΄λΆ€μ—μ„œ ν•„μš”λ‘œ ν•˜λŠ” λ‹€λ₯Έ μ™ΈλΆ€ 객체의 λ™μž‘μ„ λ‹¨μˆœν™” ν•΄μ„œ κ΅¬ν˜„ν•œ κ°μ²΄μ΄μ§€λ§Œ μ‹€μ œ ν”„λ‘œλ•νŠΈμ—μ„œλŠ” μ‚¬μš©λ˜μ§€ μ•ŠλŠ” 객체
  • μ‹€μ œ 객체와 λ™μΌν•œ μ—­ν™œμ„ ν•˜λ„λ‘ λ§Œλ“€μ–΄ μ‚¬μš©ν•¨
  • κ°€μ§œ λ°μ΄ν„°λ² μ΄μŠ€ 객체λ₯Ό λ§Œλ“€μ–΄ μ‚¬μš©ν•˜κΈ°λ„ 함

 

Stub

  • Dummy 객체가 μ‹€μ œλ‘œ λ™μž‘ν•˜λŠ” 것 처럼 보이게 λ§Œλ“€μ–΄ 놓은 객체
  • μΈν„°νŽ˜μ΄μŠ€ λ˜λŠ” κΈ°λ³Έ 클래슀λ₯Ό μ΅œμ†Œν•œμœΌλ‘œ κ΅¬ν˜„ν•΄ 놓은 μƒνƒœ
  • ν…ŒμŠ€νŠΈμ—μ„œ 호좜된 μš”μ²­μ— λŒ€ν•΄ 미리 μ€€λΉ„ν•΄λ‘” κ²°κ³Όλ₯Ό 제곡
  • ν…ŒμŠ€νŠΈλ₯Ό μœ„ν•΄ μ˜λ„ν•œ 결과만 λ°˜ν™˜λ˜λ„λ‘ ν•œ 객체가 Stub

 

Spy

  • Stub μ—­ν™œ + 호좜된 λ‚΄μš©μ— λŒ€ν•΄ μ•½κ°„μ˜ 정보 기둝
  • 자기 μžμ‹ μ΄ ν˜ΈμΆœλ˜μ—ˆμ„ λ•Œ 확인이 ν•„μš―λ‚˜ 뢀뢄을 κΈ°λ‘ν•˜λ„λ‘ κ΅¬ν˜„ν•¨
  • μ‹€μ œ κ°μ²΄λ‘œλ„ μ‚¬μš©κ°€λŠ₯, Stub κ°μ²΄λ‘œλ„ ν™œμš© κ°€λŠ₯

 

Mock

  • ν˜ΈμΆœμ— λŒ€ν•œ κΈ°λŒ€ λͺ…μ„Έν•˜κ³  λ‚΄μš©μ— 따라 λ™μž‘ν•˜λ„λ‘ ν”„λ‘œκ·Έλž˜λ° 된 객체 
  • ν˜ΈμΆœμ— λŒ€ν•΄ μ˜ˆμƒν•œ κ²°κ³Όλ₯Ό 받을 수 μžˆλ„λ‘ 미리 ν”„λ‘œκ·Έλž¨λœ 객체

 

μ°Έκ³  μ‚¬μ΄νŠΈ 및 λ„μ„œ

https://tecoble.techcourse.co.kr/post/2020-09-19-what-is-test-double/

http://xunitpatterns.com/Test%20Double.html

https://techblog.woowahan.com/2704/

728x90
λ°˜μ‘ν˜•

λŒ“κΈ€