GN⁺: Maestro - 모바일 앱 자동화 UI 테스팅 프레임워크
(github.com/mobile-dev-inc)- 모바일 앱의 UI 테스트를 자동화하는 가장 쉬운 방법
- UI 요소의 불안정성에 대한 내재적 허용오차를 가짐
- UI 요소가 항상 예상한 위치에 있는 것은 아니기에 화면을 탭하는게 항상 동작하는 것은 아님
- 모바일 애플리케이션과 디바이스의 불안정성을 수용하고 이에 대응하려고 함
- Delay에 대한 내재적 허용오차를 가짐
- 테스트에
sleep()
호출을 넣을 필요가 없음 - 콘텐츠 로드(예: 네트워크를 통해)에 시간이 걸릴 수 있음을 알고 자동으로 기다리지만 필요 이상으로 오래 기다리지는 않음
- 테스트에
- 매우 빠른 반복이 가능함
- 테스트는 인터프리팅되므로 컴파일할 필요가 없음
- 테스트 파일을 지속적으로 모니터링하고 변경될 때 다시 실행할 수 있음
- 선언적이면서도 강력한 문법을 제공함
-
yaml
파일에서 테스트를 정의함
-
- 설정이 간단함
- 어디서나 작동하는 단일 바이너리임
GN⁺의 의견
- Maestro는 모바일 앱 테스트 자동화를 위한 새로운 도구로, 기존 Appium, Espresso, UIAutomator, XCTest 등의 한계점을 극복하고자 함. 특히 UI 요소의 불안정성과 지연에 대한 내재적 허용오차를 가지고 있어 기존 도구 사용시 발생하던 문제를 줄일 수 있을 것으로 보임.
- YAML 기반의 선언적 문법을 사용하므로 개발자가 아닌 QA 엔지니어도 쉽게 테스트 케이스를 작성할 수 있을 것 같음. 다만 YAML 문법에 익숙하지 않은 경우 학습 비용이 들 수 있음.
- 모바일 앱 테스트 자동화 도구로는 Appium이 널리 사용되고 있음. Appium은 여러 모바일 플랫폼과 프로그래밍 언어를 지원한다는 장점이 있지만, 안정성 문제로 테스트 실패율이 높다는 단점이 있음. Maestro가 이런 Appium의 문제를 얼마나 해결할 수 있을지 지켜볼 필요가 있음.
- 현재 Maestro는 문서화가 잘 되어있고, Slack 커뮤니티도 운영 중이므로 도입을 고려해 볼만함. 다만 아직 초기 버전이므로 프로덕션 환경에 적용하기 전에 충분한 검증이 필요할 것으로 보임.
maestro가 심플하고 좋은 점이 많은데요. 아직 android에서는 한글 입력 이슈가 있습니다. https://github.com/mobile-dev-inc/maestro/issues/146
또 아쉬운 점은 다른 테스트 도구에 비해 빠르게 실행되진 않습니다. 보통 테스트 도구는 실제 사용자와 달리 매우 빠르게 실행되다보니 wait 을 정교하게 설계하지 않으면 flaky하게 테스트가 실패하는 이슈가 있었는데. maestro는 그냥 느리게 기다리는 걸로 해결하기로 한 게 아닌가 싶을 정도로 느립니다. ^^;;;
한편으로 web frontend testing에서는 접근성 요소를 활용하는 접근이 인기를 끌고 있고, 모바일에서도 그런데요. ( https://blog.banksalad.com/tech/test-in-banksalad-ios-2/ 참고)
마에스트로는 text와 id 위주로 하다보니. "상품 목록" 이라는 link와 button, heading 등의 role을 구분하기가 어렵더군요. web에서는 aria-checked, aria-expanded 등으로 검증할 수 있는 부분들도 아쉽고요.
저는 test-id가 id 충돌을 막기 위해 prefix 등을 붙이게 되고, 결국 이렇게 가져온 요소가 기대하는 text를 렌더하는지는 다시 테스트해야 하는 게 번거로웠습니다.