모바일 앱 E2E 테스트를 자동화할 때 많이 쓰는 프레임워크는 Appium, Espresso, XCTest, Robotium 등등 다양하게 있습니다. 그 중 Appium은 Android, iOS 양대 플랫폼을 모두 지원하는 장점이 있어 많이 사용하는 것 같습니다. 그리고 Appium에서 데스크탑 앱으로 Appium Inspector를 제작해 디바이스 화면의 UI요소를 쉽게 파악하고 테스트 스크립트를 작성할 수 있도록 편의성을 증가시켰습니다.

오픈소스로 전환한 Dogu 또한 Appium을 사용해 앱 테스트를 할 수 있는데, 지금부터 Appium Inspector와 다음 업데이트 버전인 v1.1.0에서 추가될 기능 중 하나인 Dogu Inspector를 직접 사용해보고 간단하게 비교해 보려고 합니다!

GitHub - dogu-team/dogu: Dogu is testing platform for test automation. Includes device farm, workflow, testing report features for test automation.
Dogu is testing platform for test automation. Includes device farm, workflow, testing report features for test automation. - GitHub - dogu-team/dogu: Dogu is testing platform for test automation. I…
GitHub - appium/appium: Cross-platform automation framework for all kinds of your apps built on top of W3C WebDriver protocol
Cross-platform automation framework for all kinds of your apps built on top of W3C WebDriver protocol - GitHub - appium/appium: Cross-platform automation framework for all kinds of your apps built…

Dogu Inspector

Dogu Inspector는 WebRTC 기술을 기반으로 웹 브라우저에서 디바이스 화면 내 UI를 실시간으로 파악할 수 있도록 합니다.

우선 실행하기 전 준비사항은 다음과 같습니다.

  1. 디바이스 팜 시작하기
  2. Dost 설정하기

android inspecting
ios inspecting
gamium inspecting

Dogu inspector: Android, iOS, Gamium 실행 화면

장점

Game UI 지원

게임 프로젝트에서 Gamium을 포함했다면, 디바이스 플랫폼 상관없이 Dogu Inspector에서 Gamium 컨텍스트로 전환해 게임 UI 요소를 조회할 수 있습니다. 게임을 자동화하기 위해서는 필요한 기능인 것 같습니다.

디바이스와 거리 제한 없음

Dogu는 디바이스 팜 기능을 제공하고 있는데, 이는 실제 디바이스와 유저 간 물리적으로 떨어져있어도 웹 브라우저에서 디바이스를 관리하고 실시간 화면 스트리밍 또는 원격으로 제어할 수 있는 기능입니다. Dogu Inspector 또한 디바이스가 꼭 옆에 있지 않아도 사용할 수 있습니다.

쉬운 디바이스 조작

디바이스 화면을 터치하거나 드래그는 실제 디바이스를 사용하듯 스트리밍 화면 위에서 마우스를 이용해 조작할 수 있습니다. 그리고 키 전송 또한 실제 키보드를 사용할 수 있어 쉽게 디바이스를 조작할 수 있었습니다.

낮은 러닝커브

Dogu Inspector도 내부에서는 Appium을 사용하고 있는데, 사용하는 유저는 Appium에 대해 알지 못해도 Inspector를 사용할 수 있습니다. 따라서 Appium capabilities, Appium server 등 설정을 하지 않고 디바이스가 Dogu에 연결되어 있다면 바로 Inspector를 사용할 수 있습니다.

아쉬운 점

iOS 초기 설정

macOS에서 Dost를 설치하면 Dogu 디바이스 팜에 연결하기 위해 매뉴얼에 따라 iOS 디바이스 연결을 위해 초기 설정을 직접 해야하는 부분이 있습니다. 직접 XCode를 통한 Signing & Build가 끝난 이후 iOS 디바이스를 사용할 수 있는 부분을 쉽게 할 수 있도록 개선해보면 좋을 것 같네요.(Apple의 이런 부분이 항상 아쉬운 것 같습니다..🥲)

UI tree view UI/UX

