Appium이라는 테스트 자동화 프레임워크는 QA Engineer라면 한 번쯤은 들어보거나 사용해 본 Tool이라고 생각됩니다. 사용해 봤다면 복잡한 동작 방식으로 인해 알 수 없는 에러들을 정말 무수히 많이 맞닥뜨렸을 것이라고 생각됩니다. 저 또한 정말 무수히 많은 에러들과 어려움을 맞닥뜨렸었고 그때마다 수도 없이 많은 구글링을 통해 에러를 해결해왔던 것 같습니다.
테스트 자동화를 좀 더 쉽게 디버깅하기 위해 동작 방식을 이해하는 시간을 가지고 이 블로그를 통해 기록하려합니다. 참고하시는 분들께서도 도움이 되시길 바랍니다. 🙏
Appium 이란?
Appium은 모바일 애플리케이션의 자동화 테스트를 위한 오픈 소스 프레임워크입니다. iOS와 Android 플랫폼 모두에서 네이티브, 하이브리드, 웹 애플리케이션을 테스트할 수 있습니다.
Appium은 Selenium WebDriver를 기반으로 하여 다양한 프로그래밍 언어로 테스트 스크립트를 작성할 수 있으며, 앱의 소스 코드 변경 없이 테스트를 자동화할 수 있는 것이 특징입니다. Cross-platform 지원을 통해 동일한 코드베이스로 여러 플랫폼에서 테스트를 실행할 수 있어, QA 엔지니어들에게 널리 사용되고 있습니다.
오늘 동작을 이해할 플랫폼은 Android와 iOS입니다. Appium은 기본적으로 모바일 UI 테스트를 자동화에 널리 사용되고 있기 때문에 Android와 iOS에 한정되어 설명하겠습니다.
iOS 동작 방식
테스트 코드에서 iOS 단말기를 동작 시키기까지 거쳐야하는 과정은 아래 이미지와 같습니다.
WebDriverAgent는 Appium 서버와 iOS 디바이스 간의 브리지 역할을 합니다. 이 브리지를 통해 Appium 서버가 iOS 디바이스에서 앱을 제어하고, UI 테스트를 수행할 수 있습니다. 그래서 최초 Appium 서버는 appium-xcuitest-driver를 통해 iOS 디바이스에 WebDriverAgent를 설치하고 실행합니다. WebDriverAgent는 Xcode 프로젝트로, 컴파일된 후 iOS 장치에 설치됩니다.
이후 Appium Client는 Appium Server로 명령을 Http 형식으로 요청합니다. Appium Server에 설치된 appium-xcuitest-driver를 통해 iOS 단말기에 설치된 WebDriverAgent로 명령 보내게됩니다.
WebDriverAgent는 XCUITest를 통해서 단말기에서 동작을 수행하며 수행에 대한 결과를 역순으로 Appium Client까지 응답하게 됩니다.
Android 동작 방식
테스트 코드에서 Android 단말기를 동작 시키기까지 거쳐야하는 과정은 아래 이미지와 같습니다.
Android도 동작방식은 기본적으로 iOS와 동일합니다. Appium 서버는 appium-uiautomator2-driver를 사용하여 Android 디바이스에 필요한 앱들(Appium Settings 앱, UIAutomator2 Server 앱)을 설치합니다.
- Appium Settings 앱은 Android 디바이스의 설정을 제어하고, 필요한 권한을 관리하는 데 사용됩니다. 예를 들어, 시스템 팝업을 비활성화하거나, 특정 권한을 자동으로 부여하는 기능을 제공합니다.
- UIAutomator2 Server 앱은 Appium이 UIAutomator2 프레임워크를 통해 Android 디바이스의 UI 요소를 제어할 수 있도록 합니다. 이 앱은 실제로 Android UI 테스트를 실행하는 데 사용됩니다.
Appium Client는 Appium Server로 명령을 HTTP 형식으로 요청합니다. Appium Server에 설치된 appium-uiautomator2-driver를 통해 Android 단말기에 설치된 UIAutomator2 Server로 명령을 보내게 됩니다.
UIAutomator2 Server는 UIAutomator2 프레임워크를 통해 Android 단말기에서 동작을 수행하며, 수행 결과를 역순으로 Appium Client까지 응답하게 됩니다.
관련 링크
이러한 과정에서 단말기의 OS 또는 테스트 대상 앱에 수정사항이 있는 경우 각 Tool들의 버전을 확인해야하는 것은 물론 어디에서 이슈가 발생하는지 추적해야합니다. 물론 모든 이슈들을 정확하게 원인 분석해서 수정해야할 필요까진 없지만 동작방식을 이해하면 근본적인 원인해결이 가능하여 추후에 더 많은 시간을 아끼게되는 경우가 많은 것 같습니다.
혹시 궁금한 점이나 더 알고 싶은 내용이 있다면, 댓글로 남겨주세요.!
첫 블로그 글을 쓰다보니 장황해지고 시간이 오래걸리네요.. 🥲 앞으로 꾸준히 쓸 수 있을지 모르겠지만 제 글이 도움이 될 수 있으면 좋을 것 같습니다. 감사합니다.!
'Appium' 카테고리의 다른 글
POM과 PageFactory (0) | 2024.10.14 |
---|---|
모바일 앱에 UI Test를 위한 식별자 추가하기 (0) | 2024.08.26 |