重点:

  • adb命令的使用
  • 操作日志的解读:logcat

IOS与安卓

苹果:

		基于Unix

		- 苹果开发语言:OC、Swift
		- 开发工具包:Xcode

安卓

		基于Linux

		开发语言:java

安卓四大组件:重要

Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。

iOS系统格式有ipa,pxl,deb;Android系统格式有:apk;诺基亚的S60系统格式有sis,sisx,jar;微软的WindowsPhone 7、WindowsPhone 8系统格式为xap;黑莓平台为zip。

  • 安卓开发语言:JAVA

安卓用ADB命令管理安卓手机,iphone一般要使用MAC电脑才可,但也可使用windows,要安装插件,使用idevice命令进行管理。

ADB命令:

用途:用windows操作、管理安卓手机

使用:

  • 在andorid SDK 的 platform-tools文件夹中的adb.exe。
  • 使用cmd命令运行adb.exe
  • 里面的大部分命令与Linux命令一样,部分不同

部分命令:

  • adb devices:查看当前连接的安卓设备数
  • adb get-state:获取设备的状态,device正常,offline异常无响应,unknown无连接设备
  • adb kill-server:结束adb服务
  • adb start-server:启动adb服务,通常与上一个一起使用,一般在连接出现异常时使用
  • adb bugreport > c:bugreport.txt:导出含dumpsys、dumpstate、logcat的日志,内容很多,有19MB左右,所以要放在文件中。
  • adb connect 127.0.0.1:62001:如无连接,使用此命令连接设备
  • adb status-window  持续显示设备状态(有变化时更新)
  • adb usb  重启adbd服务,监听USB
  • adb tcpip <port>  重启adbd服务,监听指定的TCP端口
  • adb shell:进入android shell模式,可使用大部分Linux命令(如有多台设备,见下一命令)
  • adb -s 模拟器编号 命令
    • 如,进入某一设备的shell模式:adb -s emulator-5554 shell
  • cd 查看/system/bin目录下的内容,可看到adb shell可以使用的命令
  • exit:退出shell命令模式

重定向(将命令运行结果存入文件中,在linux中通用):

  • 新建:命令 > 文件路径及文件名
  • 在原有文件上追加:命令 >> 文件路径

过滤:

  • 在cmd命令行中的过滤:| findstr 过滤关键字
  • 在adb shell 中的过滤:| grep 过滤关键字

软件安装卸载(退出shell命令,在CMD命令行模式下才可):

  • 安装软件:adb install apk文件路径
  • -r:替换 -s:安装到SD卡
  • 覆盖安装:adb install -r apk文件路径
  • 查询软件主包名(用于卸载软件,要在cmd下进行):
    • 使用apk包查询:aapt dump badging apk文件路径(开头的name=“”中就是)。也可使用过滤:aapt dump badging | findstr apk文件路径(安卓使用| findstr进行过滤而非grep)
    • 在shell下的/data/data目录下查看
  • 卸载软件:adb uninstall 主包名

手机设备与电脑间的文件互传(cmd模式下):

  • 从手机到电脑(PULL拉):
    • adb pull 手机文件路径 电脑路径
    • 拉出文件并改名:adb pull 手机文件路径 电脑路径\新名
    • 如果给出的电脑文件夹不存在,不会自动创建文件夹,而是把文件改名为此文件夹名无扩展名
    • 如果指定的手机文件路径含有目录,如果目录为空,不拿出,如果该目录有文件,会把整个目录拿出。
  • 从电脑到手机(PUSH推):
    • adb push 电脑路径 手机路径
    • 其它用法与PULL相同

截屏:adb shell screencap 手机路径及文件名shell screencap 手机路径及文件名

​ 如:adb shell screencap /sdcard/aa.png

录制屏幕(android4.4以上版本) adb shell screenrecord /sdcard/demo.mp4

查看adb帮助信息:adb /adb help

查看和跟踪系统日志: logcat

  • adb logcat :将日志打印在当前adb 窗口
  • adb logcat > c:\mylog.txt: 把日志信息重定向到一个文件中
  • adb logcat -c:清空以前的日志
  • adb logcat -v time > c:/aaa.log: [软件运行过程中的日志信息会写入aaa.log中]
  • 显示某一级别以上的日志:adb logcat -v time *:E > c:\elog.log
    • 优先级是下面的字符,顺序是从低到高:
    • V — 明细 verbose(最低优先级)
    • D — 调试 debug
    • I — 信息 info
    • W — 警告 warn
    • E — 错误 error
    • F — 严重错误 fatal
    • S — 无记载 silent

