[TDD] 2. Android Testing

Choi Sang RokΒ·2022λ…„ 5μ›” 2일
0

https://velog.io/@evergreen_tree/TDD-1.-TDD%EB%9E%80 μ—μ„œ μ΄μ–΄μ§‘λ‹ˆλ‹€.


πŸ’β€β™‚οΈΒ μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œ μ–΄λ– ν•œ κΈ°λŠ₯을 κ°œλ°œν•  λ•Œ, 예λ₯Ό λ“€μ–΄ bmi calculatorλ₯Ό κ°œλ°œν•œλ‹€κ³  생각해 λ΄…μ‹œλ‹€.

  1. bmi calculatorκ°€ λ™μž‘ν•˜λ„λ‘ λ‘œμ§μ„ μž‘μ„±ν•œ ν›„, 앱을 μ‹€ν–‰μ‹œμΌœ μ˜¬λ°”λ₯Έ κ²°κ³Ό 값이 λ‚˜μ˜€λŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.
  2. μ›ν•˜λŠ” κ²°κ³Ό 값이 λ‚˜μ˜€μ§€ μ•Šμ„ λ•Œ λ””λ²„κΉ…μ΄λ‚˜, 둜그λ₯Ό ν™œμš©ν•˜μ—¬ κ²°κ³Όλ₯Ό λ„μΆœν•΄ λƒ…λ‹ˆλ‹€.

μœ„μ˜ λ°©μ‹μœΌλ‘œ κ°œλ°œμ„ μ§„ν–‰ν•˜λ©΄ μž‘μ€ 규λͺ¨μ˜ ν”„λ‘œμ νŠΈμ—λŠ” 상관이 없을 지 λͺ¨λ¦…λ‹ˆλ‹€. 그런데 bmi calculatorλΌλŠ” κΈ°λŠ₯을 μ–΄λ–€ κΈ°μ—…μ˜ λŒ€κ·œλͺ¨ μ‹œμŠ€ν…œμ— μΆ”κ°€ν•΄μ•Ό ν•œλ‹€λ©΄? ν•΄λ‹Ή κΈ°λŠ₯κΉŒμ§€ μ°Ύμ•„κ°€μ•Ό ν•˜λŠ” μ‹œκ°„κ³Ό, λΉŒλ“œ μ‹œκ°„μœΌλ‘œ 인해 μƒλ‹Ήνžˆ λΉ„νš¨μœ¨μ μΌ κ²ƒμž…λ‹ˆλ‹€.

TDD 기반 κ°œλ°œμ€ μœ„μ²˜λŸΌ μ•±μ˜ 규λͺ¨κ°€ 컀질수둝 λ”μš± 두각을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€. 이전 ν¬μŠ€νŒ…μ—μ„œλŠ” TDD에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜κ³ , 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œμ˜ TestλŠ” 어떀지 μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.



πŸ’‘μ•ˆλ“œλ‘œμ΄λ“œμ—μ„œμ˜ Test?


β›ͺΒ Local Test (Unit Test)

ν”„λ ˆμž„μ›Œν¬μ™€λŠ” λ³„κ°œλ‘œ μ½”ν‹€λ¦° μ½”λ“œλ‘œ μΆ©λΆ„νžˆ μˆ˜ν–‰ν•  수 μžˆλŠ” ν…ŒμŠ€νŠΈ.

ν…ŒμŠ€νŠΈ μ‹œκ°„μ„ μ΅œμ†Œν™” ν•˜κΈ° μœ„ν•΄ JVM μ—μ„œ 둜컬둜 μ‹€ν–‰ν•˜λ„λ‘ 컴파일 λ©λ‹ˆλ‹€.

🌍 Android Test (Instrumentation Test)

Android ν”„λ ˆμž„μ›Œν¬μ™€ μ—°κ΄€λ˜μ–΄ λ™μž‘λ˜λŠ” μ½”λ“œλ“€μ„ μˆ˜ν–‰ν•  수 μžˆλŠ” ν…ŒμŠ€νŠΈ.

μ•ˆλ“œλ‘œμ΄λ“œ λ””λ°”μ΄μŠ€λ₯Ό μ΄μš©ν•œ ν…ŒμŠ€νŠΈλ‘œ 쉽고, 둜컬 ν…ŒμŠ€νŠΈμ—μ„œ μΊμΉ˜ν•  수 μ—†λŠ” 점을 검증할 수 μžˆμœΌλ‚˜ ν…ŒμŠ€νŠΈ 속도가 λŠλ¦½λ‹ˆλ‹€.

