관리 메뉴

나만을 위한 블로그

[Android] Appium이란? 본문

Android

[Android] Appium이란?

참깨빵위에참깨빵 2024. 3. 10. 21:42
728x90
반응형

안드로이드의 테스트는 크게 비즈니스 로직을 검증하는 단위 테스트, 안드로이드 API를 같이 사용해 UI와의 상호작용도 같이 검증하는 계측(Instrumented) 테스트의 2가지로 나뉘어진다.

이 글을 찾아온 사람이라면 이미 아는 내용이라 생각되지만, 안드로이드 기준으로 두 테스트의 차이를 간략하게 적으면 아래와 같다.

 

  • 단위 테스트 : 순수 자바 / 코틀린으로 구성된 함수, 클래스 등을 테스트함. JUnit, Kotest, hamcrest 등을 써서 구성할 수 있음
  • 계측 테스트 : 에뮬레이터, 실기기에서 작동하는 테스트. 네이티브 UI 테스트는 espresso, 웹뷰의 UI 테스트는 espresso-web을 써서 테스트 작성. 필요 시 JUnit의 일부 기능을 같이 쓸 수 있음

 

안드로이드의 비즈니스 로직, 유저와의 상호작용을 테스트한다면 보통 이 방법으로 테스트 케이스들을 구성할 것이다.

하지만 만약 하나의 테스트 스크립트로 안드로이드와 아이폰을 모두 테스트할 수 있다면 어떨까? 그렇다면 자바 / 코틀린과 스위프트로 나뉘어진 2종류의 테스트 파일을 유지보수하지 않고, 하나의 파일만 작성하고 유지보수하며 테스트 자동화를 노려볼 수 있을 것이다.

이걸 가능하게 해주는 오픈소스 프레임워크가 Appium이다. 안드로이드, iOS의 네이티브 UI 테스트와 하이브리드 앱의 UI 테스트도 지원하며, 코드 하나로 여러 플랫폼에서 실행할 수 있는 테스트를 작성해 테스트 프로세스를 간소화할 수 있는 유용한 프레임워크다.

 

https://appium.io/docs/en/latest/

 

Welcome - Appium Documentation

Welcome Welcome to the Appium documentation! Appium is an open-source project and ecosystem of related software, designed to facilitate UI automation of many app platforms, including mobile (iOS, Android, Tizen), browser (Chrome, Firefox, Safari), desktop

appium.io

Appium은 오픈소스 프로젝트이자 관련 소프트웨어의 에코시스템으로 모바일, 브라우저, 데스크톱, TV 등 다양한 앱 플랫폼의 UI 자동화를 용이하게 하기 위해 설계됐다

 

공식문서의 소개글로는 그래서 Appium이 뭔데? 라는 질문에 명확한 답변이 되지 않아서 좀 찾아봤다.

 

https://economictimes.indiatimes.com/definition/appium-tool

 

What is Appium Tool? Definition of Appium Tool, Appium Tool Meaning - The Economic Times

Appium Tool definition - What is meant by the term Appium Tool ? meaning of IPO, Definition of Appium Tool on The Economic Times.

economictimes.indiatimes.com