监测CPU的使用情况:adb shell top或在shell下top

User  处于用户态的运行时间,不包含优先值为负进程 
Nice  优先值为负的进程所占用的CPU时间 
Sys   处于核心态的运行时间 
Idle  除IO等待时间以外的其它等待时间 
IOW   IO等待时间 
IRQ   硬中断时间 
SIRQ  软中断时间
-----------
PID   进程id
PR    优先级
CPU%  当前瞬时CPU占用率
S     进程状态:D=不可中断的睡眠状态, R=运行, S=睡眠, T=跟踪/停止, Z=僵尸进程
#THR  程序当前所用的线程数
VSS   Virtual Set Size  虚拟耗用内存(包含共享库占用的内存)
RSS   Resident Set Size 实际使用物理内存(包含共享库占用的内存)
PCY   调度策略优先级,SP_BACKGROUND/SP_FOREGROUND
UID   进程所有者的用户id
Name  进程的名称

监控CPU导出为文本格式(注意:无法直接过滤后输出,要指定监控次数n后才可进行输出。):

  • 监控包含tencent进程的CPU:adb shell top -n 3 | findstr tencent > c:\abc.txt
    • n- 代表监控的次数
  • 错误用法,监控内容无法写入文件:adb shell top | findstr tencent > c:\abc.txt

pm

  • 打印所有软件包名(主名名):adb shell pm list packages
  • 打印第三方软件包名:adb shell pm list packages -3
  • 清除对应软件的缓存:adb shell pm clear 主包名

关闭和启动adb服务,模拟器在运行一段时间后,adb服务有可能会出现异常。这时需要重新对adb服务关闭和重启

杀死服务:adb kill-server

启动服务:adb start-server

adb reboot:重启设备

安卓默认ip及端口为:192.168.1.110:5555

adb命令在windows下的默认端口为5037

可执行文件:

  • linux中的为:shell文件
  • windows中为:bat文件

将命令放在bat文件中,执行即可批处理

简单的UI自动化(input。可在shell下执行也在在cmd下执行,在cmd下要加adb shell):

Input命令:

1、屏幕操作之点击操作

adb shell input tap 232 465 232及465为xy坐标

2、获取屏幕分辨率

adb shell wm size

3、获取指定坐标 - 指针位置

4、按键与长按键

adb shell input keyevent 26 26为电源键的键值,更多键可查看KEYCODE键盘映射表

adb shell input keyevent --longpress KEYCODE_POWER logpress表示长按,keycode_power表示键名,也可用键值,是一样的效果

5、滑动

adb shell input swipe 160 703 600 600 - 从p1 500 500 滑动到 p2 800 800

6、长按屏幕

adb shell input swipe 232 465 232 465 3000 其实就是长时间滑动小段距离或同一点,3000为滑动的时间,毫秒

7、输入文本

adb shell input text 123456

批处理文件格式如下(为batch语言):

@echo off
setlocal enabledelayedexpansion
echo 测试开始
::循环计数从0开始
set /a count=0

::1、按HOME键,延迟1秒
adb shell input keyevent KEYCODE_HOME
adb shell input keyevent KEYCODE_HOME
ping -n 1 127.0.0.1>nul

:loop
::2、点击移动警务通图标的坐标[431,215],延迟1秒
adb shell input tap 350 450
ping -n 1 127.0.0.1>nul

::3、点击用户名坐标[124,384],输入用户名,延迟1秒
adb shell input tap 300 400
adb shell input text admin
ping -n 1 127.0.0.1>nul

::4、点击密码坐标[124,465],输入密码,延迟1秒
adb shell input tap 300 450
adb shell input text admin
ping -n 1 127.0.0.1>nul

::5、点击登录按钮[650,526],延迟1秒
adb shell input tap 300 550
ping -n 1 127.0.0.1>nul

::6、点击手机返回键两次,退出到主页面
adb shell input keyevent 4
ping -n 1 127.0.0.1>nul
adb shell input keyevent 4
ping -n 1 127.0.0.1>nul

set /a count+=1
echo 当前执行第 !count! 测试
if %count% EQU 5 goto finish
goto loop
:finish
monkey

1、在命令行界面输入monkey命令,基本语法如下:

adb shell monkey [options]

下面是一个更为典型的命令行示例,它启动指定的应用程序,并向其发送500个伪随机事件:

adb shell monkey -p com.amaker.mp -v 500

2、在运行monkey时,需要将日志内容输出到一个文件中,便于查看并分析

