monkey는 Android의 명령줄 도구입니다. Monkey 명령은 의사 무작위 사용자 이벤트 스트림(예: 키 입력, 터치 스크린 입력, 제스처 입력 등)을 시스템에 보내 개발 중인 애플리케이션의 스트레스 테스트를 구현합니다. .
이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.
Monkey는 SDK에 포함된 도구입니다. Monkey는 에뮬레이터나 실제 장치에서 실행할 수 있는 Android의 명령줄 도구입니다. 개발 중인 애플리케이션의 스트레스 테스트를 구현하기 위해 의사 무작위 사용자 이벤트 스트림(예: 키 입력, 터치 스크린 입력, 제스처 입력 등)을 시스템에 보냅니다. 원숭이 테스트는 소프트웨어의 안정성과 견고성을 테스트하는 빠르고 효과적인 방법입니다.
이 도구는 스트레스 테스트를 수행하는 데 사용됩니다. 그런 다음 개발자는 Monkey가 인쇄한 로그와 시스템에서 인쇄한 로그를 결합하여 테스트의 문제를 분석합니다.
Monkey 테스트의 특징:
Monkey 테스트에서는 모든 이벤트가 누구의 주관성도 없이 무작위로 생성됩니다.
1. 테스트 대상은 애플리케이션 패키지일 뿐이며 특정 제한 사항이 있습니다.
2. Monky 테스트에서 사용되는 이벤트 데이터 스트림은 무작위이며 사용자 정의할 수 없습니다.
3. MonkeyTest 개체, 이벤트 번호, 유형, 빈도 등을 설정할 수 있습니다.
기본 구문은 다음과 같습니다.
$ adb shell Monkey [옵션]
옵션을 지정하지 않으면 Monkey는 비피드백 모드로 시작하여 누구에게나 이벤트를 보냅니다. 대상 환경에 설치 . 다음은 지정된 애플리케이션을 시작하고 500개의 의사 무작위 이벤트를 전송하는 보다 일반적인 명령줄 예입니다.
$ adb shell Monkey -p your.package.name -v 500
Android 자동 테스트 도구 사용 Monkeyrunner가 애플리케이션을 시작할 때 , 테스트 중인 프로그램의 패키지 이름과 시작된 활동을 입력해야 합니다. 애플리케이션 패키지 이름과 항목 활동 이름을 보는 방법에는 두 가지가 있습니다.
방법 1: aapt 사용 //aapt는 함께 제공되는 도구입니다. sdkbuilds-tools 디렉터리
1에 있는 SDK를 예로 들어 ES 파일 브라우저를 사용하여 명령줄에서 aapt.exe 디렉터리로 전환하고 다음을 실행합니다. aapt dump badging E:apkes3.apk
2.
참고: android sdk 디렉터리에서 aapt.exe를 검색하여 찾으세요. 그렇지 않은 경우 apktool을 다운로드할 수 있습니다.
이 예를 통해 우리는 Monkey 테스트의 단계와 Monkey로 테스트할 수 있는 애플리케이션을 아는 방법을 이해할 수 있습니다.
Windows에서(참고: 2~4단계는 테스트할 수 있고 생략할 수 있는 애플리케이션 패키지를 확인하는 것입니다):
1 eclipse를 통해 Android 에뮬레이터를 시작합니다.
2 보려면 명령줄에 adb devices를 입력하세요. 기기 연결 상태
C:문서 및 설정관리자>adb devices
연결된 장치 목록
emulator-5554 device
3. 장치가 연결되어 있다는 전제하에 명령줄에 adb shell을 입력하여 쉘 인터페이스
C:Documents and SettingsAdministrator>adb shell
#
4. data/data 폴더에서 애플리케이션 패키지를 봅니다. 참고: 테스트할 수 있는 애플리케이션 패키지는 모두 이 디렉토리에 있습니다.
C:Documents and SettingsAdministrator>adb shell
# ls data/data
ls data/data
5. MonkeyTest
#monkey -p com.android.calculator2 -v 500
를 수행하려면 com.android.calculator2를 개체로 사용하세요. -p 개체 패키지를 나타냅니다. -v는 피드백 정보 수준을 나타냅니다.
실행 프로세스 중에 에뮬레이터의 응용 프로그램은 지속적으로 화면을 전환합니다.
선택한 다양한 수준의 피드백 정보에 따라 실행 프로세스 보고서와 Monkey에서 생성된 이벤트도 볼 수 있습니다.
C:Userschenfenping>adb 쉘 원숭이
-help
사용법: 원숭이 [-p ALLOWED_PACKAGE [-p ALLOWED_PACKAGE] ...]
[-c MAIN_CATEGORY [-c MAIN_CATEGORY] ...]
[--ignore-crashes] [--ignore-timeouts]
[ --ignore-security-Exceptions]
[--monitor-native-crashes] [--ignore-native-crashes]
[--kill-process-after-error] [--hprof]
[--pct- 터치 PERCENT] [--pct-motion PERCENT]
[--pct-trackball PERCENT] [--pct-syskeys PERCENT]
[--pct-nav PERCENT] [--pct-majornav PERCENT]
[--pct -appswitch PERCENT] [--pct-flip PERCENT]
[--pct-anyevent PERCENT] [--pct-pinchzoom PERCENT]
[--pkg-blacklist-file PACKAGE_BLACKLIST_FILE]
[--pkg-whitelist-file PACKAGE_WHITELIST_FILE ]
[--wait-dbg] [--dbg-no-events]
[--setup 스크립트 파일] [-f 스크립트 파일 [-f 스크립트 파일] ...]
[--port 포트]
[-s SEED ] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[-- 무작위 스크립트]
[--script-log]
[--bugreport]
[-- periodic-bugreport]
COUNT
1 参数: -p
用于约束限数此参数指定一个或多个包(패키지, 即앱).指定包之后,monkey将只允许系统启动指定的APP, 如果不指定包,将允许系统启动设备中的所有APP.
*一个包: adb 쉘 원숭이 -p cn .emoney.acg 10
* 指定多个包:adb 쉘 원숭이 -p cn.emoney.acg –p cn.emoney.wea -p cn.emoney.acg 100
* 不指定包:adb shell Monkey 100
2 参数: -v
用于指反馈信息级别(信息级别就是日志详细程degree),总共分3个级别,分别对应的参数如下表所示:
日志级别 Level0
示例 adb shell Monkey -p cn.emoney.acg –v 100
说明缺省值,仅提供启动提示、测试完成和最终结果等少weight信息
日志级别 Level 1
示例 adb shell Monkey -p cn.emoney.acg –v -v 100
说明提供较为详细的日志,包括每个发送到Activity事件信息
日志级别 레벨 2
示例 adb shell Monkey -p cn.emoney.acg –v -v –v 100
说明最详细的日志,包括了测试中选中/未选中的Activity信息
3参数: -s
사용 于指정伪随机数生成器的seed值,如果seed상동,则两次Monkey测试所产生的事件序列也次同的.
Monkey 测试1:adb shell Monkey -p cn.emoney.acg -s 10 100
Monkey 测试2:adb 쉘 원숭이 -p cn.emoney.acg –s 10 100…序列)是一样的。
4 参数: --throttle< | 5000 100
5 参数: --ignore-crashes
apply即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-crash 1000
测试过程中即使程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止
adb shellmonkey -p cn.emoney.acg 1000测试过程中,如果acg程序崩溃|使用此参数,即使应用程序发生ANR错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg
--ignore-timeouts 1000
7 参数: --ignore-security-Exceptions
用于指정当应용程序发生许可错误时(如证书许可,网络许可等),Monkey是否停止运行。如果使用此参数,即使应用程序发生许可错误,Monkey依然会发送事件,直到事件计数完成。
adb shellmonkey -p cn.emoney.acg --ignore-security-Exception 1000
8 매개변수: --kill-process-after-error
는 오류 발생 시 애플리케이션을 중지할지 여부를 지정하는 데 사용됩니다. 이 매개변수를 지정하면 애플리케이션에 오류가 발생하면 애플리케이션 실행이 중지되고 현재 상태가 유지됩니다
(참고: 애플리케이션은 오류가 발생한 상태만 유지되며 시스템은 애플리케이션 프로세스를 종료하지 않습니다. ).
adb shellmonkey -p cn.emoney.acg --kill-process-after-error 1000
9 매개변수: --monitor-native-crashes
는 애플리케이션을 충돌시키는 네이티브 코드를 모니터링하고 보고할지 여부를 지정하는 데 사용됩니다.
adb shellmonkey -p cn.emoney.acg --monitor-native-crashes 1000
10 매개변수: --pct-{+event Category}{+event Category Percentage}
는 각 이벤트 범주의 수와 백분율을 지정하는 데 사용됩니다(Monkey 이벤트 시퀀스에서, 이 유형의 이벤트는 전체 이벤트 수에 대한 백분율로 표시됨)
예:
--pct-touch{+percent}
터치 이벤트의 백분율을 조정합니다(터치 이벤트는 발생하는 다운업 이벤트입니다. 화면의 단일 위치에서 )
adb shell Monkey -p cn.emoney.acg --pct-touch 10 100
--pct-motion {+percentage}
액션 이벤트의 비율을 조정합니다(action events는 화면 어딘가의 다운 이벤트, 일련의 의사 무작위 이벤트, 및 up 이벤트로 구성)
adb shell Monkey -p cn.emoney.acg --pct-motion 20 1000
--pct-trackball{+percent}
트랙 이벤트의 비율을 조정합니다(트랙 이벤트는 하나 또는 여러 개의 무작위 움직임으로 구성되며 때로는 클릭이 동반되기도 함)
adb 쉘 원숭이 -p cn.money.acg --pct-trackball 30 1000
--pct-nav {+percentage}
"기본" 탐색 이벤트의 비율을 조정합니다(탐색 이벤트는 방향 입력 장치의 위/아래/왼쪽/오른쪽으로 구성됨)
adb 쉘 원숭이 -p cn.emoney.acg --pct-nav 40 1000
--pct-majornav {+percentage}
"기본" 탐색 이벤트의 비율을 조정합니다(이러한 탐색 이벤트는 일반적으로 그래픽 인터페이스에서 작업을 트리거합니다. 예: 5의 중간 키 -방향 키보드, 뒤로 버튼, 메뉴 버튼)
adb 쉘 원숭이 -p cn.emoney.acg --pct-majornav 50 1000
7. Monkeylog 출력
monkey를 실행하거나 프로그램 로그를 캡처하고 내보내려는 경우 때때로 다음 메시지가 표시됩니다: D:monkeytest.txt를 만들 수 없습니다: 읽기 전용 파일 시스템
왜 때로는 그럴 수 있고 때로는 그렇지 않습니까?
나중에 보니 제 사용 습관과 다르다는 걸 한 번은 먼저 adb 쉘에 들어가서 명령어를 사용하고, 다른 때는 직접 명령어를 입력하기도 하더군요.
adb 쉘에 진입한 후 명령어를 사용하면 실패합니다~
올바른 방법: 쉘을 종료하거나 명령어를 실행하기 전에 쉘에 들어가지 마세요
C:Documents and SettingsAdministrator>adb shell Monkey -p package name
-v 300 >e:text.txt
adb shell을 입력하는 것은 파일 생성 권한 없이 Linux의 루트를 입력하는 것과 같습니다~
Monkey 테스트에서 오류가 발생한 후 일반적인 오류 확인 단계는 다음과 같습니다.
1. Monkey에서 오류가 발생한 위치를 찾습니다.
2. 오류가 발생하기 전에 조치를 취하고 수동으로 조치를 실행합니다
3. 위 단계를 찾을 수 없는 경우 이전에 실행한 원숭이 명령을 사용하여 다시 실행할 수 있습니다. 주의할 점은 시드 값이 동일해야 한다는 것입니다.-Reproduction
일반적인 테스트 결과 분석:
1 , ANR 문제: 로그에서 "ANR" 검색
2. 충돌 문제: 로그에서 "Exception" 검색 강제 종료
더 많은 관련 글을 보려면 PHP를 방문하세요. 중국사이트! !
위 내용은 원숭이 명령의 용도는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!