[Flutter] Testing Flutter apps

김영진·2021년 8월 27일
1

Flutter TDD

목록 보기
1/1

목적

TDD 적용을 위해 문서 읽어보기

내용

  • 단위 테스트
  • 위젯 테스트
  • 통합 테스트
  • 지속적인 통합 서비스

앱의 기능이 많아질수록 수동으로 테스트가 어렵다.
테스트 자동화를 통해 버그 수정속도를 올리고 궁극적으로 개발속도를 올리수 있다.

앱 테스트 연습을 위한 사이트 : Codelab

자동화된 테스트는 다음과 같은 몇가지 범주로 나뉩니다.

  • 단위 테스트는 하나의 함수, 메소드, 클래스를 테스트한다
  • 위젯 테스트(다른 UI프레임워크 에서는 컴포넌트 테스트로 언급된다)는 하나의 위젯을 테스트한다.
  • 통합 테스트는 앱의 거대한부분 또는 앱 전체를 테스트한다.

일반적으로, 잘 테스트된 앱은 코드 추적 범위에 따라 추적되는 많은 단위테스트, 위젯테스트를 가지고, 더해서 중요한 사용사례를 다룰수 있는 충분한 통합 테스트를 제공합니다.

이 조언은 아래의 여러 종류의 테스트 사이에 트레이드 오프가 있다는 사실에 근거한다.

단위위젯통합
신뢰도낮음더높음가장높음
유지비용낮음더높음가장높음
의존성거의없음더많음가장많음
실행속도빠름빠름느림

단위 테스트

하나의 단위 테스드는 하나의 함수, 메서드, 클래스를 테스트한다. 단위 테스트의 목적은 다양한 조건하에서 로직의 단위의 올바름을 확인하는것이다. 테스트 대상 단위의 외부적인 의존성은 가짜이다.
Mock 단위테스트는 일반적으로 디스크에서 읽거나 쓰거나, 화면에 랜더링하거나, 테스트를 실행하는 프로세스 외부에서의 사용자 액션을 수신하지 않습니다. 단위 테스트에 대한 자세한 내용은 다음 예제를 보거나 당신의 터미널에서 flutter test --help를 실행하세요.

위젯 테스트

위젯테스트는 단일 위젯을 테스트한다. UI가 예쌍대로 보이고 상호작용하는지 확인하는것이 목적이다. 위젯 테스트엔 여러 클래스가 포함되고, 적절한 위젯 라이프사이클 컨텍스트를 제공하는 테스트 환경이 필요하다. 예를들어 테스트할 위젯은 사용자 작업 및 이벤트를 수신 및 응답하고 레이아웃을 수행하며 하위위젯을 인스턴스화 할 수 있어야 한다. 따라서 위젯 테스트는 단위 테스트보다 더 포괄적이다. 하지만 장치 테스트처럼 위젯 테스트는 완전한 UI시스템보다 훨씬 간단한 구현으로 대체된다.

통합 테스트

통합테스트의 목표는 테스트할 모든 위젯과 서비스가 예상대로 함께 작동하는지 확인하는것이다. 또한 통합 테스트를 사용하여 앱의 성능을 확인할 수 있습니다. 일반적으로 통합테스트는 IOS Simulator 또는 Android Emulator와 같은 실제 장치 또는 OS에뮬레이터에서 실행됩니다. 테스트 대상 앱은 일반적으로 결과가 왜곡되지 않도록 테스트 드라이버 코드와 격리됩니다. 통합 테스트 작성 방법에 대한 내용은 다음을 참조하세요.

지속적인 통합 서비스

CI(Continuous Integration)서비스를 사용하면 새 코드 변경사항을 푸시할 때 자동으로 테스트를 실행할 수 있습니다. 이를 통해 코드가 예상대로 변경되고 버그가 발생하지 않는지 여부를 적시에 피드백할 수 있습니다. 다양한 연속 통합 서비스에 대한 테스트 실행에 대한 자세한 내용은 다음을 참조하세요.

결론

플러터에서는 단위테스트, 위젯테스트, 통합테스트가 있으며 CI를 활용해 테스트 자동화를 할 수 있다.
세부적인 내용들은 단위테스트부터 하나하나 살펴보고 적용해보자.

profile
2021.05.03) Flutter, BlockChain, Sports, StartUp

0개의 댓글