Appium을 사용한 모바일 테스트

Appium을 사용한 모바일 테스트 소개

Appium은 프로세스를 단순화하도록 설계된 서비스 기반 솔루션입니다. 확장 애플리케이션 테스트 다양한 장치와 환경에 적용하기 위해 보안 소프트웨어 유지Appium은 자율적이고 대규모로 처리되는 작업과 스크립트를 테스트하기 위해 장치 기반 프레임워크에 명령을 전송하는 가상 서버 역할을 합니다.

Appium은 수천 대(또는 수만 대)의 실제 또는 가상화된 기기에서 테스트를 조정할 뿐만 아니라, 원하는 저장소로 데이터를 다시 전송합니다. 무엇보다도 Appium은 오픈 소스라는 점이 매력적입니다! 즉, 100% 무료일 뿐만 아니라 원하는 사용 사례에 맞게 사용자 정의하거나 통합할 수도 있습니다.

Digital.ai Continuous Testing Appium을 비롯한 여러 기술을 활용하여 다양한 기기에서 앱을 빠르게 테스트합니다. Appium 프레임워크는 확장성의 핵심 구성 요소입니다. 모바일 앱 테스트 자율적이고 지속적으로 수행되어야 합니다. 방법에 대한 자세한 내용은 다음과 같습니다. Digital.ai 기업이 Appium을 사용할 수 있도록 지원합니다. 애피움 스튜디오.

Appium 개요

Appium은 오픈 소스 크로스 플랫폼 및 크로스 기술 모바일 테스트 자동화 프레임워크입니다. Appium을 사용하면 개발자와 테스터는 각 기기에 대한 테스트 도구를 수동으로 생성하는 과정을 생략할 수 있습니다. 대신, Appium 서버를 생성하여 일반화된 테스트 스크립트에서 기기로 직접 명령을 전달할 수 있습니다.

최근 몇 년 동안 Appium은 큰 파장을 일으켰습니다. 모바일 자동화 테스트 세그먼트. 이 도구는 플랫폼에 구애받지 않기 때문에 빠르게 인기를 얻었습니다. 즉, 동일한 테스트 스크립트를 사용하여 최소한의 변경만으로 iOS 및 Android 앱을 모두 테스트할 수 있습니다. Appium은 다음을 지원합니다. 자동 테스트 웹 앱과 네이티브 앱, 하이브리드 앱 모두 가능합니다.

Appium은 Python, Ruby, Java, JavaScript, PHP 등 다양한 프로그래밍 언어로 테스트 코드를 작성할 수 있다는 점도 큰 장점입니다. Appium을 사용하면 실제 기기, 에뮬레이터, 시뮬레이터를 테스트할 수 있습니다.

Appium의 강력한 성능은 Appium 클라이언트가 Appium 서버를 통해 모바일 기기와 상호 작용할 때 사용하는 JSON Wire 프로토콜 덕분입니다. 학습 곡선이 있지만, 익숙해지면 자동화 테스트를 쉽고 효과적으로 수행할 수 있으므로 배우는 데 시간을 투자할 가치가 있습니다.

원래 CLI 도구로 개발된 Appium은 이제 Windows, MAC, Linux 배포판에서 실행할 수 있는 강력하고 생생한 GUI 데스크톱 애플리케이션으로 변모했습니다.

앱 개발에서 모바일 테스트의 중요성

Appium 이전 시대의 테스트

디지털 소프트웨어가 전 세계 거의 모든 가정과 주머니에 퍼지기 시작하면서, 디지털 제품 개발자들은 다양한 기기에서 기술을 테스트할 새로운 방법을 찾아내는 과제를 맡게 되었습니다.

수동 테스트 과거 한때 주요 방법이었습니다. 성능 테스트, 버그 발견, 보안, 규정 준수 및 거버넌스(SCaG) 보장에 필요한 실제 조치를 취하는 것을 포함합니다. 수동 테스트 세션은 워크스테이션 앞에 앉아 소프트웨어 사용자 역할을 하는 사람이 마우스와 키보드를 사용하여 프로그램과 상호 작용하고 성능과 무결성의 다양한 측면을 테스트하는 방식으로 진행됩니다.

