JY-Dev Tech Blog

Android(안드로이드) - What is Appium? 본문

안드로이드/테스트코드

Android(안드로이드) - What is Appium?

JY-Dev 2020. 10. 29. 10:49

[OverView]

UI 자동화 테스트를 찾아보다가 Appium 이란 프레임워크를 알게 되었습니다.

그래서 Appium에 대한 설명을 간략하게 정리하려고 합니다.

 

[Appium]

Appium오픈 소스, 크로스 플랫폼 자동화 테스트 도구입니다. 네이티브, 하이브리드 및 웹 애플리케이션에 대한 테스트 사례를 자동화하는 데 사용됩니다. Appium은 Android 및 iOS 모두에 중점을두고 있으며 모바일 애플리케이션 테스트 도메인으로 만 제한되었습니다. 또한 Appium은 최근에 몇 가지 업데이트를 통해 Windows 용 데스크톱 응용 프로그램 테스트를 지원한다고합니다.

Appium은 Sauce Labs에서 개발 및 유지 관리합니다. 현재 Appium 버전 1.12가 배포되고 있습니다. Appium은 처음으로 node.js를 사용하여 설치할 수있는 명령 줄 기반 테스트 서비스입니다 . 

 

[Appium 특징]

  • Appium (클라이언트 - 서버) 아키텍처 : Appium의 핵심은 node.js로 작성된 서버입니다. 그래서 서버는 클라이언트- 서버 아키텍처를 사용해 작동합니다. 클라이언트-서버 아키텍처에 따르면 클라이언트는 서버에서 호스팅되는 모든 서비스를 사용하기 위해 서버에 연결합니다. 그래서 클라이언트와 서버 간의 모든 통신ResponseRequest의 형태입니다. Appium에서 클라이언트는 자동화 관련 요청을 Appium 서버로 보냅니다. 서버는 자체 고유 한 방식으로 Request을 처리하며, 잠시 후 이를 확인하고 다음 테스트 결과 또는 로그 파일로 Response를 보냅니다.

  • Appium Sessions : 모든 테스트는 Session에 캡슐화되어 수행됩니다. 이는 Appium이 간단한 클라이언트 및 서버 기반 메커니즘이기 때문입니다. 클라이언트는 Session Request를 서버에 보냅니다. 이러한 요청은 JSON Object 형식으로 보내집니다 그리고 이는 JSON Wire Protocol을 사용하여 서로 통신합니다.

  • Desired Capabilities : Appium은 iOS와 Android에서 다르게 작동합니다. 이제는 "크로스 플랫폼"도구이므로 두 운영 체제의 Session Request구분하는 메커니즘이 있어야합니다. 이 특정 문제 설명은 Desired Capablilities라고하는 JSON 객체를 사용하여 해결되었습니다. Desired Capabilities는 Android 앱 테스트를 위한 Session 설정과 iOS 앱 테스트를 구분하는 정보의 키-값 쌍입니다. 
    다음과 같은 인수 PlatformName ,Device Name, AppPackage, AppActivity로 두 운영체제를 구별합니다.

[JSON Wire Protocol]

JSON Wire Protocol클라이언트와 서버 간의 통신에 사용되는 메커니즘이며 WebDriver 개발자 가

개발 했습니다. 그들에 따르면 프로토콜은 RESTful API를 사용하여 클라이언트에 노출되는 표준화 된 그룹입니다. 이를 통해 웹 드라이버는 서버 및 클라이언트와의 통신을 설정하여 자동화를 수행 할 수 있습니다.
Appium은 Selenium JSON Wire Protocol의 확장 인 모바일 JSON Wire Protocol을 사용합니다. 통신 스트림을 설정하는 것 외에 다른 휴대폰 동작을 제어하는 ​​데 사용됩니다.

 

[Appium Architecture]

  • Appium은 node.js를 사용하여 작성된 HTTP 서버 입니다.

  • 클라이언트는 세션을 사용하여 서버와 통신합니다. 여기서 통신 프로세스의 핵심 요소는 도움말 JSON 개체 와 함께 전송 됩니다. 통신은 모바일 JSON 유선 프로토콜에 의해 처리됩니다.

  • 서버는 desiredCapabilites 인수를 사용하여 iOS 요청과 Android 요청을 구분합니다 .

  • Appium 서버는 아래 Appium 아키텍처 다이어그램 에 표시된대로 각 UI Automators에 대한 요청을 처리합니다 .

  • UI Automator는 요청을 처리하고 시뮬레이터 / 에뮬레이터 / 실제 장치 에서 명령을 실행합니다 .

  • 테스트 세션의 결과는 서버에 전달 된 다음 모바일 JSON 유선 프로토콜을 사용하여 로그 측면에서 클라이언트 시스템으로 다시 전달됩니다.

[UIAutoMator]

UI Automator 테스트 프레임워크는 사용자 앱과 시스템 앱에 관한 상호작용을 실행하는 UI 테스트를 빌드하기 위한 API 세트를 제공합니다. UI Automator API를 사용하면 테스트 기기에서 Settings 메뉴 또는 앱 런처 열기와 같은 작업을 실행할 수 있습니다. UI Automator 테스트 프레임워크는 블랙박스 스타일의 자동화된 테스트를 작성하기에 매우 적합하며, 여기서는 테스트 코드가 타겟 앱의 내부 구현 세부정보에 의존하지 않습니다.

 

참고문헌

developer.android.com/training/testing/ui-automator?hl=ko

 

UI Automator  |  Android 개발자  |  Android Developers

UI Automator는 시스템과 설치된 앱 전반에 걸쳐 앱 간의 기능적 UI 테스트를 실행하기에 적합한 UI 테스트 프레임워크입니다. 참고: 이 프레임워크에는 Android 4.3(API 수준 18) 이상이 필요합니다. UI Aut

developer.android.com

[Appium Android 작동방식]

 

  • Appium 클라이언트 (c / Java / Python / etc)는 Appium Server와 연결하고 JSON Wire Protocol을 통해 통신합니다.

  • Appium Server는 클라이언트에 대한 자동화 세션을 생성하고 원하는 클라이언트 기능도 확인합니다. 그런 다음 UIAutomator와 같은 각 벤더 제공 프레임 워크와 연결됩니다.

  • UIAutomator는 클라이언트 작업을 수행하기 위해 시뮬레이터 / 에뮬레이터 / 실제 장치에서 실행중인 bootstrap.jar와 통신합니다.

  • 여기서 bootstrap.jar 는 TCP 서버의 역할을하며, UIAutomator를 사용하여 Android 기기에서 작업을 수행하기 위해 테스트 명령을 보내는 데 사용할 수 있습니다.

 

'안드로이드 > 테스트코드' 카테고리의 다른 글

Android(안드로이드) - Espresso  (0) 2020.10.28
Android(안드로이드) - Junit Annotaion (어노테이션)  (0) 2020.10.28
ANDROID TDD  (0) 2020.10.27
Mock 객체  (0) 2020.10.27
Comments