adb shell monkey -p com.amaker.mp -v 500 > c:\monkeya.txt

​ -p:被测试app的包名

​ -v:表示反馈信息级别:一个v代表0级,两个v代表1级,三个v代表2级,一般工作中用两个v

3、当开始执行后,无法通过ctrl+c进行停止,只能通过ps查看进程号,然后进行kill才可

Monkey事件(所有事件百分比不能超过100%。重要!!!!)

​ Monkey所执行的随机事件流中包含11大事件,分别是:

**触摸事件、手势事件、二指缩放事件、**轨迹事件、屏幕旋转事件、基本导航事件、主要导航事件、系统按键事件、启动Activity事件、键盘事件、其他类型事件。

Monkey通过这11大事件来模拟用户的常规操作,对手机App进行稳定性测试。

3.1、触摸事件 --pct-touch
触摸事件是指在屏幕某处按下并抬起的操作, 该事件由一组Touch(ACTION_DOWN)和Touch(ACTION_UP)事件组成,在手机上看到实际操作类似于点击。后跟百分比,如100为100%

adb shell monkey -p com.tencent.mobileqq --pct-touch 100 -v -v 2000 > c:\apk\pct1.txt

日志类型:

# 一个ACTION_DOWN,一个ACTION_UP
// Event percentages:
//   0: 100.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.mobileqq/.activity.SplashActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.mobileqq/.activity.SplashActivity } in package com.tencent.mobileqq
Sleeping for 0 milliseconds 
:Sending Touch (ACTION_DOWN): 0:(524.0,483.0)     #一个ACTION_DOWN
:Sending Touch (ACTION_UP): 0:(532.0278,478.41223)       #一个ACTION_UP
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(628.0,556.0)
:Sending Touch (ACTION_UP): 0:(631.6977,552.48895)
......

3.2、手势事件 --pct-motion
手势事件是指在屏幕某处的按下、随机移动、抬起的操作,即直线滑动操作。该事件是由一个ACTION_DOWN事件、一系列ACTION_MOVE事件和一个ACTION_UP事件组成的,在手机上看到的实际操作是一个没有拐弯的直线滑动操作。

# 一个ACTION_DOWN,一个ACTION_UP,不定量多个ACTION_MOVE

// Event percentages:
//   0: 0.0%
//   1: 100.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.tencent.mobileqq/.activity.SplashActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.tencent.mobileqq/.activity.SplashActivity } in package com.tencent.mobileqq
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(152.0,1072.0)
:Sending Touch (ACTION_MOVE): 0:(150.14798,1072.2855)
:Sending Touch (ACTION_MOVE): 0:(145.99004,1072.8612)
:Sending Touch (ACTION_MOVE): 0:(144.37231,1073.1382)
:Sending Touch (ACTION_MOVE): 0:(139.05087,1074.3801)
:Sending Touch (ACTION_UP): 0:(134.22346,1074.8947)
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(575.0,615.0)
:Sending Touch (ACTION_MOVE): 0:(569.17426,613.3566)
:Sending Touch (ACTION_MOVE): 0:(545.3659,538.5507)
:Sending Touch (ACTION_UP): 0:(544.4542,528.6777)
Sleeping for 0 milliseconds

3.3、二指缩放事件 --pct-pinchzoom
二指缩屏幕上的放事件是指在两处同时按下,并同时移动,最后同时抬起的操作,即智能机上的放大缩小手势操作。该事件起始是一个ACTION_DOWN事件和一个ACTION_POINTER_DOWN事件,即模拟两个手指同时点下;中间是一系列的ACTION_MOVE事件,即两个手指同时在屏幕上直线滑动;结束是由一个ACTION_POINTER_UP事件和一个ACTION_UP事件组成的,即两个手指同时放开。

# 单个:ACTION_DOWN、ACTION_POINTER_DOWN 1、ACTION_POINTER_UP 1、ACTION_UP
# 多个:ACTION_MOVE
// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 100.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.google.android.gms/.app.settings.GoogleSettingsActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.google.android.gms/.app.settings.GoogleSettingsActivity } in package com.google.android.gms
Sleeping for 0 milliseconds
:Sending Touch (ACTION_DOWN): 0:(396.0,547.0)
:Sending Touch (ACTION_POINTER_DOWN 1): 0:(402.4965,540.6863) 1:(240.0,490.0)
:Sending Touch (ACTION_MOVE): 0:(405.67783,528.93) 1:(240.78168,487.68005)
:Sending Touch (ACTION_MOVE): 0:(418.9804,496.83627) 1:(265.7292,470.85452)
:Sending Touch (ACTION_POINTER_UP 1): 0:(427.5013,494.71924) 1:(280.7935,463.71155)
:Sending Touch (ACTION_UP): 0:(436.45438,483.2845)
Sleeping for 0 milliseconds