소프트웨어 팀은 테스트 스크립트를 사용하여 느리고 번거로운 수동 테스트를 넘어설 수 있었습니다. 제품의 무결성을 확인하기 위해 설계된 일련의 작업을 수행하도록 테스트 애플리케이션을 프로그래밍함으로써 개발 및 QA 팀은 실제 테스터가 수행할 수 있는 수준을 넘어 테스트 규모를 확장할 수 있었습니다.

하지만 스크립트 기반 테스트 도구를 사용하더라도 확장성에는 한계가 있습니다. 다양한 기기 환경은 발견되지 않은 취약점, 버그, 그리고 문제에 대한 새로운 가능성을 제공합니다. 또한, 각 기기는 테스트 프로그램이 수용해야 하는 고유한 프레임워크를 가지고 있습니다. 과거에는 이러한 장벽을 극복하기 위해 각 기기에 맞는 고유한 소프트웨어 개발 키트(SDK)를 코딩하거나 테스트 도구의 고유한 버전을 컴파일해야 했습니다. 이제 Appium을 사용하면 각 기기에 대한 접근을 자동/자율적으로, 그리고 원격으로 수행할 수 있습니다.

JSON Wire Protocol이란 무엇이고 Appium에서는 어떻게 작동하나요?

JSON Wire Protocol은 이기종 시스템에서 클라이언트 라이브러리와 서버 간의 통신을 원활하게 하는 널리 사용되는 표준입니다. Appium은 플랫폼과 언어에 구애받지 않는 도구로서 JSON Wire Protocol의 이 기능을 활용합니다.

JSON은 JavaScript Object Notation의 약자로, 복잡한 데이터 구조를 표현하는 방식입니다. 와이어 프로토콜은 지점 간 데이터 전송 메커니즘입니다.

Appium 아키텍처에서 Appium 서버와 클라이언트 라이브러리 간의 통신은 JSON Wire 프로토콜을 사용하는 WebDriver를 통해 이루어집니다. WebDriver는 JSON 입력을 포함하는 HTTP REST 요청을 통해 데이터를 전송합니다. 이러한 방식은 직렬화 및 역직렬화 방식을 사용하여 객체 데이터를 JSON 형식으로 변환하고, 그 반대로도 변환합니다.

서버는 크로스 플랫폼 도구이므로 클라이언트 라이브러리의 프로그래밍 언어를 이해할 필요가 없으며, 대신 자동화 세션을 만들고 관리하기 위한 프로토콜만 식별하면 됩니다.

JSON 프로토콜 아키텍처

  1. 로컬 엔드: 프로토콜의 클라이언트 측으로, 일반적으로 특정 프로그래밍 언어로 작성된 클라이언트 라이브러리입니다.
  2. 원격 끝: 프로토콜의 서버 측입니다.
  3. 중개자: 로컬 엔드뿐만 아니라 원격 엔드 역할도 수행할 수 있는 프록시 시스템입니다.
  4. 엔드포인트 노드: 노드 구조의 최종 원격 끝입니다.

원격 엔드는 로컬 엔드 클라이언트의 요청을 읽고 TCP 소켓을 통해 응답을 쓰는 서버입니다.

예를 들어, 새 세션 명령을 사용하여 엔드포인트 노드에서 테스트 작업을 수행하기 위한 새 WebDriver 세션을 만들거나 요소 찾기 명령을 사용하여 특정 요소를 검색할 수 있습니다.

Appium 설치

Appium은 두 가지 버전으로 제공됩니다.

  1. CLI 기반 Appium 서버
  2. GUI 기반 Appium Desktop(Appium Server에 GUI 계층을 추가하고 Appium Inspector를 제공함)

CLI 기반 Appium 서버 설치
Appium은 테스트 자동화 작업을 쉽게 관리할 수 있는 생동감 넘치는 GUI 데스크톱 앱을 제공합니다. 하지만 테스트를 앱에 통합하면 CI 파이프라인을 사용하려면 스크립트를 사용하여 Appium Server를 시작해야 합니다. 따라서 첫 번째 단계로 Appium Server를 설치해야 합니다.