Appium은 안드로이드, iOS 같은 다양한 모바일 OS에서 앱을 자동화하는 데 쓰이는 모바일 자동화 테스트 도구다. 네이티브, WAP(웹의 오타로 생각됨), 하이브리드 앱 등 여러 모바일 앱의 테스트 자동화에 쓸 수 있는 오픈소스 도구다.
테스트 케이스를 자동화하면 더 많은 기능을 빠르게 검증할 수 있어서 제품을 더 빨리 출시하는 데 도움이 된다. 테스트 스크립트는 실기기에서 실행되게 만들 수 있고, 에뮬레이터에서도 동일하게 실행할 수 있다. Node.js로 작성된 Appium 서버는 플랫폼 독립성을 허용하는 셀레니움 웹 드라이버를 구현한다. 이를 통해 사용자는 안드로이드, iOS 기기에서 같은 코드를 실행할 수 있다. 다른 장점은 셀레니움에서 지원하는 모든 스크립트(자바, 자바스크립트, PHP, Ruby, 파이썬, C# 등)로 테스트 스크립트를 작성할 수 있다는 것이다.
이 도구는 HTTP 프로토콜을 기반으로 하는 셀레니움을 기반으로 하며 2계층 아키텍처에서 코드를 실행한다. 한 컴퓨터는 테스트 스크립트를 실행하고 다른 컴퓨터는 이를 실행한다. Appium은 안드로이드 4.2 이상, iOS 6 이상을 지원한다

 

https://www.javatpoint.com/appium

 

Appium Tutorial - Javatpoint

Appium Tutorial with What is Appium, Limitation, Architecture, Installation, Advantages, Disadvantages, Types of Mobile Application, Prerequisite to use Appium, Features, Competitors of Appium etc.

www.javatpoint.com

(중략)...Appium은 셀레니움 웹 드라이버 명령을 각각 안드로이드, iOS용 UIAutomator, UIAutomation 명령으로 변환하는 프레임워크가 있어서 모바일 OS에 대한 종속성이 없으며 다만 기기 유형에 따라 달라진다. 셀레니움은 테스트에 필요한 셀레니움 기능을 제어할 수 있는 Appium의 백엔드다.

< Appium이 제공하는 기능 >
- 앱 소스코드, 라이브러리 불필요
- 활발한 커뮤니티
- 멀티 플랫폼 지원을 통한 여러 플랫폼에서 동일한 테스트 케이스 실행 가능
- 테스트 스크립트 병렬 실행
- 변경 사항으로 인한 앱 재설치 불필요
- 다양한 언어 지원

< Appium의 장점 >
- 오픈소스라서 무료로 사용 가능, 쉬운 설치
- 하이브리드, 네이티브, 웹 앱의 자동 테스트
- Appium을 자동화와 호환되도록 앱에 추가 에이전트를 포함할 필요 없음. 스토어에 업로드할 앱을 테스트함
- 윈도우용 데스크톱 앱 테스트 지원
- 안드로이드, iOS 플랫폼 모두에 단일 API 사용

< Appium의 단점 >
- 자세한 보고서의 부족
- 테스트가 원격 웹 드라이버에 의존해서 약간 느림
- iOS의 경우 하나의 Mac OS 기기에서 하나의 인스턴스(iOS 스크립트)만 실행 가능. 즉 Mac 당 한 번에 하나의 테스트만 실행 가능. 여러 iOS 기기에서 동시에 테스트하려면 같은 수의 Mac 기기를 준비해야 함

해결법 : 이 문제는 소스 랩의 모바일 클라우드에서 스크립트를 실행하면 해결된다. 현재 여러 iOS 시뮬레이터에서 동시에 스크립트를 실행할 수 있다

 

장단점과 그 외의 Appium이 무엇인지 설명하는 부분은 대부분 동일한 내용이라 넘어간다. 단점도 그렇게 치명적인 단점들은 아니기 때문에 안드로이드, iOS 앱이 모두 존재한다면 한 번 도입을 고려해 볼 수 있는 매력적인 테스트 도구라고 생각된다.

 

Appium 아키텍처

 

Appium의 아키텍처를 도식화하면 아래와 같다.

 

https://medium.com/automationmaster/appium-mobile-app-automation-406bf8b0fd80

 

Appium은 테스트 스크립트(클라이언트)가 Appium 서버와 통신하는 클라이언트-서버 아키텍처로 구성됐다. 그래서 맥북에서 Appium을 실행할 경우 터미널을 2개 띄워서 하나는 서버, 아나는 테스트 스크립트 파일을 실행해서 테스트를 진행할 수 있다.

한 번 띄워진 Appium 서버는 HTTP를 통해 테스트 스크립트가 전송되는 걸 기다린다. 안드로이드용 UIAutomator2, iOS용 XCTest 같은 플랫폼 별 드라이버를 써서 ID, XPath 같은 로케이터 전략 기반으로 앱과 상호작용한다.

 

다음 Appium 포스팅에선 맥북에 어떻게 Appium을 설치하는지와 자바스크립트로 작성한 테스트 파일을 실기기에서 실행시키는 방법까지 확인한다.

반응형
Comments