3.4、轨迹事件 --pct-trackball
轨迹事件是由一个或多个随机的移动组成的,有时会伴随着点击。很早之前的Android手机带有轨迹球,这个事件就是模拟的轨迹球的操作。现在的手机几乎都没有轨迹球,但轨迹球事件中包含曲线滑动操作,如果被测程序需要曲线滑动时可以选用此参数。该事件是由一系列的Trackball(ACTION_MOVE)事件组成的,观察手机上的操作,即为一系列的曲线滑动操作。

# 全部为ACTION_MOVE
// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 100.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.providers.downloads.ui/.DownloadList;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.providers.downloads.ui/.DownloadList } in package com.android.providers.downloads.ui
Sleeping for 0 milliseconds
:Sending Trackball (ACTION_MOVE): 0:(1.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,-3.0)
:Sending Trackball (ACTION_MOVE): 0:(1.0,-4.0)
:Sending Trackball (ACTION_MOVE): 0:(4.0,0.0)
:Sending Trackball (ACTION_MOVE): 0:(-2.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(-4.0,-2.0)
:Sending Trackball (ACTION_MOVE): 0:(3.0,4.0)
:Sending Trackball (ACTION_MOVE): 0:(-1.0,1.0)

3.5、屏幕旋转事件 --pct-rotation
屏幕旋转事件是一个隐藏事件,在Android官方文档中并没有记录这个事件。它其实是模拟的Android手机的横屏和竖屏切换。 该事件由一个rotation事件组成,其中degree表示的是旋转方向,顺时针旋转,0表示旋转90度的方向,1表示旋转180度的方向,2表示旋转270度的方向,3表示旋转360度的方向。在执行过程中,可以看到手机屏幕在横竖屏之间不断地切换。

# 格式为:Sending rotation degree=3, persist=false

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: 100.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.cyanogenmod.filemanager/.activities.NavigationActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.cyanogenmod.filemanager/.activities.NavigationActivity } in package com.cyanogenmod.filemanager
Sleeping for 0 milliseconds
:Sending rotation degree=2, persist=true
Sleeping for 0 milliseconds
:Sending rotation degree=0, persist=false
Sleeping for 0 milliseconds
:Sending rotation degree=1, persist=true
Sleeping for 0 milliseconds
:Sending rotation degree=3, persist=false
Sleeping for 0 milliseconds

3.6、基本导航事件 --pct-nav
基本导航事件是指点击方向输入设备的上、下、左、右按键的操作,现在手机上很少有上、下、左、右按键,这种事件一般用得比较少。该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上、下、左、右四个方向按键。

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 100.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.gallery3d/.app.GalleryActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.gallery3d/.app.GalleryActivity } in package com.android.gallery3d
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 21    // KEYCODE_DPAD_LEFT
:Sending Key (ACTION_UP): 21    // KEYCODE_DPAD_LEFT
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 19    // KEYCODE_DPAD_UP
:Sending Key (ACTION_UP): 19    // KEYCODE_DPAD_UP

3.7、主要导航事件 --pct-majornav
主要导航事件是指点击“主要导航”按键的操作,这些按键通常会导致UI界面中的动作,如键盘的中间键、回退按键、菜单按键。 该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的按键就是中间键和菜单键。

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 100.0%
//   7: 0.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.contacts/.activities.PeopleActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.contacts/.activities.PeopleActivity } in package com.android.contacts
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 23    // KEYCODE_DPAD_CENTER
:Sending Key (ACTION_UP): 23    // KEYCODE_DPAD_CENTER
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 82    // KEYCODE_MENU
:Sending Key (ACTION_UP): 82    // KEYCODE_MENU

3.8、系统按键事件 --pct-syskeys
系统按键事件是指点击系统保留使用的按键的操作,如点击Home键、返回键、音量调节键等。该事件是由一个Key(ACTION_DOWN)和一个Key(ACTION_UP)组成的,点击的就是上面说到的几个系统按键。

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 100.0%
//   8: 0.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.google.android.play.games/com.google.android.gms.games.ui.destination.main.MainActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.google.android.play.games/com.google.android.gms.games.ui.destination.main.MainActivity } in package com.google.android.play.games
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 4    // KEYCODE_BACK
:Sending Key (ACTION_UP): 4    // KEYCODE_BACK
Sleeping for 0 milliseconds
:Sending Key (ACTION_DOWN): 25    // KEYCODE_VOLUME_DOWN
:Sending Key (ACTION_UP): 25    // KEYCODE_VOLUME_DOWN
Sleeping for 0 milliseconds