Appium 설치

Appium은 두 가지 버전으로 제공됩니다.

  1. CLI 기반 Appium 서버
  2. GUI 기반 Appium Desktop(Appium Server에 GUI 계층을 추가하고 Appium Inspector를 제공함)

CLI 기반 Appium 서버 설치

Appium은 테스트 자동화 작업을 쉽게 관리할 수 있는 생동감 넘치는 GUI 데스크톱 앱을 제공합니다. 하지만 CI 파이프라인에 테스트를 통합할 때는 스크립트를 사용하여 Appium Server를 시작해야 합니다. 따라서 Appium Server를 설치해야 합니다.

1 단계 : Node.js 설치

Appium은 Node.js로 작성되었으므로 Appium을 사용하려면 먼저 Node.js를 설치해야 합니다. Node.js 웹사이트를 방문하여 소프트웨어를 다운로드하세요.

https://nodejs.org/en/download/current/

다운로드가 완료되면 패키지를 설치하세요.

라이센스 계약에 동의하고 다음 화면으로 넘어가세요.

일반적으로 C:Program Filesnodejs인 Node.js 경로를 선택하세요.

다음 화면에서는 구성 요소가 설치되는 모습을 보여줍니다. Node.js와 함께 패키지 관리자가 필요합니다. Node.js에 권장되는 패키지 관리자는 Npm입니다. 따라서 NPM 도구도 설치하세요.

다음 화면에서는 네이티브 모듈을 컴파일하는 데 필요한 도구 설치를 허용할지 묻는 메시지가 표시됩니다. 해당 옵션을 선택하거나, 필요한 경우 GitHub에서 직접 설치할 수 있습니다.

다음을 클릭하여 설치를 완료하세요.

설치 후 환경 변수에 npm과 nodejs의 경로가 포함되어 있는지 확인하세요.

시스템 경로는 Node.js 경로를 보여주고 사용자 변수는 npm 경로를 보여줍니다.

시작->시스템->고급->환경 변수를 마우스 오른쪽 버튼으로 클릭합니다.

2단계: 명령 프롬프트에서 Appium 설치

관리자 권한으로 명령 프롬프트를 열고 다음 명령을 입력하세요.

npm install -g Appium

npm 패키지 관리자가 설치 절차를 시작합니다.

성공적으로 설치한 후 Appium을 사용할 수 있습니다.

명령 프롬프트에서 Appium을 열려면 Appium을 입력하고 그 뒤에 IP 주소와 서버 포트 번호를 입력합니다.

앱피움 -a 127.0.0.1 -p 4723

이제 Appium이 실행 중이고 REST HTTP가 IP 주소(위의 예에서 localhost 127.0.0.1 및 서버 포트 4723)에서 수신 대기합니다.

GUI 기반 Appium 데스크탑 설치

Appium Desktop을 다운로드하고 설치하세요

Appium 데스크톱을 다운로드하고 설치하려면 다음을 방문하세요. Appium 웹사이트.

설치가 성공적으로 완료되면 Appium 데스크톱을 엽니다.

Appium이 시작되면 호스트 IP 주소와 서버 포트 번호를 입력하라는 메시지가 표시됩니다.

Appium은 HTTP 서버일 뿐이므로 그 자체로는 아무런 작업도 수행하지 않습니다. 최종 기기에서 작업을 요청하고 수행하려면 클라이언트 라이브러리가 필요합니다. 따라서 Appium을 시작할 때 서버 포트를 설정하는 것이 중요합니다. 서버 포트는 클라이언트가 Appium에 연결하고 통신하는 포트입니다. 기본 서버 포트는 4723입니다. 클라이언트 컴퓨터에 연결할 때는 이 서버 포트를 지정해야 합니다.

서버 포트를 변경하려면 '고급' 탭을 클릭하세요. 서버 구성 설정 화면이 나타납니다. 세부 정보를 입력하고 서버를 시작하세요.

