monkey사용법에 대해서 엄청 잘 정리를 해 주셨네.
안드로이드 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 monkey는 무작위 이벤트를 발생시키지만 seed를 지정하면 에러를 발견하고 수정한 후 이전과 동일한 이벤트를 발생시킬 수 있다. 같은 이벤트를 발생시키고자 한다면 같은 seed값을 지정하면 된다.
--throttle 이벤트 발생 속도를 지정. 지정하지 않는 경우에는 가능한 빠르게 이벤트를 발생시킨다.
--pct-touch 터치 이벤트 발생 비율을 조정한다.(터치 이벤트는 화면의 한 곳을 눌렀다 떼는 신호를 말한다)
--pct-motion 모션 이벤트의 발생 비율을 조정한다.(모션 이벤트는 화면 한 지점을 누르고 무작위로 다른 지점으로 이동 후 떼는 것을 말한다)
--pct-trackball 트랙 볼 이벤트의 발생 비율을 조정한다.(하나 이상의 무작위 이동 이벤트를 말하며 가끔씩 한번의 클릭이 올 수 있다)
--pct-nav "basic"네비게이션 이벤트의 발생 비율을 조정한다.(네비게이션 이벤트란 H/W(폰)의 상하좌우 방향키 입력을 말한다.)
--pct-majornav "major"네비게이션 이벤트의 발생 비율을 조정한다.(백 키나 메뉴 키, 방향키의 가운데 키와 같은 이벤트를 말한다.)
--pct-trackball
--pct-nav
--pct-majornav
--pct-syskeys 시스템 이벤트의 발생 비율을 조정한다.(Home 버튼, 백 키, 전화 걸기, 전화 끊기, 볼륨 조절과 같은 이벤트를 말한다.)
--pct-appswitch 엑티디비 실행 비율을 조정한다. 패키지 안의 다른 액티비티로 변환되는 것을 말한다. Monkey는startActivity()에 의한 Activity 실행도 테스트한다.
--pct-anyevent 그 밖의 이벤트의 비율을 조정한다.
--pct-appswitch
--pct-anyevent
Constraints
-p -p 와 같이 복수의 패키지 지정도 가능하다. 테스트할 패키지 내에서 다른 패키지의 액티비티를 사용하고 있다면 그 패키지를 지정한다.
-c 카테고리를 지정한다. 지정하지 않으면 Intent.CATEGORY_LAUNCHER 또는, Intent.CATEGORY_MONKEY를 지정한 것으로 된다. 복수의 카테고리를 지정할 때에는 -c 옵션을 카테고리마다 지정한다.
-c
--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 실행을 정지한다.
-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 를 넣으면 된다.
댓글 없음:
댓글 쓰기