Selenium 모바일 테스트를 위한 포괄적인 가이드

최종 업데이트: 2020년 4월 06일 — Continuous Testing 전문가
Continuous Testing

 

오늘의에서 DevOps 시대를 맞이하여 지속적인 개발과 지속적인 배포는 소프트웨어 개발 환경의 핵심 목표입니다. 코드는 지속적으로 개발되고 지속적으로 테스트됨 자동화 테스트 도구는 애플리케이션을 지속적으로 배포하는 데 필수적입니다. Selenium은 Selenium 개발자가 개발 과정에 지속적 테스트를 통합할 수 있도록 지원하는 인기 테스트 자동화 도구입니다. 다양한 브라우저, 플랫폼 및 운영 체제를 지원합니다.

하지만 스마트폰의 확산으로 다양한 기기, 플랫폼, OS가 시장에 출시되었습니다. 이전에는 모바일 화면이 작고 디자인도 사용자 친화적이지 않았습니다. 하지만 오늘날의 화면은 이러한 추세를 바꾸어 놓았습니다. 모바일 중심 앱이 새로운 트렌드로 자리 잡았습니다. 따라서 기업은 이러한 변화에 맞춰 테스트 전략을 재조정해야 합니다. 모바일 앱 솔루션.

모바일 앱은 사용하기 쉽고 접근성이 뛰어납니다. 오늘날 더 많은 사람들이 모바일 기기를 사용하여 온라인 쇼핑을 하거나 서비스를 구독하고 있습니다. 현재 비즈니스 리소스의 60%가 모바일을 통해 접근합니다. 하지만 대부분의 테스터는 Appium보다는 Selenium 모바일 테스트를 사용하여 테스트 자동화 솔루션을 구축하고 있습니다.

Selenium은 모바일 앱 테스트를 지원하나요? 모바일 테스트를 직접 지원하지는 않지만, 모바일 앱 테스트 프레임워크를 제공합니다. Selendriod는 기업이 Android 기기에서 자동화된 테스트를 실행할 수 있도록 지원하는 Selenium 기반 모바일 테스트 프레임워크입니다. 하지만 이 경우 선택지는 제한적입니다. 바로 이 부분에서 Appium이 Selenium 모바일 테스트 개발자에게 도움을 줄 수 있습니다. Appium은 Selenium 기반의 강력한 모바일 자동화 테스트 프레임워크로, 다양한 플랫폼과 기술을 지원합니다. 여기에서 Android와 iOS 모두에 대한 단일 테스트 코드를 작성할 수 있습니다.

SeeTest를 이용한 Selenium 및 Appium 테스트에 대해 자세히 알아보려면 여기를 클릭하세요. 

기술 프로토콜

Selenium과 Appium은 동일한 프로토콜인 JSON Wire 프로토콜을 사용합니다. 이 프로토콜은 최근 W3C 표준 프로토콜이 되었습니다. 오늘날 많은 업계와 브라우저 제공업체에서 이 프로토콜을 표준 프로토콜로 구현하고 있습니다.

셀레늄 아키텍처

셀레늄 아키텍처

Selenium을 사용하면 Java, PHP, C#, Python 등 다양한 언어로 코드를 작성할 수 있습니다. 코드는 JSON Wire 프로토콜을 통해 실행됩니다. 이 프로토콜은 브라우저를 제어하는 ​​데 사용되는 REST API입니다. 코드가 HTTP REST 요청으로 실행되면 Selenium 서버에서 새 세션을 생성합니다. 그런 다음 브라우저 드라이버(Chrome 드라이버, Safari 드라이버, Edge 드라이버)를 호출하여 브라우저에 접근합니다. 브라우저는 요청된 정보를 브라우저 드라이버를 통해 Selenium 서버로 전송하고, 이 정보는 다시 클라이언트로 전송됩니다.

셀레늄 그리드 구성 요소

셀레늄 그리드 구성 요소

Selenium Grid는 세 가지 주요 구성 요소로 구성됩니다. Selenium Grid Hub는 테스트 작업을 노드에 배포하는 서버 머신입니다. 서버 머신은 미리 정의된 원하는 기능에 따라 테스트를 수신할 노드를 결정합니다. Selenium Grid Node는 허브에서 수신한 테스트를 실행하는 머신입니다. 각 서버는 여러 노드를 가질 수 있습니다. wd/hub는 허브와 노드 간의 통신을 원활하게 하는 URL 부분입니다.

