본문 바로가기
Automation

테스트 자동화: Appium으로 모바일 테스트 자동화 환경 구축하기

by codeflow 2023. 11. 25.

Appium 2.0 서버를 이용해 안드로이드와 iOS 앱 테스트 자동화 환경을 구축하기 위한 환경 설정 방법을 알아보겠습니다. (맥OS, Apple M1, M2칩 기준)

앱피움은 구조적으로 server, client, driver로 나뉩니다. appium server를 먼저 띄워놓고 자바, 파이썬, 자바스크립트 등 모바일에서 돌아가는 동작들을 특정 언어의 스크립트로 짠 후 실행시키면, appium client에 해당하는 이 코스 수행 요청이 http request로 appium server에 전달됩니다. 그러면 서버에서 이 요청 사항을 해석해 타겟 플랫폼 드라이버로 전달하게 됩니다. 안드로이드라면 UI Automator2나 Espresso를, iOS라면 XCUITest라는 OS측의 드라이버를 통해 실제 모바일 기기에서 동작하게 됩니다. (TMI: appium은 모바일 외에도 TV 등 여러 타겟 디바이스를 지원합니다.)

기본적으로 모바일 테스트 자동화 환경을 구축하려면 Appium 라이브러리를 다운로드 받은 후 관련된 추가적인 패키지들을 설치하고, 테스트 자동화 스크립트를 짤 프로그래밍 언어를 선택한 뒤 해당 프로그래밍 언어에 맞는 IDE를 준비합니다. 그리고 테스트할 안드로이드나 iOS 기기가 있으면 됩니다.

Appium 설치하기

Appium 라이브러리는 기본적으로 nodeJS로 작성되어 있기 때문에 노드 패키지로 등록되어 있습니다. 따라서 다음의 npm 명령어로 다운로드 받으면 됩니다.

npm install -g appium

 

Appium 2.0부터는 타겟 디바이스별로 driver를 설치해주도록 변경되었기 때문에 다음 드라이버들도 같이 설치해줍니다. 각각 Android, iOS, 이미지 기반 클릭을 처리하는 드라이버입니다.

appium driver install uiautomator2
appium driver install xcuitest
appium plugin install images

 

안드로이드 환경 설정하기

안드로이드 앱을 테스트하기 위해서는 기본적으로 안드로이드 앱 개발 시 사용하는 Android Studio가 깔려있으면 좋습니다. 안드로이드 스튜디오를 통해 Android SDK 특정 버전을 쉽게 설치할 수 있고, 안드로이드 에뮬레이터를 추가할 수 있으며. adb 설정이 잡혀있기 때문입니다.

안드로이드 스튜디오를 돌리기 전에 JDK를 먼저 설치해봅시다.

brew install openjdk

 

심볼릭 링크를 걸어두면 편하기 때문에 아래 설정도 같이 해줍니다.

sudo ln -sfn /opt/homebrew/opt/openjdk/libexec/openjdk.jdk /Library/Java/JavaVirtualMachines/openjdk.jdk

 

다음으로 안드로이드 스튜디오를 설치하고, .zshrc 파일을 열어 다음과 같이 경로를 설정해 줍니다. (TMI: .zshrc 파일을 열 때는 터미널에서 open ~/.zshrc로 여는 게 편합니다.)

export JAVA_HOME_21=$(/usr/libexec/java_home -v21)
export JAVA_HOME=$JAVA_HOME_21
export ANDROID_HOME=/Users/bg/Library/Android/sdk
export PATH=$PATH:$ANDROID_HOME/platform-tools
export PATH=$PATH:$ANDROID_HOME/emulator
export PATH=$PATH:$ANDROID_HOME/cmdline-tools

 

JAVA_HOME_21을 분리한 이유는 JDK 버전을 변경할 때 JAVA_HOME 버전을 쉽게 설정하기 위해서입니다. 종종 JDK를 다운그레이드하거나 업그레이드 해야 할 이유가 발생하기 때문이죠. 특정 JDK 파일이 잘 설치되었는지 여부는 아래 명령어로 확인할 수 있습니다.

usr/libexec/java_home -V

 

iOS 환경 설정하기

iOS는 안드로이드보다 환경 설정이 조금 더 까다롭습니다. WebDriverAgent(이하 WDA)라는 프로젝트를 Xcode 상에서 열어서 iOS 앱 등록시 사용한 정보를 넣어 직접 빌드한 후 iOS 기기에 미리 설치해두어야 하기 때문이죠. 기본적으로 테스트 코드를 작성할 담당자가 테스트할 iOS 앱의 개발자로 등록이 되어있어서 Apple App Connect 접속이 자유로워야 설정하기 편합니다. iOS 프로젝트의 빌드도 직접할 수 있는 게 좋습니다. Apple App Connect에서는 팀 ID와 번들 ID를 확인할 수 있습니다.

WDA 프로젝트는 appium 드라이버 명렁어로 다음과 같이 받을 수 있습니다.

appium driver run xcuitest open-wda

 

iOS 테스트 기기를 맥에 연결한 상태에서 해당 프로젝트를 Xcode에서 연 후, WebDriverAgentLib, WebDriverAgentRunner의 Signing & Capabilities에서 Team ID으로 개발자 계정을 설정하고 필요 시 WDA에 쓸 Bundle ID를 입력해 준 후 WebDriverAgentRunner에 대해 빌드를 돌립니다. 그러면 iOS 기기에 WDA가 설치되게 됩니다. WDA가 설치되면, 앱 스토어로 설치한 앱이 아니기 때문에 테스트 기기에서 최초 1회 개발자 앱 신뢰 설정을 해주어야지만 제대로 동작합니다. 기기 설정에서 일반> VPN 및 기기관리> 개발자 앱 신뢰로 들어가 해당 번들 ID로 신뢰 설정을 해주면 됩니다.

 

이 외에 iOS 기기에 대한 추가적인 설정을 확인하고 싶다면 아래 appium 공식 문서를 참조해 주세요.

더 읽어보기 👉

 

마무리

이제 모바일 테스트 자동화를 실행하기 위한 사전 환경 설정이 모두 끝났습니다. 다음으로는 appium 서버를 아래 명령어로 실행시킨 뒤, 테스트 자동화 코드를 작성하면서 실행시켜보면 됩니다!

appium --use-plugins=images

 

혹시 안드로이드 에뮬레이터와 iOS 시뮬레이터를 추가하고 동작시키는 방법을 알고 싶으시다면 이전 포스팅을 참고해주세요 :)

댓글