일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Android
- 레이아웃
- 스피너
- 조이스틱
- gradle
- 리스트뷰
- 유니티
- 안드로이드
- UI
- webcam
- 그래들
- bottom
- Handelr
- Ext
- ListvView
- camera
- GPS
- GlobalComponent
- spinner
- DP
- WebCamTexture
- Round Square
- Unity
- layout
- Today
- Total
JY-Dev Tech Blog
Android(안드로이드) - What is Appium? 본문
[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로 작성된 서버입니다. 그래서 서버는 클라이언트- 서버 아키텍처를 사용해 작동합니다. 클라이언트-서버 아키텍처에 따르면 클라이언트는 서버에서 호스팅되는 모든 서비스를 사용하기 위해 서버에 연결합니다. 그래서 클라이언트와 서버 간의 모든 통신은 Response 및 Request의 형태입니다. 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
[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 |