Appium 아키텍처

Appium 아키텍처

Appium 아키텍처는 Selenium과 매우 유사합니다. Appium은 Selenium 모바일 테스트 개발자가 Java, PHP, C#, Python, Ruby, Javascript(WebdriverIO), Javascript(WD) 등 여러 언어로 코드를 작성할 수 있도록 지원합니다. 하지만 Appium은 다른 옵션도 구현합니다. 예를 들어 Java를 사용하는 경우 RemoteWebDriver를 상속합니다. Appium 서버는 머신이나 클라우드에 설치할 수 있습니다. JSON Wire 프로토콜을 통해 Appium 클라이언트에서 createSession() 명령을 실행하면 Appium 서버는 Appium 드라이버(Android 드라이버/iOS 드라이버)를 통해 모바일 기기에 새 세션을 생성합니다. Android 기기의 경우 Android ADB 인프라를 사용하며, 필요한 경우 머신에 APK를 생성합니다. iOS의 경우 모바일 IDE 프레임워크를 사용하고 명령줄과 통신합니다.

이 아이디어는 모바일 기기에서 무한한 더미 테스트를 실행하는 것입니다. iOS에서는 XCUITest를 실행합니다. 테스트는 서버에서 제어합니다.

Appium 설치

Android용 Appium 설치는 매우 간단합니다. 하지만 iOS 기기를 사용하는 경우 약간 복잡해집니다. 가장 큰 문제는 앱을 바로 기기에 설치할 수 없다는 것입니다. 개발자용 애플리케이션을 다루는 경우, 모든 애플리케이션은 기기에 서명되어야 합니다. 에뮬레이터를 사용하는 경우 특정 절차를 우회할 수 있습니다. 또한 Apple 개발자 ID, 유효한 개발 인증서, 프로비저닝 프로파일, 서명된 .ipa 파일, XCode, 그리고 명령줄 개발자 도구가 필요합니다. 게다가 XCode에서 개발용으로 기기를 설정해야 합니다.

예를 들어, Java를 사용하는 경우 다음 작업을 수행해야 합니다.

  • Java 구성
  • 홈브류 설치
  • 다음으로, node.js와 npm을 설치하세요.
  • 그런 다음 Appium을 설치하세요
    • npm 설치 –g appium
  • 마지막으로 wd를 설치하세요
    • npm 설치 wd
  • ilibmobiledevice를 설치할 appium iOS 장치를 구성합니다.
  • XCUITest 드라이버 구성

Appium을 설치하는 방법에 대한 연습 단계는 이 튜토리얼에서 확인할 수 있습니다.

http://appium.io/docs/en/about-appium/getting-started/#installing-appium

커버 매트릭스

Android 앱을 테스트하려면 Windows, MAC, Linux 컴퓨터를 사용할 수 있습니다. 하지만 iOS 앱을 테스트하려면 MAC 기기가 필요합니다. 클라우드는 iOS와 Android 애플리케이션 모두에 사용할 수 있습니다.

셀레늄 개발자 커버 매트릭스

모바일 기기 대 브라우저

모바일 테스트를 시작하기 전에 모바일 기기와 브라우저 간의 환경적 차이점을 이해하는 것이 중요합니다.

  • 제스처 : 모바일 기기는 스와이프, 핀치, 두 손가락 터치, 다중 손가락 터치 등 웹 브라우저에서는 제공되지 않는 다양한 입력 옵션이나 제스처를 사용합니다.
  • 다른 URL 시스템: 모바일 앱은 일반 웹 URL이 없는 모바일 기기에 특화되어 있습니다.
  • 실제 장치 및 에뮬레이터: 실제 기기와 시뮬레이터에서 테스트합니다. Android의 경우 두 옵션 모두에 동일한 APK를 사용합니다. 하지만 iOS의 경우, 시뮬레이터는 x64에서 실행되는 반면 실제 기기는 ARM 프로세서를 사용하기 때문에 실제 기기와 시뮬레이터에 서로 다른 기술을 사용합니다. 따라서 두 옵션 모두에서 테스트를 수행해야 합니다.
  • 버튼 : 모바일 기기에는 홈, 전원, 볼륨 등의 버튼이 있습니다. 테스트할 때 이러한 버튼을 고려해야 합니다.
  • 홈 화면: 모바일 기기에는 알림 표시줄이 있는 홈 화면이 있습니다. 따라서 홈 화면에서의 상호작용을 고려해야 합니다.
  • 회전 화면: 모바일 화면은 세로 모드와 가로 모드로 전환이 가능하며, 화면 크기도 변경 가능합니다.
  • 다양한 네트워크 연결: 2G, 3G, 4G, 5G 등 다양한 네트워크 환경을 고려해야 합니다. 특히 다양한 인터넷 속도에서 기능 테스트를 수행해야 합니다.

