2022년 4월 3일 일요일

android 자동화 테스트 소개 ( UiAutomator, openatx/uiautomator2 , appium )


1. Ui Automator 

android에서 앱을 자동으로 테스트 할 수 있게 만들어놓은 테스트 Framework 입니다.

크게 Espresso 테스트 프레임워크, UI Automator 테스트 프레임워크가 있는데

그 중에 Ui Automator는 사용자 플로우가 다른 앱이나 시스템 UI로 넘어갈 수 있도록 제공되고 있습니다.

https://developer.android.com/training/testing/ui-testing/uiautomator-testing?hl=ko

단점으로는 apk 형태로 자동화하려는 코드를 직접 만들어야 합니다.


2. openatx, uiautomator2

안드로이드 기반의 Ui Automator 기반의 외부 실행 자동화 프로그램입니다. 안드로이드 Ui Automator 는 안드로이드 app을 컴파일하고 빌드해서 원하는 자동화를 만들어야하지만, 전체적인 테스트 세트를 미리 준비하여 외부에서 안드로이드 테스트 app에 명령을 줘서 동작시키는 원리(http rpc)입니다.

uiautomator2 라고 하는 이유는 github에 이미 uiautomator가 존재하여 fork한 후 이름을 2를 붙였다고 합니다.

python wrapper : https://pypi.org/project/uiautomator2/

python에서는 uiautomator2 를 pip로 설치만 하면 간단하게 사용이 가능합니다.

아래는 단말을 개발자 모드 adb로 enable된 상태에서 connect 명령을 내린 상태

>>> import uiautomator2 as u2
>>> d = u2.connect()
[W 220403 22:00:13 __init__:218] [pid:12328] atx-agent has something wrong, auto recovering
[D 220403 22:00:13 __init__:322] [pid:12328] [xxxxxx] device xxxxxx is online
[I 220403 22:00:14 init:156] uiautomator2 version: 2.16.14
[D 220403 22:00:14 init:167] Shell: ('/data/local/tmp/atx-agent', 'server', '--stop')
[I 220403 22:00:14 init:346] Install atx-agent 0.10.0
[D 220403 22:00:14 init:62] Download https://tool.appetizer.io/openatx/atx-agent/releases/download/0.10.0/atx-agent_0.10.0_linux_armv7.tar.gz
atx-agent_0.10.0_linux_armv7.tar.gz |⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿| 4.1 MB/4.1 MB
[D 220403 22:00:15 init:238] Push to /data/local/tmp/atx-agent:0755
[D 220403 22:00:16 init:167] Shell: ('/data/local/tmp/atx-agent', 'server', '--nouia', '-d', '--addr', '127.0.0.1:7912')
[I 220403 22:00:16 init:350] Check atx-agent version
[D 220403 22:00:16 init:359] Forward: local:tcp:57410 -> remote:tcp:7912
[D 220403 22:00:16 init:359] Forward: local:tcp:57410 -> remote:tcp:7912
[D 220403 22:00:16 init:362] atx-agent version 0.10.0
[D 220403 22:00:16 init:365] device wlan ip: 192.168.0.xx

단말은 ADB로 연결한 상태에서 connect()메소드를 사용하면 atx-agent를 자동으로 다운로드 하여 단말에 설치하게 됩니다.

atx-agent는 단말에 설치하는 전체적인 테스트 세트라고 생각하면 됩니다.

python에서 여러가지 기능들이 준비가 되어있어서 쉽게 android 단말을 제어 가능합니다.

홈페이지 : https://github.com/openatx/uiautomator2


3. appium

uiautomator2와 동작 원리는 같습니다. 좀더 덩치가 크고 여러가지 언어를 이용해서 test 코드(자동화)를 만들 수 있다. 특히 javascript 를 이용한 예제 코드가 많이 보입니다.

홈페이지 : http://appium.io/


4. 끝으로

JavaScript가 편하다면 appium을 python이 편하다면 uiautomator2 를 추천합니다.




댓글 없음:

댓글 쓰기