19P by neo with xguru 24일전 | favorite | 댓글 4개
  • 모바일 앱의 UI 테스트를 자동화하는 가장 쉬운 방법
  • UI 요소의 불안정성에 대한 내재적 허용오차를 가짐
    • UI 요소가 항상 예상한 위치에 있는 것은 아니기에 화면을 탭하는게 항상 동작하는 것은 아님
    • 모바일 애플리케이션과 디바이스의 불안정성을 수용하고 이에 대응하려고 함
  • Delay에 대한 내재적 허용오차를 가짐
    • 테스트에 sleep() 호출을 넣을 필요가 없음
    • 콘텐츠 로드(예: 네트워크를 통해)에 시간이 걸릴 수 있음을 알고 자동으로 기다리지만 필요 이상으로 오래 기다리지는 않음
  • 매우 빠른 반복이 가능함
    • 테스트는 인터프리팅되므로 컴파일할 필요가 없음
    • 테스트 파일을 지속적으로 모니터링하고 변경될 때 다시 실행할 수 있음
  • 선언적이면서도 강력한 문법을 제공함
    • yaml 파일에서 테스트를 정의함
  • 설정이 간단함
    • 어디서나 작동하는 단일 바이너리임

GN⁺의 의견

  • Maestro는 모바일 앱 테스트 자동화를 위한 새로운 도구로, 기존 Appium, Espresso, UIAutomator, XCTest 등의 한계점을 극복하고자 함. 특히 UI 요소의 불안정성과 지연에 대한 내재적 허용오차를 가지고 있어 기존 도구 사용시 발생하던 문제를 줄일 수 있을 것으로 보임.
  • YAML 기반의 선언적 문법을 사용하므로 개발자가 아닌 QA 엔지니어도 쉽게 테스트 케이스를 작성할 수 있을 것 같음. 다만 YAML 문법에 익숙하지 않은 경우 학습 비용이 들 수 있음.
  • 모바일 앱 테스트 자동화 도구로는 Appium이 널리 사용되고 있음. Appium은 여러 모바일 플랫폼과 프로그래밍 언어를 지원한다는 장점이 있지만, 안정성 문제로 테스트 실패율이 높다는 단점이 있음. Maestro가 이런 Appium의 문제를 얼마나 해결할 수 있을지 지켜볼 필요가 있음.
  • 현재 Maestro는 문서화가 잘 되어있고, Slack 커뮤니티도 운영 중이므로 도입을 고려해 볼만함. 다만 아직 초기 버전이므로 프로덕션 환경에 적용하기 전에 충분한 검증이 필요할 것으로 보임.

해보니까 금방(셋업부터 첫 테스트용 yaml 만들기까지 1시간 내외) 할 수 있어서 괜찮네요

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를 렌더하는지는 다시 테스트해야 하는 게 번거로웠습니다.

인사이트 가득한 코멘트 감사합니다