모바일 앱 대 웹 앱

애플리케이션 측면에서 모바일 앱은 웹 앱과 다릅니다.

  • 애플리케이션 수명주기: 모바일 앱의 수명 주기는 다양하고 복잡합니다. 앱을 설치, 삭제, 실행 및 종료할 수 있습니다.
  • 상태 기반 탐색: 모바일 앱은 세션을 기억하고 다음 로그인 시 그에 따라 반응합니다. 더욱 안정적인 상태를 유지하며 탐색도 간편합니다.
  • DOM UI 기술: iOS와 Android는 다릅니다
  • 클라이언트 측 스크립팅: 예를 들어 JavaScript는 모바일 앱에서 사용할 수 없습니다.
  • 디버깅 도구: (예: Chrome의 F12)를 사용할 수 없습니다.

모바일 기능

로컬 기능에 대해서는 다음 세부 정보를 지정해야 합니다.

  • 플랫폼 이름: 플랫폼(iOS/Android)을 지정하세요
  • 장치 이름: 장치 이름을 지정하세요(여러 장치를 사용하게 되므로)
  • 자동화이름: 사용된 자동화 기술을 지정합니다(예: iOS용 XCUITest)
  • 앱: 애플리케이션을 설치하려면 apk 경로를 지정하세요.
  • bundleId/appActivity: 앱의 번들 ID를 지정하세요. Android의 경우 번들 액티비티와 앱에서 실행할 수 있는 특정 액티비티가 있습니다. 반면 iOS의 경우 번들 액티비티만 있습니다.

클라우드 기능

Selenium 개발자가 클라우드 기술을 사용하는 경우:

  • 액세스 키: 액세스 키는 원격 테스트에 대한 액세스를 제공합니다.
  • deviceQuery: 클라우드에서 사용하는 장치를 찾으려면

모바일 명령

모바일 명령을 오버로드하려면 Selenium 개발자는 ExecuteScript를 사용할 수 있습니다. 애플리케이션과 관련된 일부 모바일 명령은 다음과 같습니다.

  • 설치앱
  • 런치앱
  • 리셋앱
  • 앱 제거
  • 종료앱
  • 백그라운드에서 앱 실행

장치 명령의 몇 가지 예

  • 로크
  • 자물쇠를 열다
  • 회전
  • 흔들
  • 키보드 숨기기
  • isLock

사용 가능한 모든 명령은 Appium 페이지에서 확인할 수 있습니다. http://appium.io/docs/en/commands/mobile-command/

Selenium과 Appium을 사용하여 모바일 테스트를 만드는 방법은 무엇입니까?

셀레늄 사용하기

1단계: Gradle 파일 만들기

테스트를 시작하려면 IDE를 여세요. 예를 들어 Java를 사용하는 경우 IntelliJ IDE로 이동하면 됩니다.

  • 새 프로젝트를 만듭니다
  • Gradle을 선택하세요(Maven 등 다른 옵션도 사용 가능)
  • 프로젝트에 이름을 지정하세요(예: Selenium 2)
  • 마침을 클릭하십시오.

2단계: Gradle에 Selenium 추가

Gradle에 Selenium 추가

  • 새 버전을 클릭하면 새 버전이 표시됩니다. 하지만 지금은 알파 버전이 표시되고 있습니다. Selenium Java를 클릭하세요.

Selenium Java를 클릭하세요

  • 다음 페이지에서 최신 버전을 선택하세요

Selenium Java 새 버전을 클릭하세요

  • 다음 페이지에서 코드를 복사하여 IDE 종속성 상자에 붙여넣으세요. 기기에 종속성이 없는 경우, 필요한 모든 종속성이 다운로드됩니다.