3.9、启动Activity事件 --pct-appswitch
启动Activity事件是指在手机上启动一个Activity的操作。在随机的时间间隔中,Monkey将执行一个startActivity()方法,作为最大限度上覆盖被测包中全部Activity的一种方法。该事件是由一个Switch操作组成的。

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 100.0%
//   9: 0.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.vending/.AssetBrowserActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.vending/.AssetBrowserActivity } in package com.android.vending
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.vending/com.google.android.finsky.activities.MainActivity } in package com.android.vending
    // activityResuming(com.android.vending)
Sleeping for 0 milliseconds
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.android.camera/.Camera;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.android.camera/.Camera } in package com.android.camera
Sleeping for 0 milliseconds

3.10、键盘事件 --pct-flip
键盘事件主要是一些与键盘相关的操作。比如点击输入框、键盘弹起、点击输入框以外区域、键盘收回等。主要是键盘的打开和关闭操作。

// Event percentages:
//   0: 0.0%
//   1: 0.0%
//   2: 0.0%
//   3: 0.0%
//   4: -0.0%
//   5: 0.0%
//   6: 0.0%
//   7: 0.0%
//   8: 0.0%
//   9: 100.0%
//   10: 0.0%
:Switch: #Intent;action=android.intent.action.MAIN;category=android.intent.category.LAUNCHER;launchFlags=0x10200000;component=com.cyanogenmod.filemanager/.activities.NavigationActivity;end
    // Allowing start of Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.cyanogenmod.filemanager/.activities.NavigationActivity } in package com.cyanogenmod.filemanager
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=false
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=true
Sleeping for 0 milliseconds
:Sending Flip keyboardOpen=false

3.11、其他类型事件

4、在事件之间插入固定延迟(毫秒)

4.1 设置固定延迟 --throttle 300
可以使用这个设置来减缓Monkey的运行速度,如果不指定参数,则事件之间将没有延迟,事件将以最快的速度生成,例如:
adb shell monkey -p com.***.*** --throttle 500 -v -v 100
4.2 设置随机延迟 --throttle time --randomize-throttle
随机延迟时间为0到–throttle设置的值,例如:
adb shell monkey -p com.***.*** --throttle 500 --randomize-throttle -v -v 100
–ignore-crashes:忽略程序崩溃,设置此选项后,Monkey会执行完所有的事件,不会因crash而停止。

5、忽略程序无响应 --ignore-timeouts
设置此选项后,Monkey会执行完所有的事件,不会因ANR(Application No Responding)而停止
6、忽略程序崩溃 --ignore-crashes
设置此选项后,Monkey会执行完所有的事件,不会因崩溃(Crash)而停止
7、忽略Monkey本身的异常 --ignore-native-crashes
忽略monkey本身的异常,直到事件执行完毕
8、证书或认证异常 --ignore-security-exceptions
设置此选项后,Monkey会执行完所有的事件,不会因认证或证书异常而停止
9、监视系统中本地代码发生的崩溃 --monitor-native-crashes
10、-s: 用于指定伪随机数生成器的seed值
如果seed相同,则两次Monkey测试所产生的事件序列也相同的

获取当前android系统版本
adb shell getprop ro.build.version.release

获取app版本号
adb shell dumpsys package packageName
示例:adb shell dumpsys package com.linsen.itally | findstr versionName
(注意:aapt dump badging ***.apk 可以查看包名及版本信息等)

启动 app
adb shell am start –n package_and_activity
adb shell am start –n com.linsen.itally/.ui.WelcomeActivity
[-n表示打开时可能需要等待]

package_and_activity获取:
输入adb logcat | grep activity
输入多个回车,清除log信息
操作目标app,log便会显示package_and_activity信息

关闭 app
adb shell am force-stop com.linsen.itally

手机专项测试
1、启动时间监控
热启动
冷启动

热启动
adb shell am start -W com.linsen.itally/.ui.WelcomeActivity #打开应用
adb shell input keyevent 3 #Home

冷启动
adb shell am start -W com.linsen.itally/.ui.WelcomeActivity
adb shell am force-stop com.linsen.itally

2、CPU监控
2.1 adb shell dumpsys cpuinfo

