서두는 이렇다. 필자는 POC라는 것을 참여하게 되었는데...
우선 POC란, 게임 개발로 치자면 제품의 프로토타입을 제작하는 것이다. 하지만, RPA 프로젝트는 규모가 1/4, 1/10 정도로 축소된 규모라고 생각하면 된다. 그래서 보통 프로젝트 개수로 기간을 잡는다. 그래도... 프로젝트 하나하나 단위로 볼 때는 여전히 규모가 작기 때문에, 프로젝트보고 '과제'라는 말을 쓴다.
이러한 프로젝트를 기업에서 진행하기 전, 기업도 RPA에 대해 알아야 프로젝트 진행, 부서를 마련하고 제정을 마련할 것 아닌가. 그 견적을 미리 보는 것이 바로 POC 단계라 보면 되겠다.
그 POC에서 진행한 것이 모바일 테스팅이다. 관련 종사자들은 이 모바일 테스트 자동화가 어떻게 보일지 모르겠지만, 여러 개의 모바일 게임을 제작해본 나로서는 테스트만 이렇게 해준다는 것이 큰 충격이었다.
하지만... 결론부터 말하자면 일단 반응성이 느려 게임에 대한 전반적인 테스트는 불가할 것처럼 보인다. 로컬 서버환경에서 탭이나, 드래그의 명령이 5~6초 걸리고 외부 서버환경이면 명령 하나에 30초가 걸렸다. 껏해야 UI정도 테스트 가능해 보인다. (하지만 결국 어디 문제인지 알려면 데이터 많이 쌓을 방법 뿐이겠다... 이건 IDE 제작자들에게 맡길 일이다.)
때문인지, 모바일 환경구축 자료가 몇 없다. 그래서 내 어카이브에 나름의 연구기록을 담아두려고 한다.
개념도부터 시작하겠다.
설명은 RPA계에서 공식적으로 활용하는 PDD(Process Definition Document)폼을 활용해 작성하겠다.
1. 개념도
- Appium은 로컬 서버로서 작용한다.
- UiPath와 Appium 은 API로 통신하며, UiPath에서 API 경로를 설정할 수 있다.
- AVD는 이 문서에서는 Android Studio 내 Manager를 활용한다.
- UiPath에서 가상머신을 화면에 띄우면 직접 접근할 수 있다.
하지만, 이 경우는 Image나 Computer Vision으로 접근해야 한다. - Appium 및 Node.js는 무료이지만, 추가 결제를 통해 Appium 및 AVD의 환경설정을 생략하고 외부 사이트에서 해당 기기에 연결할 수 있다. 이 경우에는 외부 사이트에서 직접 Appium URL을 제공 받아 기기를 구동할 수 있다.
외부사이트
SauceLabs: https://saucelabs.com
BrowserStack: https://www.browserstack.com/
Etc.
2. Mobile Device Manager
- 모바일 액티비티 구성
로깅 & 디버깅, 앱 상호작용 앱 설치 및 URL 열기, 기기 설정 스크린샷, 위치 설정, 커맨드 입력, UI 상호작용 클릭, 드래그, 텍스트 입력 등등 - Mobile Automation 리본 버튼 클릭 (MobileAutomation 패키지 설치 후 등장)
- MDM(Mobile Device Manager) 클릭
- MDM 화면 출력
- 새 기기 혹은 애플리케이션 추가
- 기기 혹은 애플리케이션 편집 설정
- 추가된 기기 및 애플리케이션 목록
- 상호작용 마법사 도구 9. 로그, 상호작용 기록
3. UiPath와 외부사이트(SauceLab) 연결
- 내 설정 클릭
- User Setting 클릭
- 페이지 하단 부에 생성된 API URL 확인
- 좌측 Platform Configurator 클릭
- Android 혹은 iOS 버전 설정
- 테스트할 머신 설정
- 테스트 전 애플리케이션 초기화 설정
변수 설정(Appium 언어) - 테스트 시작 시 애플리케이션 재설치 유무
4. 모바일 로컬 테스트 환경 구축
4.1. 필요 툴 내려받기
경로 주소에서 설치 프로그램 내려 받아 설치 진행
- 버전은 큰 상관 없으며, 아래는 문서 작성 기간에 설치한 버전 정보다.
java: 1.8
android studio: 2023.1.1.28
node.js: 20.12.2(Node.js 활용 시, 위 두 프로그램은 설치 必) - Java 정상 설치 확인
C:\Program Files\Java
폴더 내 [jre-{version}] 폴더 확인 - Android Studio 정상 설치 확인
C\User\[사용자이름]\AppData(숨김폴더)\Local
폴더 내 [Android] 폴더 확인
4.2. 환경 변수 설정
- 시작 – 검색으로 ‘고급 시스템 설정’ 창 열기
- 환경 변수 클릭
- 새로 만들기 클릭
- 변수: ANDROID_HOME
값: C:\Users\heaeny\AppData\Local\Android\Sdk
시스템 변수 추가 - 변수: JAVA_HOME
값: C:\Program Files\Java\jre-{version}
시스템 변수 추가 - 사용자 변수 Path 편집
- %ANDROID_HOME%\platform-tools
사용자 변수 추가
4.3. Android Studio 설정
- 설정 -> SDK Manager 클릭
- SDK Tools 항목 선택
- Android SDK Platform-Tools 설치
- SDK Platforms 항목 선택
- 원하는 AVD의 안드로이드 버전 선택 후 설치
문서작성 기준 최신버전인 14.0으로 진행(보통은 12.0 많이 쓰더라... 내 폰도 12버전이다.)
4.4. Android Studio AVD 만들기
- Device Manager 클릭
- Create Device 클릭
- 원하는 형식 및 기종 선택
- Next 클릭
- X86 Images 항목 선택
- 이전에 설치한 안드로이드 버전 중 AVD에 적용시킬 버전 선택
- Next 클릭
- AVD 이름 설정
- Finish 클릭
4.5 생성된 AVD 확인
- 설정된 AVD 구동
- Running Devices 선택
- 구동되는 AVD 확인
4.6. Appium 서버 실행
2025.01.21 내용 추가
2.15.0 버젼에서 정상작동 확인하여 추가로 작성한다.
일반 appium으로 실행할 경우 경로를 찾지 못한다.
(POST /wd/hub/session 404) error
따라서, 위와 같이 경로를 못 잡을 경우 ctrl+c 로 빠져나온 후,
appium --base-path /wd/hub
로 경로를 입력한 후 서버를 띄운다.
- $ npm
명령어로 node pkg 정상 동작 확인 - $ npm install –g appium
명령어로 appium 글로벌 모듈 설치
※정상동작 확인 코드
$ appium --version
※삭제 코드
$ npm uninstall –g appium - $ appium driver install uiautomator2
명령어로 appium driver 설치
※정상동작 확인 코드
$ appium driver ls
※삭제 코드
$ appium driver uninstall uiautomator2 - 위 3번 드라이버 설치 중…
Encountered an error when installing package 오류 시:
~lib\exec.js 파일 내 ‘shell’ 값 ‘true’로 - $ appium --base-path /wd/hub –p {포트번호}
명령어로 appium 서버 가동
Default 포트 번호 4723
ctrl + c -> 서버 닫기
(UiPath와의 연결은 5. Appium GUI 챕터 이후 6번 챕터에서 같이 서술하겠다)
5. Appium GUI를 통한 서버 실행
5.1. Appium GUI 내려받기
- Appium Github 접속
- 최상위 폴더로 이동
- Repositories 항목 선택
- Archived 선택
- Appium-desktop 선택
- 우측 Release 클릭
- 서버역할을 할 PC 환경에 맞는 Appium 내려받기
- 내려받은 파일로 Appium Server 설치
5.2. Appium GUI 구동
- Edit Configuration 선택
- ANDROID_HOME 및 JAVA_HOME 폴더 명 점검
- Advanced에서 세부정보 입력 (없을 시 생략)
- startServer 버튼 클릭
- 서버 구동 확인
6. UiPath Mobile Device Manager 와 Android Studio AVD 연결
- Android Studio, Device Manager 내 원하는 AVD 구동
- $ appium or $ appium –p {portnum} 으로 서버 구동 (로컬 시 직접 입력)
- UiPath 내 준비된 연결 세팅 가동
- 테스트 할 애플리케이션 선택 후 CONNECT 클릭
- UiPath MDM(Mobile Device Manager 에서 정상구동 확인)
7. UiPath MDM 환경 구축 참고사항
현재 Appium Server GUI로 배포된 appium 버전은 1.22.3이다. 이 버전으로 설치할 경우 이상 없이 진행된다. 하지만, github에도 표기되어 있듯이 이 버전은 보안 이슈가 있다. UiPath에서는 2.0.0을 쓰라고 권장하지만… 2.0~2.2까지는 서버가 띄워지지 않는다.(더 실험 필요)
2.3~2.5는 설치가 되나 MDM쪽에서 버그가 발견된다.(클릭이 되지 않음) 따라서, 예제를 그대로 진행하고 싶으면 일단 보안 이슈를 무시한 채 진행 해야한다.
요약: appium 버전이 1.22.3에 보안이슈가 있으나, 이 버전만 정상 실행된다.(기준은 필자 환경이다. SauceLab에선 2.0 이상이 잘만 연결되는 거 보면 분명 필자가 놓치고 있는게 있겠지만, 이는 생략하겠다 ^^)
Appium 서버 버젼 별 이슈 현황(2024.05.17 기준, 실험 더 해봐야 정확히 앎)
1.22.3 -> 정상진행, 보안이슈, 권장 버전은 2.0.0 이나 해당 버전부터는 GUI를 지원하지 않음 (구현이 급하면 1.22.x 버전으로 먼저 개발 + 1.22.x 시 별도 드라이버 설치는 필요 없음)
2.0~2.2 -> 설치는 되나 서버 구동 실패
2.3~2.5 -> 설치 후 설치 구동은 되나 MDM 쪽 오류
2.15.0 > 설치 후 MDM에서 상호작용 잘됌 (2025.01.21 >> 2.15.0 버젼 정상작동 확인)
애뮬레이터 기준
iOS – 12.2 부터, Android – 6.0 부터 Appium 2.0.0 지원 -> uiautomator2: 2.29.4, xcuitest: 4.33.2
8. 정리
마지막 7. 참고사항에서 느껴지듯이 아직 속도는 둘째치고 버젼마다 꽤 불안정한 모습을 보인다. 이는 차차 IDE 쪽 혹은 Appium Server 쪽에서 대응해야 할 이슈겠지만... Appium 은 오픈 소스다. 급하면 직접 고쳐보는 것도 도움이 될 수 있겠다.
모바일 테스트 툴은 잘만 구축되면 꽤 강력한 도구가 될 수 있을 것 같다. 실은 당장에 내가 경험했던 여러 게임회사들의 모바일 프로젝트는 마땅한 테스트 도구가 없어 자체 봇을 제작한 후에 테스트하고 있었기 때문이다. 하물며, 세상에 모바일 애플리케이션이 과연 몇 개인가. 그리고 앞으로도 모바일 시장이 강세를 보이고 등장할 애플리케이션을 예측한다면, 잘 갖춰진 모바일 테스트 툴은 꽤 쓸만한 녀석이 될 수 있겠다.
'RPA' 카테고리의 다른 글
Repeat Number of Times - (유용했던) Activity (0) | 2024.08.21 |
---|---|
Invoke Code 내 Excel.Range + Selector V2, V3 - (유용했던) Activity (0) | 2024.08.21 |
Raise Alert - (생소했던) Activity (0) | 2024.08.21 |
Read/Write Text File - (유용했던) Activity (0) | 2024.08.21 |
RPA 개발 간 중요 자료형 및 주의사항 [UiPath] (0) | 2024.05.17 |