다음 번을 위해 이 설정을 저장하려면 사전 설정으로 저장한 다음 다음에 Appium을 열 때 사전 설정 탭 설정을 선택하세요.

이제 Appium Desktop을 사용할 준비가 되었습니다.

Appium 아키텍처 이해

Appium은 클라이언트-서버 아키텍처를 사용합니다. Appium 아키텍처의 주요 구성 요소는 다음과 같습니다.

1) Appium 서버: Appium Server는 Appium 아키텍처의 핵심 구성 요소입니다. Node.js로 작성되었으며 머신 또는 클라우드에서 실행됩니다. Appium Server는 JSON Wire Protocol을 통해 Appium 클라이언트 라이브러리로부터 요청을 수신하고, 모바일 드라이버(Android 드라이버/iOS 드라이버)를 호출하여 해당 네이티브 테스트 자동화 프레임워크에 연결하여 기기에서 클라이언트 작업을 실행합니다. 테스트 결과는 클라이언트로 전송됩니다. Appium Server는 여러 세션을 생성하여 여러 기기에서 테스트를 실행할 수 있습니다.

2) Appium 클라이언트 라이브러리: Appium 클라이언트는 JSON Wire 프로토콜을 통해 createSession() 명령을 사용하여 서버에 테스트 자동화 세션을 시작하도록 요청하고, 여러 모바일 기기에서 테스트를 실행한 후 Appium 서버로부터 나머지 결과를 수신합니다. Appium 클라이언트 라이브러리는 PHP, Java, Ruby, JavaScript, C#, Python 등 여러 언어로 제공됩니다.

3) JSON 와이어 프로토콜: Appium 클라이언트-서버 아키텍처에서 Appium 클라이언트는 WebDriver 개발자 팀이 개발한 JSON Wire 프로토콜을 통해 Appium 서버와 통신합니다. 이를 통해 개발자는 RESTful API를 통해 표준 엔드포인트 및 사전 정의된 엔드포인트에 액세스할 수 있습니다. JSON Wire 프로토콜을 사용하면 모바일 브라우저에서 웹사이트와 앱을 테스트하는 동시에 테스트 자동화 세션 중에 기기에 앱을 설치하거나 제거할 수 있습니다.

4) Appium 드라이버: Appium은 플랫폼과 기술에 구애받지 않습니다. 다양한 플랫폼을 효과적으로 관리하기 위해 Appium은 여러 드라이버를 사용하고 API를 해당 플랫폼의 자동화 세션으로 변환합니다.

  1. UiAutomator2: Android 기기 테스트를 위한 기본 Appium 드라이버
  2. UiAutomator1: 이전 안드로이드 버전용 Appium 드라이버.
  3. XCUITest: iOS 기기 테스트를 위한 Appium 드라이버
  4. WinAppDriver: Windows 장치 테스트를 위한 Appium 드라이버
  5. 에스프레소: Android 기기 테스트를 위한 새로운 Appium 드라이버

5) 자동화된 테스트 프레임워크: Appium은 테스트 기기에서 클라이언트 작업을 실행하기 위해 기본 자동화 테스트 프레임워크를 사용합니다. TCP 서버 역할을 하는 bootstrap.js에 연결하여 기기에서 테스트 명령을 실행합니다.

  1. UiAutomator 프레임워크: Android 기기 테스트를 위해
  2. XCUITest 프레임워크: iOS 앱을 테스트하려면

Appium 작동 방식

Appium Server는 Node.js로 작성되었으며 클라이언트-서버 아키텍처를 사용합니다. 즉, 클라이언트 머신은 프로토콜을 통해 서버와 통신합니다.