Dogu Inspector도 디바이스의 UI 요소를 보여주기 위한 트리가 있는데, 아직 부족한 부분이 많은 것 같습니다. XML형식으로 UI를 바꾸고, Inspector를 사용중에 동작을 좀 더 개선해야 할 것 같네요.

Appium Inspector

Appium Inspector는 데스크탑 앱에서 디바이스 화면을 캡쳐한 후 UI를 파악할 수 있도록 합니다.

Appium Inspector를 실행하기 위해서는 다음의 과정이 필요합니다. Appium 문서 사이트를 참고했습니다.

  1. Appium 설치 및 필요 드라이버(uiautomator2, xcuitest) 설치 & Appiu
    m server 실행하기
  2. Appium Inspector 설치 & Capabilities 설정하기

Appium inspector: Android, iOS 실행 화면. (iOS는 무한 로딩이 걸리네요...)

장점

녹화 및 스크립트 생성

Appium Inspector는 녹화 기능을 켜고 UI를 조회하고 디바이스를 조작하면 스크립트로 생성해주는 기능을 제공하고 있습니다. JavaScript, Python 등 다양한 언어를 지원해 쉽고 빠르게 스크립트를 짤 수 있도록 도와줍니다.

쉬운 iOS 설정

iOS 디바이스를 사용하기 위해서는 XCode Team ID만 있으면 바로 시작할 수 있습니다. Appium capabilities에 추가하고 세션을 시작하면 바로 앱을 빌드 및 설치 후 실행됩니다. 아무래도 Inspector 기능만 제공하므로 Dogu Inspector보다는 비교적으로 쉽게 시작할 수 있었던 것 같습니다.

다양한 디바이스 커맨드

Command 메뉴에서 많은 기능을 제공하고 있습니다. 플랫폼마다 지원하는 기능이 약간은 다른 듯 하지만 앱 삭제, 앱 열기, 네트워크 메뉴 조작, 파일 전송 등 많은 기능을 사용해 볼 수 있었습니다.

아쉬운 점

러닝커브

제가 Appium Inspector를 처음 사용하려 했을 때 Appium 문서나 환경변수 트러블슈팅 문서를 많이 읽어봤던 것 같습니다. Capabilities를 잘못 입력해서 Inspector가 UI 요소를 제대로 이해하지 못하는 등 제대로 동작하지 않았던 경험도 겪어봤네요... Inspector 사용을 위해 Appium에 대해 약간의 공부가 필요합니다.

디바이스 조작의 어려운 UX

디바이스 화면 터치, 드래그를 하기 위해 특정 버튼을 누른 후 실행하거나, 키 전송을 위해 UI 요소를 선택 후 Input에 입력 후 전송 버튼을 눌러야 하는 부분이 번거롭게 느껴졌습니다.

요약

Dogu Inspector Appium Inspector
실행환경 웹 브라우저 (웹 기반)데스크탑 앱
지원 플랫폼 Android, iOS Android, iOS
동작 방식 실시간 화면 UI 스크린샷 화면 UI
게임 UI 지원 Gamium 포함 시 ✅
디바이스 제어 ✅ / 쉬운 UX ✅ / 다양한 커맨드
녹화 및 스크립트 기능
디바이스와의 거리 제한 없음 직접 연결된 디바이스
러닝커브 낮음 보통

마치며

제가 간단히 두 Inspector를 써보고 정리해보자면, Dogu Inspector는 게임 앱 지원, 낮은 러닝커브, 디바이스와 거리 제한이 없는 장점이 있고, Appium Inspector는 녹화 및 스크립트 기능, 다양한 디바이스 커맨드와 같은 장점이 있습니다.

역시 Appium은 오픈소스로 오랫동안 관리되다 보니 녹화 및 스크립트, 디바이스 커맨드 등 편의성이 높거나 훌륭한 기능들이 많이 있네요. 저희 Dogu도 계속 업데이트 하면서 Appium Inspector 기능 중 아직 지원하지 않는 부분을 벤치마킹 삼아 채워나가도록 해야할 것 같습니다!