[Android] 단위테스트

정상준·2023년 1월 27일
0
post-thumbnail

📚 단위테스트

테스트 코드는 사용자가 사용할 수 있는 기능엔 영향을 끼치지 않지만 APK 크기에 영향을 끼치므로 단위 테스트 코드가 APK 파일에 포함되는 것은 좋지 않습니다. 테스트 코드에 필요한 종속 항목도 마찬가지입니다. 이렇게 하려면 구성이 로컬 테스트 소스 코드에는 적용되지만 애플리케이션 코드에는 적용되지 않는다고 나타내는 testImplementation 구성을 사용하세요. (Implementation 🙅‍♂️)

✏️ 테스트 분류

아주 기본적인 수준에서 테스트는 성공 경로, 오류 경로, 경계 사례라는 세 가지 시나리오로 분류할 수 있습니다.

  • 성공 경로: 성공 경로 테스트(행복한 경로 테스트라고도 함)는 긍정적인 흐름의 기능 테스트에 집중합니다. 긍정적인 흐름은 예외나 오류 조건이 없는 흐름입니다. 오류 경로 및 경계 사례 시나리오에 비해 성공 경로 시나리오는 전체 목록을 만들기 쉽습니다. 앱의 의도된 동작에 초점을 맞추기 때문입니다.
  • 오류 경로: 오류 경로 테스트는 부정적인 흐름의 기능 테스트, 즉 앱이 오류 조건 또는 잘못된 사용자 입력에 어떻게 응답하는지 확인하는 데 초점을 맞춥니다. 가능한 오류 흐름을 모두 파악하기란 매우 어렵습니다. 의도된 동작이 실행되지 않을 때 발생할 수 있는 결과가 많기 때문입니다.
  • 경계 사례: 경계 사례는 앱의 경계 조건을 테스트하는 데 초점을 맞춥니다. Unscramble 앱에서 경계는 앱이 로드될 때의 UI 상태와 사용자가 최대 단어 수를 재생한 후의 UI 상태를 확인하는 것입니다.

✏️ 테스트 만들기

좋은 단위 테스트에는 일반적으로 다음 4가지 특성이 있습니다.

  • 집중: 코드 조각과 같은 단위를 테스트하는 데 중점을 두어야 합니다. 이 코드 조각은 대부분 클래스 또는 메서드입니다. 테스트의 범위를 좁히고 동시에 여러 코드가 아닌, 개별 코드의 정확성을 검증하는 데 집중해야 합니다.
  • 이해 가능: 코드를 읽을 때 간단하고 이해하기 쉬워야 합니다. 개발자는 테스트의 의도를 한눈에 파악할 수 있어야 합니다.
  • 확정성: 일관되게 통과하거나 실패해야 합니다. 코드를 변경하지 않고 테스트를 여러 번 실행하면 테스트의 결과가 동일해야 합니다. 테스트는 코드를 수정하지 않았는데도 어떤 때는 실패하고 어떤 때는 통과하는 것처럼 불안정해서는 안 됩니다.
  • 독립형: 사람이 상호작용하거나 설정할 필요가 없으며 개별적으로 실행됩니다.

✏️ 실습예시(click)

profile
안드로이드개발자

0개의 댓글