ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 몽키 테스트
    과거...../개발일지 2011. 3. 14. 17:39

    퍼온 경로 : http://blog.daum.net/whisperlip/7287317



    안드로이드 SDK에는 많은 툴이 포함되어 있고 그 중에는 monkey test를 할 수 있는 adb(Android Debug Bridge)가 존재한다.

    개발 환경 설정 같은 건 모두 패스 하고 monkey test하는 방법만 적겠다.

    monkey test에 대한 자세한 공식 레퍼런스는 http://developer.android.com/guide/developing/tools/monkey.html 를 참조하기 바란다.

     

    monkey test를 실행하기 위해서는 adb shell을 실행해야 한다.

    cmd창으로 가서 다음과 같은 명령어를 입력한다.

     

    C:\>adb -s <테스트할 device 명> shell

     테스트할 device명은 ddms를 실행하고 USB로 연결하면 알 수 있으며 에뮬레이터를 사용한다면 해당 에뮬레이터 명을 입력하면된다.

     단, 실제 폰으로 테스트 할 경우에는 ddms에 나타나는 그 이름 그대로 입력하면 되고 에뮬을 사용할 때에는 ddms에 나온 것처럼 앞에 emulator-xxxx 식으로

    써줘야 한다. <아래 예제>

     

    C:\>adb -s emulator-5554 shell

     

     제대로 기기가 연결되면 커맨트 입력이 $로 변경되어 나타난다.

    그럼 이제 monkey test를 할 수 있는 상태과 된 것이다.

     

    제일 기본 적인 monkey test 실행 커맨드는 아래와 같다.

     

    $ monkey -v 100

     monkey test를 어떤 이벤트이던지 100번 날리는 것으로 실행하겠다라는 뜻이다.

    즉, monkey test는 아래와 같은 형태로 입력하게 되어 있다.

     

    $ monkey [<명령 옵션> <바로 앞의 명령 옵션에 대한 백분률 또는 시간>.....] <이벤트 개수>

     -v를 붙인 이유는 -v 옵션이 monkey에서 발생 시킨 이벤트를 보여주는 옵션이기 때문이다. 왠만하면 항상 붙여 놓는 것이 좋다.

     

    만약 특정 package만 이벤트를 던져 테스트를 하고 싶다면 -p 옵션을 중간에 넣는다.

     

    $ monkey -p <패키지 명>

     

    만약 계산기만 100번 테스트 하고 싶다면 예제는 아래와 같다.

     

    $ monkey -p com.sec.android.app.calculator -v 100

     

    또한 계산기만 100번 하는데 그 중에 터치 테스트로만 100% 하고 싶다라면 아래와 같이 한다.

     

    $ monkey -p com.sec.android.app.calculator --pct-touch 100 -v 100

     

     물론 자신이 각 이벤트 종류의 백분율은 조정할 수 있다.

    예를 들어 계산기 100번 이벤트 발생시키는 테스트를 하는데 터치는 70%로 하고 주 네비게이션 이벤트는 30%로 하고 싶다면

    아래와 같이 하면 된다.

     

    $ monkey -p com.sec.android.app.calculator --pct-touch 70 --pct-majornav 30 -v 100

     

     이벤트를 날리는데 너무 빨라 해당 테스트 장치가 제대로 이벤트를 받지 못하는 것 같다면 이벤트 발생 속도를 제어 할 수도 있다.

    아래와 같은 옵션을 주면 된다.

     

    $ monkey -p com.sec.android.app.calculator --throttle 1000 -v 100

     위에서는 1000ms(1초) 간격으로 이벤트를 100번 보낸다는 뜻이다.

     

    그 외에도 monkey test는 스크립트를 짜서 돌릴 수도 있으며 다양한 옵션으로 원하는 테스트를 할 수 있도록 한다.

     

    영어로 된 레퍼런스가 쥐약이신 분들을 위해 번역을 대충 잠깐 하자면

     

    General

    --help  도움말 표시

    -v  출력 레벨 조정 (레벨 0 - 디폴트로 시작, 종료 등의 최소한의 출력, 레벨 1 - 어떤 이벤트를 발생 시켰는지 상세 표시, 레벨 2 - 레벨 1보다 더 상세한 정보 출력)

     

    Events

    -s <seed>  monkey는 무작위 이벤트를 발생시키지만 seed를 지정하면 에러를 발견하고 수정한 후 이전과 동일한 이벤트를 발생시킬 수 있다. 같은 이벤트를 발생시키고자 한다면 같은 seed값을 지정하면 된다.

    --throttle <milliseconds>  이벤트 발생 속도를 지정. 지정하지 않는 경우에는 가능한 빠르게 이벤트를 발생시킨다.

    --pct-touch <percent>  터치 이벤트 발생 비율을 조정한다.(터치 이벤트는 화면의 한 곳을 눌렀다 떼는 신호를 말한다)

    --pct-motion <percent>  모션 이벤트의 발생 비율을 조정한다.(모션 이벤트는 화면 한 지점을 누르고 무작위로 다른 지점으로 이동 후 떼는 것을 말한다)  
    --pct-trackball <percent>  트랙 볼 이벤트의 발생 비율을 조정한다.(하나 이상의 무작위 이동 이벤트를 말하며 가끔씩 한번의 클릭이 올 수 있다)  
    --pct-nav <percent>  "basic"네비게이션 이벤트의 발생 비율을 조정한다.(네비게이션 이벤트란 H/W(폰)의 상하좌우 방향키 입력을 말한다.)  
    --pct-majornav <percent>  "major"네비게이션 이벤트의 발생 비율을 조정한다.(백 키나 메뉴 키, 방향키의 가운데 키와 같은 이벤트를 말한다.)

    --pct-syskeys <percent>  시스템 이벤트의 발생 비율을 조정한다.(Home 버튼, 백 키, 전화 걸기, 전화  끊기, 볼륨 조절과 같은 이벤트를 말한다.) 
    --pct-appswitch <percent>  엑티디비 실행 비율을 조정한다. 패키지 안의 다른 액티비티로 변환되는 것을 말한다. Monkey는startActivity()에 의한 Activity 실행도 테스트한다.  
    --pct-anyevent <percent>  그 밖의 이벤트의 비율을 조정한다.

     

    Constraints

    -p <allowed-package-name  테스트할 패키지 명을 지정한다. 지정이 없는 경우에는 시스템 모든 패키지를 대상으로 한다. -p <package1> -p <package2>와 같이 복수의 패키지 지정도 가능하다. 테스트할 패키지 내에서 다른 패키지의 액티비티를 사용하고 있다면 그 패키지를 지정한다.  
    -c <main-category>  카테고리를 지정한다. 지정하지 않으면 Intent.CATEGORY_LAUNCHER 또는, Intent.CATEGORY_MONKEY를 지정한 것으로 된다. 복수의 카테고리를 지정할 때에는 -c 옵션을 카테고리마다 지정한다.

     

    Debugging

    --dbg-no-events  액티비티의 실행은 하지만 이벤트를 발생시키지는 않는다.
    -v  커맨드와 함께 사용하하고 최상의 결과를 얻기 위해 -v의 조합과 함게 하나 이상의 패키지 제약과 non-zero throttle로 30초 이상 monkey 실행을 유지한다.  
    --hprof  프로파일 리포트를 작성한다. 리포트 파일은 data/misc 디렉터리에 작성되고 파일 사이즈는 5M 이상이 되므로 주의한다. Traceview 어플리케이션 도큐먼트에 상세하게 설명되어 있다. 
    --ignore-crashes  지정을 하지 않는 경우에 Monkey는 어플리케이션의 크래쉬나 익셉션이 발생하면 정지된다. 이 옵션을 지정하면 이벤트 개수만큼 계속 이벤트를 보내게 된다.
    --ignore-timeouts  지정을 하지 않은 경우에 Monkey는 타임 아웃 에러가 발생하면 정지한다. 타임 아웃 에러는 Application Not Responding 다이얼로그와 같은 것이 나올 때는 말한다. 옵션을 지정하면 에러 후에도 이벤트를 계속 발생시킨다.
    --ignore-security-exceptions  지정 하지 않은 경우네 Monkey는 시큐리티 익셉션(퍼미션 에러)가 발생하면 정지한다. 이 옵션을 지정하면 에러 후에도 이벤트를 계속 발생시킨다.
    --kill-process-after-error  통상 에러에 의해 Monkey가 정지될 때에는 테스트 된 어플리케이션은 fail이 나지만 프로세스는 돌고 있다. 이 옵션을 지정하면 시스템에서 프로세스로 종료 시그널(kill)을 보낸다. 
    --monitor-native-crashes  Android의 시스템 네이티브 코드에서 일어나는 크래쉬를 리포트한다. --kill-process-after-error 옵션을 함께 사용하면 시스템은 정지한다.
    --wait-dbg  디버거가 attached 할 때가지 Monkey 실행을 정지한다.

     

    추가로 -p 옵션으로 패키지들을 테스트하고 싶은데 패키지 명들을 알고 싶다면

    ddms를 열고 상단 메뉴 중에 Device-Show process status를 선택하여 현재 돌고 있는 프로세스 명을 보면 된다.

    예를 들어 달력 패키지를 테스트하고 싶다면 패키지 명에 com.android.calendar 를 넣으면 된다.

Designed by Tistory.