user:应用程序用的CPU(一般来说,测试时看user信息)

kernel:系统内核用的CPU信息(android程序在运行时,有时会用到一些共享库,如拍照,通讯录等,拍照时镜头由系统提供,程序只需要调用,因此,在运行程序时,内核也会占用一些CPU)

过滤:adb shell dumpsys cpuinfo | findstr com.linsen.itally

2.2 top

adb shell top -m 10 -s cpu

可查看占用cpu最高的前10个程序

(-t 显示进程名称,-s 按指定行排序,-n 在退出前刷新几次,-d 刷新间隔,-m 显示最大数量)

1、内存监控

3.1 adb shell dumpsys meminfo com.linsen.itally

3.2 top

adb shell top -d 1

-d 刷新频率

3.3 流量监控

a. 拿到pid: adb shell ps | findstr com.linsen.itally

b. 这边拿到PID:2413然后在去/proc目录下的PID/net/dev面可以看到

adb shell cat /proc/2413/net/dev

lo :localhost 本地流量

Receive:接收流量

Transmit:发送流量

如果是手机的话

wlan0代表wifi 上传下载量标识! 上传下载量单位是字节可以/1024换算成KB

这里可以看到下载的字节数 、数据包 和 发送的字节数 、数据包

小技巧:wlan0这些值如何初始化0 很简单 你打开手机飞行模式再关掉就清0了

3.4 电量监控

adb shell dumpsys battery

设置手机非充电状态 adb shell dumpsys battery set status 1

重置 adb shell dumpsys battery reset

测试总结报告内容:

  • 测试过程
    • 人员、工作分工
    • 计划时间、实际时间
  • 测试结果统计:
    • 各模块用例覆盖率(数量)
    • 测试用例稳定性分析(评审后用例变更率)
    • 用例执行情况,执行数量、通过数量等
  • BUG统计
    • BUG在各模块分布图(饼状图)
    • BUG严重程度分布图(条形图)
    • BUG发现者与对应数量(表)
    • 日提交BUG数统计(拆线图)
  • 遗留问题清单(留在下版本修改的)
  • 测试中使用的工具
  • 整个测试过程中做的好与不好的方面的总结
  • 评估结果(予以发布与否)

附keycode键盘值:

KEYCODE列表

电话键

KEYCODE_CALL拨号键5
KEYCODE_ENDCALL挂机键6
KEYCODE_HOME按键Home3
KEYCODE_MENU菜单82
KEYCODE_BACK返回键4
KEYCODE_SEARCH搜索84
KEYCODE_CAMERA拍照键27
KEYCODE_FOCUS拍照对焦键80
KEYCODE_POWER电源键26
KEYCODE_NOTIFICATION通知键83
KEYCODE_MUTE话筒静音键91
KEYCODE_VOLUME_MUTE扬声器静音键164
KEYCODE_VOLUME_UP音量增加键24
KEYCODE_VOLUME_DOWN音量减小键25

控制键

KEYCODE_ENTER回车键66
KEYCODE_ESCAPEESC键111
KEYCODE_DPAD_CENTER导航键 确定键23
KEYCODE_DPAD_UP导航键 向上19
KEYCODE_DPAD_DOWN导航键 向下20
KEYCODE_DPAD_LEFT导航键 向左21
KEYCODE_DPAD_RIGHT导航键 向右22
KEYCODE_MOVE_HOME光标移动到开始键122
KEYCODE_MOVE_END光标移动到末尾键123
KEYCODE_PAGE_UP向上翻页键92
KEYCODE_PAGE_DOWN向下翻页键93
KEYCODE_DEL退格键67
KEYCODE_FORWARD_DEL删除键112
KEYCODE_INSERT插入键124
KEYCODE_TABTab键61
KEYCODE_NUM_LOCK小键盘锁143
KEYCODE_CAPS_LOCK大写锁定键115
KEYCODE_BREAKBreak/Pause键121
KEYCODE_SCROLL_LOCK滚动锁定键116
KEYCODE_ZOOM_IN放大键168
KEYCODE_ZOOM_OUT缩小键169

组合键

KEYCODE_ALT_LEFTAlt+Left
KEYCODE_ALT_RIGHTAlt+Right
KEYCODE_CTRL_LEFTControl+Left
KEYCODE_CTRL_RIGHTControl+Right
KEYCODE_SHIFT_LEFTShift+Left
KEYCODE_SHIFT_RIGHTShift+Right

基本