자동화 테스트 세션을 시작하려면 클라이언트 머신이 JSON Wire 프로토콜을 통해 Appium 서버에 요청을 보냅니다. 테스트 코드는 Java, Ruby, Python, PHP, C#, JavaScript 등 여러 프로그래밍 언어로 작성할 수 있습니다. 그러면 Appium 서버는 새로운 테스트 자동화 세션을 생성하고 적절한 iOS/Android 드라이버를 호출합니다. Appium 서버가 해당 네이티브 테스트 프레임워크에 연결되면, 사용자와 마찬가지로 모바일 기기에서 실행 중인 부트스트랩(bootstrap.jar/bootstrap.js) 서비스와도 상호 작용하여 작업을 수행합니다.

Appium의 매우 큰 장점 중 하나는 개발자가 동일한 테스트 코드를 사용하여 iOS와 Android 기기를 테스트할 수 있다는 것입니다. 하지만 여기서 어려운 점은 iOS 기기와 Android 기기의 테스트 자동화 요청을 구분하는 것입니다. Appium은 원하는 기능 옵션을 고려하여 이를 수행합니다. 요청 세션을 생성할 때 deviceName, platformName, appPackage, appActivity 등의 키-값 쌍을 명시해야 합니다. 이러한 값을 기반으로 Appium 서버는 클라이언트 요청을 해당 테스트 프레임워크로 효율적으로 라우팅합니다.

지원되는 플랫폼

Android

  1. 클라이언트 머신은 JSON Wire 프로토콜을 통해 Appium 서버에 요청을 보내 새로운 테스트 자동화 세션을 만듭니다.
  2. 테스트 자동화 세션이 서버에 생성됩니다. 서버는 필요한 기능도 확인합니다. Android 플랫폼 테스트를 위해 서버는 Android 네이티브 테스트 자동화 프레임워크인 UiAutomator2 프레임워크에 연결합니다.
  3. UiAutomator2는 기기에서 실행 중인 bootstrap.jar와 통신하여 TCP 서버 역할을 합니다. 에뮬레이터, 시뮬레이터는 물론 실제 기기에서도 작동합니다.
  4. jar는 명령을 수신하여 Android 기기에서 테스트를 실행합니다. 테스트 로그 정보를 UiAutomator2로 전달하고, UiAutomator2는 이 정보를 Appium 서버로 전송합니다. Bootstrap.jar는 해당 정보를 클라이언트로 전달합니다.

iOS

  1. 클라이언트 머신은 JSON Wire 프로토콜을 통해 Appium 서버에 요청을 보내 새로운 테스트 자동화 세션을 만듭니다.
  2. 테스트 자동화 세션이 서버에 생성됩니다. 서버는 필요한 기능도 확인합니다. iOS 플랫폼 테스트의 경우, 서버는 Apple XCode와 함께 제공되는 iOS 네이티브 테스트 자동화 프레임워크인 XCUITest 프레임워크에 연결합니다.
  3. XCUITest 프레임워크는 TCP 서버 역할을 하는 기기에서 실행 중인 bootstrap.js와 통신합니다. 에뮬레이터, 시뮬레이터는 물론 실제 기기에서도 작동합니다.
  4. Node.js는 명령을 수신하여 iOS 기기에서 테스트를 실행합니다. 테스트 로그 정보를 XCUITest로 전달하고, XCUITest는 이 정보를 Appium 서버로 전송합니다. 이 정보는 클라이언트와 통신합니다.

Appium을 활용하여 수행 Continuous Testing

Appium은 Appium Server를 사용하여 테스트 요청을 전달하고 테스트 데이터를 자동으로 검색할 수 있다는 점에서 큰 이점을 제공합니다. 이 기능은 지속적 테스트 프레임워크와 완벽하게 호환됩니다.

지속적 테스트에서는 애플리케이션이 제품 수명 주기 전반에 걸쳐 정기적으로 테스트됩니다. 여기에는 통합 전과 배포 후 개별 릴리스 빌드 테스트가 포함됩니다. 테스트를 지속적으로 실행함으로써 제품 팀은 테스트 일정을 수동으로 예약하고 빌드하는 데 필요한 많은 업무를 자동화하는 동시에, 문제, 버그 또는 취약점을 발견하기 위해 제품을 더 자주, 더 집중적으로 테스트할 수 있습니다.

