Remote TestKit과 NativeDriver의 연계

개요

테스트자동화툴인 NativeDrvier를 Remote TestKit를 경유해서도 이용할 수 있습니다.
NativeDriver는 Android의 Native앱에 최적화된 테스트 프레임워크이며, 이 프레임워크와 RemoteTestKit을 이용하여 여러 단말에서 Native앱의 자동화테스트를 할 수 있습니다.
※본 기능을 이용하기 위해서는 PC에 adb설정이 되어있어야 합니다.
특별한 지정이 없는 경우 “command line tool”은 Windows에서는 명령 프롬프트를, Mac에서는 터미널을 가리킵니다.
※NativeDriver의 체크아웃 빌드에 필요한 환경이나 eclipse등의 도입·설정 방법에 대해서는 생략합니다.

NativeDriver 다운로드 및 빌드

먼저 NativeDriver의 소스를 다운로드하여 GoogleCode에 있는 GettingStartedAndroid에서 NativeDriver를 체크아웃합니다.(※iPhone용 소스 체크아웃시 ID와 패스워드를 묻는 경우가 있으나 입력하지 않고 진행합니다.)

$ svn checkout http://nativedriver.googlecode.com/svn/trunk nativedriver

체크아웃 하고 온 소스 디렉토리로 이동하여 빌드를 시작합니다. 빌드는 ant command로 실행합니다.

$ cd nativedriver/android
$ ant

빌드에 성공하면 하기와 같은 파일의 디렉토리가 생성됩니다.

$ cd build/
$ ls -la
합계 32816
drwxr-xr-x+ 1 testuser 없음        0 7월  25 20:23 .
drwxr-xr-x+ 1 testuser 없음        0 7월  25 20:23 ..
-rwxr-xr-x  1 testuser 없음    15518 7월  25 20:23 client.jar
-rwxr-xr-x  1 testuser 없음 14267411 7월  25 20:23 client-prejarjar.jar
-rwxr-xr-x  1 testuser 없음  1764901 7월  25 20:23 client-standalone.jar
-rwxr-xr-x  1 testuser 없음     7660 7월  25 20:23 common.jar
-rwxr-xr-x  1 testuser 없음 76742 7월  25 20:23 server.jar
-rwxr-xr-x  1 testuser 없음 15047644 7월  25 20:23 server-prejarjar.jar
-rwxr-xr-x  1 testuser 없음  2407619 7월  25 20:23 server-standalone.jar

$

샘플 가져오기(Import)

체크아웃 하고 온 NativeDriver의 소스에는 테스트 샘플코드와 테스트코드가 포함되어 있으므로 이것을 사용하여 Remote TestKit와 연계합니다.

Eclipse를 실행시켜 샘플코드와 테스트코드를 가져옵니다.
Import의 대략적인 흐름은 하기와 같습니다.

  • Eclipse 메뉴에서 “File” -> “Import”클릭
  • “General”->”Existing Projects into Workspace” 를 선택하여 [Next] 버튼을 클릭
  • [Browse]버튼을 클릭하여 nativedriver/android 디렉토리 저장
  • “Projects” 에 “android-test” 와 “simplelayouts” 가 추가되어 있는 것을 확인하고 [Finish] 버튼을 클릭

import sample code


Import가 완료되면 Package Explorer에 하기와 같이 표시됩니다.


import sample code

샘플에 NativeDriver 적용하기

샘플앱 및 테스트에 NativeDriver를 적용합니다.

샘플앱 “simplelayouts”의 프로젝트를 우클릭하여 속성을 열고 왼쪽 메뉴에서 “Java Build Path”를 클릭하여 「Android 2.3.3(※)」,「server-standalone.jar」에 체크하고 [OK] 버튼을 누릅니다.
(※)샘플앱 「simplelayouts」는 Android SDK의 버전이 GettingStartedAndroid 도큐멘트중에서 2.2 or later로 지정되어 있기 때문에 사전에 Android SDK Manager에서 2.3.3용 패키지를 설치해둘 필요가 있습니다.

import sample code


Java Build Path을 선택하여 「Andorid2.3.3」과 「server-standalone.jar」에 체크하고 저장합니다.

import sample code


샘플테스트 「android-test」의 프로젝트를 우클릭해 속성을 열고, 왼쪽메뉴에서 「Java Build Path」을 클릭해 「client-standalone.jar」와 「JUnit3」에 체크하고 [OK]버튼을 누릅니다.


import sample code

Remote TestKit에서 단말대여 및 설정

샘플앱 “simplelayouts”의 Build Target을 2.3.3으로 지정하였으므로 Remote TestKit에서도 2.3.3의 단말을 대여 및 실행시켜 단말기창에서[유효 기능-ADT, DDMS·adb]메뉴를 선택하여 ADT, DDMS·adb연계를 활성화합니다. Command line tool을 실행하여 하기의 command를 입력하여 접속되어 있는 단말기의 디바이스 ID를 가져옵니다.

adb devices

디바이스 ID는 다음과 같은 형태로 inform 됩니다. 하기의 경우 디바이스 ID는
「optimus_bright_l-07c.appkitbox.com:52439」가 됩니다.

adb devices List of devices attached optimus_bright_l-07c.appkitbox.com:52439 device

다음으로 포트포워드를 위해 하기의 command를 입력합니다.

adb -s [deviceID] forward tcp:54129 tcp:54129


앱 빌드 및 설치

샘플앱 「simplelayouts」을 우클릭하여 “Run as” -> “Android Application” 를 선택하면 build 및 설치가 시작됩니다.


PC Chrome

※만약, 설치가 timeout으로 인해 실패한 경우는 eclipse의 메뉴에서[Window] -> [Preferences]를 선택하면Preferences dialog가 표시되므로, 메뉴의 ”Android”에서 ”DDMS”를 선택하여ADB connection timeout값을 크게(例:10000)하여 재시도해주세요.

Remote TestKit에서 대여한 단말에 엡이 설치되는것을 확인하면, 다음의 command로 instrumentation를 유효화하여 앱을 reboot시킵니다.

adb shell am instrument com.google.android.testing.nativedriver.simplelayouts/
com.google.android.testing.nativedriver.server.ServerInstrumentation


eclipse의 logcat에 “Jetty started on port 54129″ 라는 메세지가 뜨면 준비완료상태입니다.


테스트실행

샘플테스트 「android-test」를 우클릭하여 “Run as” -> “JUnit Test” 를 선택하면 테스트가 시작됩니다.

※본 정보는 게재시점의 정보입니다.