# Maestro - 모바일 앱 자동화 UI 테스팅 프레임워크

> Clean Markdown view of GeekNews topic #14216. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=14216](https://news.hada.io/topic?id=14216)
- GeekNews Markdown: [https://news.hada.io/topic/14216.md](https://news.hada.io/topic/14216.md)
- Type: GN+
- Author: [xguru](https://news.hada.io/@xguru)
- Published: 2024-04-09T09:26:12+09:00
- Updated: 2024-04-09T09:26:12+09:00
- Original source: [github.com/mobile-dev-inc](https://github.com/mobile-dev-inc/maestro)
- Points: 19
- Comments: 4

## Topic Body

- 모바일 앱의 UI 테스트를 자동화하는 가장 쉬운 방법  
- UI 요소의 불안정성에 대한 내재적 허용오차를 가짐  
  - UI 요소가 항상 예상한 위치에 있는 것은 아니기에 화면을 탭하는게 항상 동작하는 것은 아님  
  - 모바일 애플리케이션과 디바이스의 불안정성을 수용하고 이에 대응하려고 함  
- Delay에 대한 내재적 허용오차를 가짐   
  - 테스트에 `sleep()` 호출을 넣을 필요가 없음  
  - 콘텐츠 로드(예: 네트워크를 통해)에 시간이 걸릴 수 있음을 알고 자동으로 기다리지만 필요 이상으로 오래 기다리지는 않음  
- 매우 빠른 반복이 가능함  
  - 테스트는 인터프리팅되므로 컴파일할 필요가 없음   
  - 테스트 파일을 지속적으로 모니터링하고 변경될 때 다시 실행할 수 있음  
- 선언적이면서도 강력한 문법을 제공함  
  - `yaml` 파일에서 테스트를 정의함  
- 설정이 간단함  
  - 어디서나 작동하는 단일 바이너리임  
  
### GN⁺의 의견  
- Maestro는 모바일 앱 테스트 자동화를 위한 새로운 도구로, 기존 Appium, Espresso, UIAutomator, XCTest 등의 한계점을 극복하고자 함. 특히 UI 요소의 불안정성과 지연에 대한 내재적 허용오차를 가지고 있어 기존 도구 사용시 발생하던 문제를 줄일 수 있을 것으로 보임.  
- YAML 기반의 선언적 문법을 사용하므로 개발자가 아닌 QA 엔지니어도 쉽게 테스트 케이스를 작성할 수 있을 것 같음. 다만 YAML 문법에 익숙하지 않은 경우 학습 비용이 들 수 있음.  
- 모바일 앱 테스트 자동화 도구로는 Appium이 널리 사용되고 있음. Appium은 여러 모바일 플랫폼과 프로그래밍 언어를 지원한다는 장점이 있지만, 안정성 문제로 테스트 실패율이 높다는 단점이 있음. Maestro가 이런 Appium의 문제를 얼마나 해결할 수 있을지 지켜볼 필요가 있음.   
- 현재 Maestro는 문서화가 잘 되어있고, Slack 커뮤니티도 운영 중이므로 도입을 고려해 볼만함. 다만 아직 초기 버전이므로 프로덕션 환경에 적용하기 전에 충분한 검증이 필요할 것으로 보임.

## Comments



### Comment 24392

- Author: laeyoung
- Created: 2024-04-12T11:33:19+09:00
- Points: 1

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

### Comment 24309

- Author: rabolution
- Created: 2024-04-09T11:45:34+09:00
- Points: 1

maestro가 심플하고 좋은 점이 많은데요. 아직 android에서는 한글 입력 이슈가 있습니다. https://github.com/mobile-dev-inc/maestro/issues/146  
  
또 아쉬운 점은 다른 테스트 도구에 비해 빠르게 실행되진 않습니다. 보통 테스트 도구는 실제 사용자와 달리 매우 빠르게 실행되다보니 wait 을 정교하게 설계하지 않으면 flaky하게 테스트가 실패하는 이슈가 있었는데. maestro는 그냥 느리게 기다리는 걸로 해결하기로 한 게 아닌가 싶을 정도로 느립니다. ^^;;;

### Comment 24311

- Author: rabolution
- Created: 2024-04-09T11:52:27+09:00
- Points: 1
- Parent comment: 24309
- Depth: 1

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

### Comment 24315

- Author: smboy86
- Created: 2024-04-09T13:15:58+09:00
- Points: 1
- Parent comment: 24311
- Depth: 2

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