SeeTest 플랫폼은 Digital.ai Continuous TestingSeeTest는 클라우드 또는 원격 네트워크에서 기기와 브라우저를 테스트하는 데 사용되는 엔드 투 엔드 솔루션입니다. SeeTest는 Appium, Selenium, XCUITest 등의 도구와 완벽하게 호환됩니다.

아래 섹션에서는 Windows용 Appium Desktop에 SeeTest Cloud를 연결하는 단계별 절차를 제공합니다.

Appium Desktop을 SeeTest 플랫폼에 연결

SeeTest 플랫폼은 클라우드 또는 원격 네트워크를 통해 기기와 브라우저를 테스트하는 엔드 투 엔드 솔루션입니다. SeeTest는 Appium, Selenium, XCUITest 등의 도구와 완벽하게 호환됩니다. 아래 섹션에서는 SeeTest Cloud를 Windows용 Appium Desktop에 연결하는 단계별 절차를 설명합니다.

당신이 필요합니다 유효한 SeeTest Cloud 계정.

1단계: Appium Desktop을 실행하고 새 세션을 시작합니다.

Appium Desktop이 실행되면 '새 세션 창...'을 엽니다.

 

2 단계 : SeeTest Cloud에서 액세스 키 가져오기

SeeTest Cloud UI로 이동하여 사용자를 나타내는 아이콘을 클릭하세요. 그런 다음 아래와 같이 '액세스 키 가져오기'를 클릭하세요.

오픈 액세스 키 대화 상자에서 액세스 키를 클립보드에 복사합니다.

참고: 이 경우에는 다음을 사용했습니다. SeeTest Cloud의 공모 연결 환경 설정에서.

3 단계 : SeeTest Cloud 연결 설정 및 원하는 기능을 지정합니다. 이전 단계에서는 Appium Server에 연결할 수 있는 대화 상자가 열립니다. 이 단계에서는 SeeTest Cloud Appium Server의 연결 기본 설정을 지정합니다.

'클라우드 공급자'에서 전문가를 선택하세요

클라우드 URL과 액세스 키를 제공하세요.

사용하려는 기기에 따라 "platformName" 기능을 iOS 또는 Android로 설정합니다.

'세션 시작'을 클릭하여 SeeTest Cloud에 연결하세요. 이 단계에서는 SeeTest Cloud에 연결됩니다.

SeeTest Cloud 사용자 인터페이스에서도 Appium Desktop 세션을 SeeTest Cloud에서 사용할 수 있습니다. 이를 통해 사용자는 기기를 더욱 효율적으로 제어할 수 있습니다.

SeeTest Cloud 사용자 인터페이스의 실행 탭으로 이동하여 디버그를 클릭하여 진행 중인 Appium Desktop 세션을 사용합니다.

이 기능은 테스트 사용자가 SeeTest와 Appium의 강력한 기능을 동일한 세션에서 활용할 수 있어 매우 편리합니다. 이 세션의 주요 이점은 SeeTest를 사용하여 수행하는 테스트 작업이 더 빠르고 사용자 친화적이라는 것입니다. Appium Inspector를 사용하면 세션의 모든 요소를 ​​검사할 수 있습니다.

 

Appium은 자동화를 위한 편리한 솔루션입니다. Continuous Testing 대규모

Appium의 모든 장점과 다른 테스트 도구와의 손쉬운 통합 덕분에 Appium의 인기는 시간이 지나도 줄어들 기미가 보이지 않습니다. 저희 팀은 SeeTest의 최신 버전을 개발하고 출시할 때마다 이 점을 항상 염두에 두고 있습니다.

블로그 게시물의 정보는 이 페이지를 북마크하여 언제든 튜토리얼 정보를 확인하실 수 있도록 하세요. Appium 통합 기능을 아직 사용해 보지 않으셨다면 직접 다운로드하셔서 확인해 보시기를 권장합니다.

 

몇 분 안에 Appium 자동화를 구축하고 실행하고 싶다면 Appium Studio가 적합할 수도 있습니다. 더 알아보기 드리겠습니다.

당신은 또한 좋아할 거라