--> How to Use Remote TestKit – Mobile app testing Remote TestKit

Remote TestKit

Device Cloud for
Mobile App Testing

2018/6/20 |

How to Use Remote TestKit

Appium 기능 설명서

요약

Appium은 스마트폰 또는 태블릿에서 테스트를 자동화하는 테스트 프레임워크입니다.

이전에는 가상 ADB 및 Xcode 커넥터 기능을 사용하여 로컬 컴퓨터에 구축 된 Appium 환경을 사용하여 Remote TestKit의 자동화 테스트가 가능했습니다. 2018 년 6 월 출시 된 Appium 테스트 스크립트는 이제 Appium 서버 환경을 구축하지 않고도 쉽게 실행할 수 있으며 CI 환경에서도 쉽게 링크를 만들 수 있습니다.

Remote TestKit에서 지원하는 Appium 연결

Remote TestKit을 사용하지 않는 Appium 환경

일반적으로 Node.js 또는 Appium 서버와 같은 실행 환경은 아래 그림과 같이 Appium을 실행하는 로컬 PC에 환경을 구축해야 하며, 테스트 스크립트가 생성 된 다음 Appium으로 자동화 테스트를 할 수 있습니다.

또한 로컬 PC에 연결된 테스트 디바이스만 테스트 스크립트에 사용 할 수 있으며 대부분의 경우 Android / iOS 에뮬레이터를 사용해야 했습니다.

기존의 Remote TestKit 기능을 사용하는 Appium 환경

과거에는 Remote TestKit을 사용하여 가상 ADB 및 Xcode 커넥터 기능을 사용하여 클라우드에 있는 디바이스를 사용 할 수 있는 Appium 환경이 구축 가능 했습니다. 이 구성에서는 클라우드 호스트 디바이스와 로컬 환경 간의 링크가 하위 계층에 설정되므로 Appium 이외의 테스트 프레임워크에 대한 링크를 활성화 할 수있는 장점이 있습니다.
참고 : 일부 기능은 iOS 장치에서 Xcode를 사용하는 디버거에 제한되어 있습니다.

새로운 Remote TestKit 기능을 사용하는 Appium 환경

2018 년 6 월 업데이트 된 기능을 사용하면 Node.js, Appium 서버 또는 유사한 실행 환경을 구축하지 않고도 Appium을 사용한 자동화 테스트가 가능합니다. 사용자가 준비해야 할 것은 테스트 스크립트뿐입니다. 또한 이 기능을 사용하여 회사 내부 또는 외부의 CI 환경에 쉽게 연결할 수 있습니다. 테스트 스크립트 작성에 집중할 수 있습니다. 새로운 기능을 사용하는 Appium 환경은 아래와 같습니다.
참고 : 이번 출시 시점에 Android 5.0 이상을 실행하는 기기 만 지원됩니다. iOS 출시는 이번 여름에 예정되어 있습니다.

Appium 환경 비교

다음 차트는 위에 나열된 세 가지 환경을 비교합니다.

새로운 RTK 기능을 사용하는 환경 기존 RTK 기능을 사용하는 환경 RTK를 사용하지 않는 환경
서버 환경 구축 Not required Required Required
클라이언트 라이브러리 Required Required Required
물리적 테스트 디바이스(스마트폰, 태블릿) Not required Not required Required
테스트 스크립트 실행 위치 Local computer Local computer Local computer
Appium 이외의 도구에 연결 Not supported Supported Supported
CI 연계 통합의 어려움 Easy Thrift API를 통해 사용해야하는 디바이스의 연결이 필요합니다. Difficult

문제 해결

CI (Continuous Integration) 도구에서 자동화 된 테스트를 구현하는 데 어려움 중 하나는 물리적 디바이스에서 테스트하는 것입니다. 새로운 Appium 기능을 사용하여 테스트 스크립트를 이제 CI 서비스의 물리적 디바이스에서 기본 보다 비교적 쉽게 실행할 수 있습니다.

Appium 테스트 스크립트를 Jenkins 또는 사내 구축 된 다른 CI 환경에서 Remote TestKit 내의 디바이스를 활용하여 테스트 할 수 있습니다.

새로운 기능을 사용하여 Appium에 연결하는 방법

로컬 컴퓨터의 Appium 환경에서 실행되는 테스트 스크립트의 기능 설정을 변경하면 서버 측 Appium 기능을 사용할 수 있습니다.
다음은 Ruby로 작성된 예제 테스트 스크립트를 사용한 설명입니다.