μ‹€μ œλ‘œ μ•ˆλ“œλ‘œμ΄λ“œ ν”„λ‘œμ νŠΈλ₯Ό μƒμ„±ν•˜λ©΄ 기본적으둜 μ•„λž˜ νŒ¨ν‚€μ§€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

  1. android test
  2. local test

λͺ©μ μ— λ§žλŠ” νŒ¨ν‚€μ§€μ—μ„œ ν…ŒμŠ€νŒ… 클래슀λ₯Ό μ •μ˜ν•˜κ³ , ν…ŒμŠ€νŠΈλ₯Ό 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.



πŸš©Β ν…ŒμŠ€νŒ… μ „λž΅


TDDμ—μ„œ μž₯점 쀑 ν•˜λ‚˜μΈ, β€œν…ŒμŠ€νŠΈ μ½”λ“œ 자체둜 λ¬Έμ„œκ°€ 될 수 μžˆλ‹€β€ κ°€ μ§€μΌœμ§€κΈ° μœ„ν•΄μ„œλŠ”, 가독성이 쒋은 ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

ν…ŒμŠ€νŠΈ 클래슀, ν•¨μˆ˜ 넀이밍

μ—¬λŸ¬ 넀이밍 κ·œμΉ™λ“€μ΄ μžˆμœΌλ‚˜, ν†΅μƒμ μœΌλ‘œ μ‚¬μš©λ˜λŠ” ν…œν”Œλ¦Ώμž…λ‹ˆλ‹€.

  • 클래슀 : ExampleTest

    Example : 클래슀 이름


  • λ©”μ„œλ“œ : subjectUnderTest_actionOrInput_resultState

    subjectUnderTest : ν…ŒμŠ€νŠΈ λŒ€μƒμ΄ λ˜λŠ” ν΄λž˜μŠ€λ‚˜ ν•¨μˆ˜λͺ…

    actionOrInput : ν…ŒμŠ€νŠΈμ—μ„œμ˜ action λ˜λŠ” input

    resultState : μž‘μ„±ν•œ ν…ŒμŠ€νŒ… ν•¨μˆ˜μ—μ„œμ˜ κΈ°λŒ€κ°’(Then)


ν•¨μˆ˜ μž‘μ„± μ „λž΅

Given

  • ν…ŒμŠ€νŠΈμ—μ„œ κ΅¬μ²΄ν™”ν•˜κ³ μž ν•˜λŠ” 행동을 μ‹œμž‘ν•˜κΈ° μ „ ν…ŒμŠ€νŠΈ μƒνƒœλ₯Ό μ„€λͺ…ν•©λ‹ˆλ‹€. 주둜 데이터와 객체의 μ΄ˆκΈ°ν™”κ°€ 이루어 μ§‘λ‹ˆλ‹€.

When

  • κ΅¬μ²΄ν™”ν•˜κ³ μž ν•˜λŠ” 행동을 λ§ν•©λ‹ˆλ‹€. 주둜 객체, 데이터에 ν…ŒμŠ€νŠΈ ν•  ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ μƒνƒœ λ³€ν™”λ₯Ό μœ λ„ν•©λ‹ˆλ‹€.

Then

  • μ–΄λ– ν•œ νŠΉμ •ν•œ ν–‰λ™μœΌλ‘œ 인해 λ³€ν™”λœ 값이 μ˜ˆμƒλœ κ°’κ³Ό λ§žλŠ” 지 μ²΄ν¬ν•©λ‹ˆλ‹€.

λ‹€μŒ μ‹œλ¦¬μ¦ˆμ—μ„œλŠ” ν…ŒμŠ€νŠΈ μ½”λ“œλ₯Ό 직접 μž‘μ„±ν•΄ λ³΄λ©΄μ„œ Testing에 λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

참고 자료
https://velog.io/@l2hyunwoo/Testing-Basics

profile
android_developer

3개의 λŒ“κΈ€

comment-user-thumbnail
2022λ…„ 5μ›” 2일

bmi calculatorλŠ” 절 저격 ν•œκ±΄κ°€μš”? μ € λ‹€μ΄μ–΄νŠΈ ν•˜λΌλŠ” λ§μΈκ°€μš”? μ‚¬κ³Όν•˜μ„Έμš§

λ‹΅κΈ€ 달기
comment-user-thumbnail
2022λ…„ 5μ›” 3일

He is chinese

λ‹΅κΈ€ 달기
comment-user-thumbnail
2022λ…„ 5μ›” 6일

He is my boyfriend

λ‹΅κΈ€ 달기