KEYCODE_0按键’0’7
KEYCODE_1按键’1’8
KEYCODE_2按键’2’9
KEYCODE_3按键’3’10
KEYCODE_4按键’4’11
KEYCODE_5按键’5’12
KEYCODE_6按键’6’13
KEYCODE_7按键’7’14
KEYCODE_8按键’8’15
KEYCODE_9按键’9’16
KEYCODE_A按键’A’29
KEYCODE_B按键’B’30
KEYCODE_C按键’C’31
KEYCODE_D按键’D’32
KEYCODE_E按键’E’33
KEYCODE_F按键’F’34
KEYCODE_G按键’G’35
KEYCODE_H按键’H’36
KEYCODE_I按键’I’37
KEYCODE_J按键’J’38
KEYCODE_K按键’K’39
KEYCODE_L按键’L’40
KEYCODE_M按键’M’41
KEYCODE_N按键’N’42
KEYCODE_O按键’O’43
KEYCODE_P按键’P’44
KEYCODE_Q按键’Q’45
KEYCODE_R按键’R’46
KEYCODE_S按键’S’47
KEYCODE_T按键’T’48
KEYCODE_U按键’U’49
KEYCODE_V按键’V’50
KEYCODE_W按键’W’51
KEYCODE_X按键’X’52
KEYCODE_Y按键’Y’53
KEYCODE_Z按键’Z’54

符号