Appium 클라이언트 라이브러리 설치

아래 절차에 따라 Appium 클라이언트 라이브러리를 설치하십시오.

gem install selenium-webdriver
gem install appium_lib

Explanation of the Destination

When running a test script on a local computer, specify “https://gwjp.appkitbox.com/wd/hub” for “http://localhost:4723/wd/hub” as the destination for the Appium client (test script).

・Example Ruby code

    @driver = Appium::Driver.new(
    caps: {
        ...
    },
    appium_lib: {
        #server_url: 'http://localhost:4723/wd/hub',
        server_url: 'https://gwjp.appkitbox.com/wd/hub',
        wait: 60
    }
).start_driver

사용자 인증

Capabilities에 Remote TestKit 사용자 이름과 암호를 지정하여 Appium 클라이언트에 연결하십시오.

Capabilities name Value
userName Remote TestKit user name
password Remote TestKit password

・Example Ruby code

@driver = Appium::Driver.new(
    caps: {
        userName: "Remote TestKit user name",
        password: "Remote TestKit password",
        ...
    },
    appium_lib: {
        ...
    }
).start_driver

디바이스 선택

Appium을 실행할 디바이스는 디바이스 이름 또는 디바이스 이름과 OS 버전으로 선택할 수 있습니다. 정규 표현식을 사용하여 디바이스 이름을 지정할 수도 있습니다.

  • Remote TestKit 웹 또는 클라이언트 소프트웨어 내에서 지정할 장치를 확인할 수 있습니다.
  • 디바이스 이름만 사용하려면 아래 기능을 지정하십시오.
Capabilities name Value
platformName Specify Android (fixed value)
deviceName Specify the device name
Determined in the following order: “Match all” → “Match front with space delimiter” → “Match front regular expression” (not case sensitive)

・Example Ruby code (with Nexus 5 specified)

@driver = Appium::Driver.new(
    caps: {
        ...
        platform: 'ANDROID',
        platformName: 'Android',
        deviceName: 'Nexus 5X',
    },
    appium_lib: {
        ...
    }
).start_driver
  • 디바이스 이름과 OS 버전을 지정하려면 아래 기능을 지정하십시오.
  • 디바이스 이름이 필터링되면 OS 버전이 결정되고 디바이스 최종 결정됩니다.
Capabilities name Value
platformName Specify Android (fixed value)
deviceName Specify the device name
Determined in the following order: “Match all” → “Match front with space delimiter” → “Match front regular expression” (not case sensitive)
platformVersion Specify the version
Specify the part excluding “Android” in the OS column of the computer client
Determined in the following order: “Match all” → “Match front regular expression”

・Example Ruby code (with Nexus 5 version 5.1 specified)

@driver = Appium::Driver.new(
    caps: {
        ...
        platform: 'ANDROID',
        platformName: 'Android',
        deviceName: 'Nexus 5X',
        platformVersion: '8',
    },
    appium_lib: {
        ...
    }
).start_driver

앱 설치

Method 1.

Remote TestKit에서 액세스 할 수있는 서버에 APK 파일을 업로드하고 아래 기능을 지정하십시오.
참고 : 필요한 경우 Remote TestKit에서 내부 방화벽으로의 액세스를 허용하는 설정을 추가하십시오. 액세스 소스 IP 주소는 FAQ 에 나와 있습니다.

Capabilities name Value
app Specify the URL of the uploaded APK

・Example Ruby code

@driver = Appium::Driver.new(
    caps: {
        ...
        app: "https://appkitbox.com/test/sample.apk",
    },
    appium_lib: {
        ...
    }
).start_driver

Method 2.

Remote TestKit의 웹 클라이언트에 로그인하고 자동화 테스트 기능에 대한 앱 등록 화면을 사용하여 APK를 업로드 하십시오. 다음으로 기능을 지정하십시오.

Capabilities name Value
app Specify the file name of the uploaded APK
If multiple files with the same name are uploaded, the latest uploaded file will be used.

・Example Ruby code

@driver = Appium::Driver.new(
    caps: {
        ...
        app: "sample.apk",
    },
    appium_lib: {
        ...
    }
).start_driver

진행중인 테스트 화면 확인