다음 페이지에서 코드를 복사하여 IDE 종속성 상자에 붙여넣습니다.

  • 이 테스트에는 TestNG를 사용할 것입니다. Selenium TestNG와 Chrome 드라이버를 임포트하세요. Chrome 드라이버는 다음 링크에서 다운로드할 수 있습니다: https://chromedriver.chromium.org/
  • 새 패키지(디렉토리)를 만들고 이름을 지정합니다(예: William.demo).
  • 클래스 만들기(예: williamSeleniumdemo)
  • 이제 필요한 모든 요소를 ​​준비했습니다. Selenium 테스트 코드를 작성하세요.
    • 예를 들어, driver.get()은 URL을 열고 페이지가 로드될 때까지 기다립니다.
    • Driver.navigate()를 사용하여 페이지 간 탐색
    • findElement(By.xpath())
    • driver.quit()를 사용하여 모든 브라우저를 닫습니다.
  • 테스트를 실행하세요

아피움 테스트

Appium을 사용하여 iOS 기기를 테스트하는 것은 Android 기기에 비해 다소 복잡합니다. 따라서 이 테스트 가이드에서는 iOS 기기를 사용하여 테스트합니다.

  1. IntelliJ IDE를 엽니다.
  2. Gradle에 Appium 종속성을 추가합니다(Selenium 종속성이 있는 경우 제거).
  3. iOS 드라이버를 설치하세요(WebDriver에는 특정 iOS 명령이 없습니다)
  4. Selenium 개발자는 Selenium 테스트를 기준으로 사용하고 이를 변경하여 iOS 테스트로 만들 수 있습니다.
    1. 원하는 기능을 정의합니다(클라우드 포맷에 로그인하는 방법, 애플리케이션 실행 등을 정의하기 위한 주요 값 맵을 설정하는 데 도움이 됩니다.)
    2. 기기에 접근하려면 액세스 키가 필요합니다. 클라우드 환경으로 이동하여 액세스 키를 생성하세요.
    3. 테스트에 대한 이름을 만듭니다(예: WilliamAppium 테스트)
    4. 사용할 애플리케이션을 선택하고 번들 ID를 받으세요. 클라우드 환경으로 이동하여 애플리케이션을 기기에 업로드할 수도 있습니다.
    5. MobileCapabilityType을 정의합니다
    6. 새 iOS 드라이버를 생성하고 wd URL을 제공하여 드라이버를 시작합니다.
  5. 이제 IDE에서 테스트를 실행해 보세요. 드라이버가 실행되고 모바일 기기에서 테스트가 실행됩니다.
  6. 클라우드 페이지로 가서 기기를 열면 애플리케이션이 어떻게 설치되고, 실행되고, 닫히는지 실시간으로 볼 수 있습니다.

Appium 앱에서 테스트 실행

Appium 앱에서 테스트 실행

  • Appium으로 이동
  • 새로운 세션을 만드세요
  • 여러 클라우드 제공업체가 있습니다. 클라우드 제공업체 중 하나를 선택하세요.

여러 클라우드 제공업체가 있습니다. 클라우드 제공업체 중 하나를 선택하세요.

  • 사용자 이름과 액세스 키를 입력하세요
  • 플랫폼 이름을 정의합니다(예: iOS)
  • DeviceQuery를 정의합니다(예: os=iOS)
  • 세션 시작을 클릭하세요
  • 장치가 자동으로 선택됩니다. Appium 데스크톱을 사용하여 다양한 요소와 요소의 속성을 확인할 수 있습니다.
  • 코드 작성
    • 드라이버.findelement(by.xpath)
    • Sendkeys() (사용자 이름 및 비밀번호)
  • 코드를 실행하세요. 이제 다른 장치를 선택합니다.
  • 클라우드로 가서 다양한 장치에서 테스트가 어떻게 실행되는지 확인하세요.
  • 디버깅을 위해 중단점을 넣을 수 있습니다.

이제 Selenium 개발자들이 Appium을 사용하여 테스트를 성공적으로 실행했습니다.

Experitest를 사용한 Appium 및 Selenium 테스트에 대해 자세히 알아보려면 여기를 클릭하세요..

가이 아리엘리 - CTO (최고 기술 담당자)

당신은 또한 좋아할 거라