KEYCODE_PLUS按键’+’
KEYCODE_MINUS按键’-’
KEYCODE_STAR按键’*’
KEYCODE_SLASH按键’/’
KEYCODE_EQUALS按键’=’
KEYCODE_AT按键’@’
KEYCODE_POUND按键’#’
KEYCODE_APOSTROPHE按键’’’ (单引号)
KEYCODE_BACKSLASH按键’’
KEYCODE_COMMA按键’,’
KEYCODE_PERIOD按键’.’
KEYCODE_LEFT_BRACKET按键’[’
KEYCODE_RIGHT_BRACKET按键’]’
KEYCODE_SEMICOLON按键’;’
KEYCODE_GRAVE按键’`’
KEYCODE_SPACE空格键

小键盘

KEYCODE_NUMPAD_0小键盘按键’0’
KEYCODE_NUMPAD_1小键盘按键’1’
KEYCODE_NUMPAD_2小键盘按键’2’
KEYCODE_NUMPAD_3小键盘按键’3’
KEYCODE_NUMPAD_4小键盘按键’4’
KEYCODE_NUMPAD_5小键盘按键’5’
KEYCODE_NUMPAD_6小键盘按键’6’
KEYCODE_NUMPAD_7小键盘按键’7’
KEYCODE_NUMPAD_8小键盘按键’8’
KEYCODE_NUMPAD_9小键盘按键’9’
KEYCODE_NUMPAD_ADD小键盘按键’+’
KEYCODE_NUMPAD_SUBTRACT小键盘按键’-’
KEYCODE_NUMPAD_MULTIPLY小键盘按键’*’
KEYCODE_NUMPAD_DIVIDE小键盘按键’/’
KEYCODE_NUMPAD_EQUALS小键盘按键’=’
KEYCODE_NUMPAD_COMMA小键盘按键’,’
KEYCODE_NUMPAD_DOT小键盘按键’.’
KEYCODE_NUMPAD_LEFT_PAREN小键盘按键’(’
KEYCODE_NUMPAD_RIGHT_PAREN小键盘按键’)’
KEYCODE_NUMPAD_ENTER小键盘按键回车

功能键

KEYCODE_F1按键F1
KEYCODE_F2按键F2
KEYCODE_F3按键F3
KEYCODE_F4按键F4
KEYCODE_F5按键F5
KEYCODE_F6按键F6
KEYCODE_F7按键F7
KEYCODE_F8按键F8
KEYCODE_F9按键F9
KEYCODE_F10按键F10
KEYCODE_F11按键F11
KEYCODE_F12按键F12

多媒体键

KEYCODE_MEDIA_PLAY多媒体键 播放
KEYCODE_MEDIA_STOP多媒体键 停止
KEYCODE_MEDIA_PAUSE多媒体键 暂停
KEYCODE_MEDIA_PLAY_PAUSE多媒体键 播放/暂停
KEYCODE_MEDIA_FAST_FORWARD多媒体键 快进
KEYCODE_MEDIA_REWIND多媒体键 快退
KEYCODE_MEDIA_NEXT多媒体键 下一首
KEYCODE_MEDIA_PREVIOUS多媒体键 上一首
KEYCODE_MEDIA_CLOSE多媒体键 关闭
KEYCODE_MEDIA_EJECT多媒体键 弹出
KEYCODE_MEDIA_RECORD多媒体键 录音

手柄按键

KEYCODE_BUTTON_1通用游戏手柄按钮#1
KEYCODE_BUTTON_2通用游戏手柄按钮 #2
KEYCODE_BUTTON_3通用游戏手柄按钮 #3
KEYCODE_BUTTON_4通用游戏手柄按钮 #4
KEYCODE_BUTTON_5通用游戏手柄按钮 #5
KEYCODE_BUTTON_6通用游戏手柄按钮 #6
KEYCODE_BUTTON_7通用游戏手柄按钮 #7
KEYCODE_BUTTON_8通用游戏手柄按钮 #8
KEYCODE_BUTTON_9通用游戏手柄按钮 #9
KEYCODE_BUTTON_10通用游戏手柄按钮 #10
KEYCODE_BUTTON_11通用游戏手柄按钮 #11
KEYCODE_BUTTON_12通用游戏手柄按钮 #12
KEYCODE_BUTTON_13通用游戏手柄按钮 #13
KEYCODE_BUTTON_14通用游戏手柄按钮 #14
KEYCODE_BUTTON_15通用游戏手柄按钮 #15
KEYCODE_BUTTON_16通用游戏手柄按钮 #16
KEYCODE_BUTTON_A游戏手柄按钮 A
KEYCODE_BUTTON_B游戏手柄按钮 B
KEYCODE_BUTTON_C游戏手柄按钮 C
KEYCODE_BUTTON_X游戏手柄按钮 X
KEYCODE_BUTTON_Y游戏手柄按钮 Y
KEYCODE_BUTTON_Z游戏手柄按钮 Z
KEYCODE_BUTTON_L1游戏手柄按钮 L1
KEYCODE_BUTTON_L2游戏手柄按钮 L2
KEYCODE_BUTTON_R1游戏手柄按钮 R1
KEYCODE_BUTTON_R2游戏手柄按钮 R2
KEYCODE_BUTTON_MODE游戏手柄按钮 Mode
KEYCODE_BUTTON_SELECT游戏手柄按钮 Select
KEYCODE_BUTTON_START游戏手柄按钮 Start
KEYCODE_BUTTON_THUMBLLeft Thumb Button
KEYCODE_BUTTON_THUMBRRight Thumb Button

待查

KEYCODE_NUM按键Number modifier
KEYCODE_INFO按键Info
KEYCODE_APP_SWITCH按键App switch
KEYCODE_BOOKMARK按键Bookmark
KEYCODE_AVR_INPUT按键A/V Receiver input
KEYCODE_AVR_POWER按键A/V Receiver power
KEYCODE_CAPTIONS按键Toggle captions
KEYCODE_CHANNEL_DOWN按键Channel down
KEYCODE_CHANNEL_UP按键Channel up
KEYCODE_CLEAR按键Clear
KEYCODE_DVR按键DVR
KEYCODE_ENVELOPE按键Envelope special function
KEYCODE_EXPLORER按键Explorer special function
KEYCODE_FORWARD按键Forward
KEYCODE_FORWARD_DEL按键Forward Delete
KEYCODE_FUNCTION按键Function modifier
KEYCODE_GUIDE按键Guide
KEYCODE_HEADSETHOOK按键Headset Hook
KEYCODE_META_LEFT按键Left Meta modifier
KEYCODE_META_RIGHT按键Right Meta modifier
KEYCODE_PICTSYMBOLS按键Picture Symbols modifier
KEYCODE_PROG_BLUE按键Blue “programmable”
KEYCODE_PROG_GREEN按键Green “programmable”
KEYCODE_PROG_RED按键Red “programmable”
KEYCODE_PROG_YELLOW按键Yellow “programmable”
KEYCODE_SETTINGS按键Settings
KEYCODE_SOFT_LEFT按键Soft Left
KEYCODE_SOFT_RIGHT按键Soft Right
KEYCODE_STB_INPUT按键Set-top-box input
KEYCODE_STB_POWER按键Set-top-box power
KEYCODE_SWITCH_CHARSET按键Switch Charset modifier
KEYCODE_SYM按键Symbol modifier
KEYCODE_SYSRQ按键System Request / Print Screen
KEYCODE_TV按键TV
KEYCODE_TV_INPUT按键TV input
KEYCODE_TV_POWER按键TV power
KEYCODE_WINDOW按键Window
KEYCODE_UNKNOWN未知按键
Logo

更多推荐