Appium 서버에 연결하면 스크린을 얻기 위해 snapshotUrl이 발행됩니다. 기능을 사용하여 snapshotUrl을 가져옵니다. 현재 실행 중인 화면은 브라우저에서 snapshotUrl을 열어 볼 수 있습니다.

・Example Ruby code

snapshotUrl = @driver.capabilities['snapshotUrl']

사용 중인 디바이스 자동 반납

동일한 디바이스가 Appium 서버를 통해 10 분 동안 액세스되지 않으면 자동으로 반환됩니다.

사용 중인 디바이스 자동 연장

사용 시간이 10 분 미만인 디바이스를 Appium 서버를 통해 액세스하면 대여 시간이 자동으로 30 분 연장됩니다.

A Ruby Test Script that Performs a Google Search

Save the following test script with the name of test.rb or the like to the local computer.

require 'rubygems'
require 'test/unit'
require 'selenium-webdriver'
require 'appium_lib'

# get userName, password from Environment variable
RTK_USERNAME = ENV['RTK_USERNAME']
RTK_PASSWORD = ENV['RTK_PASSWORD']
unless RTK_USERNAME && RTK_PASSWORD then
    puts "Environment variable error"
    exit(0)
end


class OpenUrlTest < Test::Unit::TestCase
    def setup
        opts = {
            caps: {
                userName: RTK_USERNAME,
                password: RTK_PASSWORD,
                platform: 'ANDROID',
                deviceName: 'Nexus 5',
                platformName: 'Android',
                browserName: 'Chrome'
            },
            appium_lib: {
                server_url: 'https://gwjp.appkitbox.com/wd/hub',
                wait: 60
            }
        }
        @driver = Appium::Driver.new(opts).start_driver
    end

    def teardown
        @driver.quit()
    end

    def test_google_search
        puts @driver.capabilities['snapshotUrl']
        # Open URL
        url = "https://www.google.com/"
        puts "Open URL: " + url
        @driver.get(url)
        element = @driver.find_element(:name, 'q')
        sleep(5)
        @driver.save_screenshot('capture_01.png')
        
        # Input keys
        word = "Remote testKit"
        puts "Input Keys: " + word
        element.send_keys(word)
        element.submit
        sleep(5)
        @driver.save_screenshot('capture_02.png')

        # Get value
        value = @driver.find_element(:name, 'q').value
        puts "Text field value=" + value
        assert_equal true, value == "Remote testKit"
    end
end

이 테스트 스크립트를 실행할 때 Remote TestKit 사용자 이름과 암호를 환경 변수에 설정하십시오. 터미널을 사용하여 다음 명령을 실행하십시오.

export RTK_USERNAME=xxxx
export RTK_PASSWORD=xxxx

기타 샘플 코드

다른 언어 및 테스트 스크립트 샘플 코드는 다음 Github 저장소를 참조하십시오.

https://github.com/remotetestkit/sample-code

기술 사양 및 제한 사항

2018 년 6 월부터 기능이 베타 버전으로 제공됩니다. 이 릴리스 시점에는 다음과 같은 제한 사항이 있습니다.

  • 베타 기간 동안 FLAT 요금제 사용자만 무료로 사용할 수 있는 기능.
  • 현재 Android 기기 만 지원됩니다 (iOS 기기에 대한 지원은 올 여름에 제공 될 예정 임).
  • Appium 사양에 따라 호환되는 디바이스는 UiAutomator2를 지원하는 Android 4.3 이상의 안드로이드 디바이스입니다.
  • Remote TestKit에서 실행되는 Appium 버전은 1.8.0입니다.
    클라이언트 측에서 작성된 테스트 스크립트가 버전 1.8.0과 호환되는지 확인하십시오.
  • 사용 중인 디바이스가 Appium 서버를 통해 10 분 동안 액세스 되지 않으면 자동으로 반환됩니다. 자동으로 반환되지 않기 위해 10 분 동안 사용 중인 디바이스에서 여러 스크립트를 실행할 수 있습니다.
  • 서버에 부담을 주거나 대용량 메모리가 필요한 프로세스(자동화 테스트)는 강제 종료 될 수 있습니다.
  • 필요한 경우 Remote TestKit에서 내부 방화벽으로의 액세스를 허용하는 설정을 추가하십시오. 액세스 소스 IP 주소는 FAQ 에 나와 있습니다.

Get Started!

With over 350 popular models to choose from, you can use
Remote TestKit to remotely rent a wide variety of Android and
iOS smartphones from around the world.