티스토리 뷰

반응형

앱에 기능이 많아질수록 수동으로 테스트하기 어려워집니다. 자동화된 테스트는 기능과 버그 수정 속도를 유지하면서 앱이 배포되기 전에 올바르게 작동하는지 확인하는 데 도움을 줍니다.

 

자동화된 테스트는 몇 가지 범주로 나뉩니다:

  • 단위 테스트(unit test): 단일 함수, 메서드 또는 클래스를 테스트합니다.
  • 위젯 테스트(widget test): 단일 위젯을 테스트합니다. (다른 UI 프레임워크에서는 컴포넌트 테스트라고도 합니다.)
  • 통합 테스트(integration test): 전체 앱 또는 앱의 큰 부분을 테스트합니다.

 

일반적으로 잘 테스트된 앱은 코드 커버리지를 통해 많은 단위 테스트와 위젯 테스트를 추적하며, 중요한 사용 사례를 모두 다룰 수 있는 충분한 통합 테스트를 포함합니다. 이는 아래에서 볼 수 있는 다양한 테스트 유형 간의 트레이드오프(trade-off)에 기반한 권장 사항입니다.

트레이드오프 단위 테스트(Unit) 위젯 테스트(Widget) 통합 테스트(Integration)
신뢰도 낮음 높음 매우 높음
유지 비용 낮음 높음 매우 높음
의존성 적음 많음 매우 많음
실행 속도 빠름 빠름 느림

단위 테스트

단위 테스트는 단일 함수, 메서드 또는 클래스를 테스트합니다. 단위 테스트의 목표는 다양한 조건에서 논리의 단위를 올바르게 확인하는 것입니다. 테스트 중인 단위의 외부 의존성은 일반적으로 모의(mock) 처리됩니다. 단위 테스트는 일반적으로 디스크에 읽거나 쓰지 않으며, 화면에 렌더링하거나 테스트를 실행하는 프로세스 외부에서 사용자 동작을 수신하지 않습니다.

위젯 테스트

위젯 테스트는 단일 위젯을 테스트합니다. 위젯 테스트의 목표는 위젯의 UI가 예상대로 보이고 상호작용하는지 확인하는 것입니다. 위젯 테스트는 여러 클래스를 포함하며, 적절한 위젯 생명 주기 컨텍스트를 제공하는 테스트 환경이 필요합니다.

 

예를 들어, 테스트 중인 위젯은 사용자 동작 및 이벤트를 수신하고 이에 응답하며, 레이아웃을 수행하고 자식 위젯을 인스턴스화해야 합니다. 따라서 위젯 테스트는 단위 테스트보다 포괄적입니다. 그러나 단위 테스트와 마찬가지로 위젯 테스트 환경은 전체 UI 시스템보다 훨씬 간단한 구현으로 대체됩니다.

통합 테스트

통합 테스트는 전체 앱 또는 앱의 큰 부분을 테스트합니다. 통합 테스트의 목표는 테스트 중인 모든 위젯과 서비스가 예상대로 함께 작동하는지 확인하는 것입니다. 또한 통합 테스트를 통해 앱의 성능을 확인할 수도 있습니다.

 

일반적으로 통합 테스트는 실제 디바이스나 iOS 시뮬레이터 또는 Android 에뮬레이터와 같은 OS 에뮬레이터에서 실행됩니다. 테스트 대상 앱은 일반적으로 테스트 드라이버 코드에서 격리되어 결과를 왜곡하지 않도록 합니다.

지속적 통합 서비스

지속적 통합(CI) 서비스는 새로운 코드 변경을 푸시할 때 자동으로 테스트를 실행할 수 있습니다. 이를 통해 코드 변경 사항이 예상대로 작동하고 새로운 버그를 도입하지 않았는지에 대한 피드백을 즉시 받을 수 있습니다.

반응형

'Flutter > 테스팅' 카테고리의 다른 글

플러터] Mockito를 사용한 의존성 모킹  (0) 2024.09.21
플러터] 단위 테스팅 소개  (0) 2024.09.21
댓글
공지사항