肖sir__app之monkey测试

momkey_使用:

一、adb命令:

1、dos下链接:

adb connect 127.0.0.1:62001

 

2、adb devices

原文:List of devices attached(附设)

意思:所附设备清单

 

device:已识别的设备 表示连接成功
unauthorized:没有授权需要手机授权才能连接
unkown:未识别的设备
offline:离线设备

 3、adb version

Android Debug Bridge version 1.0.31

意思:Android调试桥版本1.0.31

 

 

 4、adb start-server   启动adb服务 

5、adb kill-server  关闭adb服务

 

 

6、adb nodaemon server
检查5037端口是否被占用 如果被占用则提示:
cannot bind(捆绑) to 127.0.0.1:5037

 

 

 7、adb shell pm list package -3:显示所有第三方app包名

 

 8、

adb install xxx.apk(apk包的路径)  安装apk应用包 

 D:\app\baiduyuedu_3760.apk

 

 

 9、adb uninstall    app包名     卸载apk应用包

 包名获取方式:

 

 8、adb  install    D:\app\baiduyuedu_3760.apk

路径:D:\app\baiduyuedu_3760.apk

 

 9、aapt dump  badging D:\app\baiduyuedu_3760.apk     获取app包的名称与aActivity

路径:D:\app\baiduyuedu_3760.apk

错误:

 

 10、adb shell pm list packages:显示手机中所有的app包的名称

11、adb reboot:重启模拟器

 

 

 

12、adb shell:进入安卓手机目录

 

 13、adb get-serialno(流水号):获取手机序列号

adb devices       获取全部的连接号

adb get-serialno (s力饿)  获取某个设备的连接号,用于确认映射关系

 

 

14、adb shell wm size:获取手机屏幕分辨率
 
15、adb shell getprop ro.product.model:查看手机的设备型号

 

 

 
16、adb shell cat /proc/cpuinfo:获取手机的 cpu 信息

processor : 0     处理器

vendor_id : GenuineIntel   供应商id
cpu family : 6       cpu家庭
model : 61   模型
model name : Intel(R) Core(TM) i5-5300U CPU @ 2.30GHz
stepping : 4   步进值
cpu MHz : 2294.980    cpu总线
cache size : 3072 KB   高速缓存类型fdiv_bug : no

hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 20
wp : yes  (功率)
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 syscall nx rdtscp lm constant_tsc up xtopology nonstop_tsc pni pclmulqdq monitor ssse3 cx16 sse4_1 sse4_2 movbe popcnt aes xsave avx rdrand lahf_lm abm 3dnowprefetch
bogomips : 4589.96
clflush size : 64
cache_alignment : 64  (高速缓存)
address sizes : 39 bits physical, 48 bits virtual  (地址长度)
power management:(电源管理)

============================================================
adb shell cat /sys/class/net/wlan0/address:获取手机的 mac 地址
 
 
adb logcat:查看所有进程运行日志
adb logcat | find “com.baidu.yuedu”:查看指定app百度阅读app日志

 

 

adb logcat  -f androidpath/filename:将日志写入到文件中并保存在手机上
adb logcat  -f  /data/hz12

 

 

 
 
adb logcat    ->windowspath/filename:将日志写入到文件中并保存在pc上
案例:
adb logcat  ->  D:\f\j.txt
 

 

 

 
 
adb push windowspath androidpath:上传文件到手机端
案例:adb push  D:\f\j.txt /data

 

 

 

 

adb pull androidpath windowspath:手机端文件到上传pc端
案例: adb pull  /data/j.txt D:\f\j.txt
 

 

 

 
 
adb -s deviceName shell :进入到指定设备的目录

 

 

adb -s deviceName install xxx.apk:安装应用到指定的设备目录

 

 

 

 =========================================
 
二、

一、Monkey压力测试的原理

  1. adb shell monkey的运行机制

       实际上是执行手机中/system/bin/monkey这个脚本;

   2. Monkey事件注入机制

         Monkey注入系统事件是通过 framework 层的 hidenApi (如:activemanager,inputmanager,windowmanager) 获取系统服务。

         Monkey中有11种事件,这些事件在MonkeyEventSource中对事件之间的比例进行设置。Monkey事件根据类型比例生成事件队列,循环查找事件。

         a.触摸事件(inputmanager):包括屏幕以及物理键的触摸,滑动,点击事件。

         b.Activity事件(activemanager):是指我们调用Android系统组件的事件。

         c.Window事件(windowmanager):是指操作Window的事件,例如转屏。

    3.Monkey核心类

         a. Monkey.java, 程序的入口,根据参数选择合适的MonkeyEventSource,并适时触发MonkeyEvent;

         b. MonkeyEventSource.java, MonkeyEvent的工厂,是一个接口;

         c. MonkeyEvent.java,各种事件的具体实现。

 

 

 

2、adb shell monkey       #monkey命令打开

 

 

 

 3、下载应用软件:如网易云

 

 

4、adb 命令实战:

(1)adb shell monkey help:monkey命令介绍

 

 

usage: monkey [-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-touch 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 scriptfile] [-f scriptfile [-f scriptfile] ...]
[--port port]
[-s SEED] [-v [-v] ...]
[--throttle MILLISEC] [--randomize-throttle]
[--profile-wait MILLISEC]
[--device-sleep-time MILLISEC]
[--randomize-script]
[--script-log]
[--bugreport]
[--periodic-bugreport]
COUNT

 =================================================================

(2)adb shell monkey 100:对模拟器或真机做100次随机操作

 报错:

// activityResuming(uni.UNIC7A519E)
Events injected: 100      #事件注入100

报错:

Network stats: elapsed time=2730ms (0ms mobile, 0ms wifi, 2730ms not connected)

网络统计:运行时间=2730ms (0ms移动,0ms wifi, 2730ms未连接)  

 (3)

adb shell pm list package -3:显示第三方的app包的名称

 

 (4)

adb shell monkey –p app包名 100:对指定的app做100随机操作
例如:
adb shell monkey –p  package:com.baidu.yuedu  100

 

 出现如下问题:

 

 

2. Monkey稳定性实战:(有问题)
adb shell monkey –p app包名–throttle 1000 100:  throttle(节流)
对指定的app每隔1秒做1次操作 做100次
(1)如:adb shell pm list package -3  查看所有的包名
package:com.baidu.yuedu
(2)adb shell monkey –p app包名–throttle 1000  60    60次=1分钟

 

 

 
 

 

 

 
adb shell monkey –p app包名 –throttle 1000 36000:
每隔1秒对app随机做1次操作持续10小时(实际工作测app)
案例:adb shell monkey –p   com.baidu.yuedu   --throttle 1000 36000
 

 

 

 

 

=========================================
参数: -p用法:

-p用于约束限制一个或多个包(Package,即App)。

指定包,Monkey将只允许系统启动指定的APP。不指定包,Monkey将允许系统启动设备中的所有APP。

指定一个包:adb shell monkey -p package:com.baidu.yuedu    100    

说明:com.htc.Weather为包名,100是事件计数(即让Monkey程序模拟100次随机用户事件)。

指定多个包:adb shell monkey -p com.dangbeimarket   -p    com.baidu.yuedu    100

不指定包:adb shell monkey 100

说明:Monkey随机启动APP并发送100个随机事件。

 

 案例1:adb  shell monkey  -p   com.baidu.yuedu  -v 300    300次

 

 案例2:adb  shell monkey  -p   com.baidu.yuedu  -v 300  > D:\ls\fx\A.txt

========================================
Monkey日志分析:
1. Monkey日志命令:
参数v:日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分3个级别,分别对应的参数如下表所示:
-v:leve0 除启动提示、测试完成和最终结果之外、提供较少信息
-v -v:leve1 提供较为详细的日志,包括每个发送到Activity的事件信息
-v –v –v:leve2 最详细的日志,包括了测试中选中,未选中的Activity信息
 
案例1:
 
 
 
==========================================================
 
 
2. Monkey日志分析:
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100:
每隔1秒对app做1次随机操作,执行100次,并输出详细日志
案例1:adb shell monkey –p  com.baidu.yuedu   --throttle 1000 –v-v-v 100
 

 

 

 

 

 
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100
>C:\Users\Desktop\applog.txt:输出日志文件到本地路径
案例:adb shell monkey –p  com.baidu.yuedu   --throttle 1000 –v-v-v 100  >D:\f\hz15.txt

 

 

 

 

 

 
Monkey日志分析:
1. Monkey日志分析:
正常情况:
如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数
和所花费的时间;

 

 

 
// Monkey finished 代表执行完成

 

 

异常情况:
查阅Monkey的输出日志:
1. 程序无响应的问题: 在日志中搜索 “ANR”(anr)
2. 崩溃问题:在日志中搜索 “Exception”(异常)
3. 如果有空指针,搜索“NullPointerException”
4. 如果Monkey执行中断,在log最后也能看到当前执行次数
 
===============================================
Monkey日志分析:
1. Monkey日志分析:
重现异常以及回归验证:
s参数详解:
用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
-s:在命令中加上seed值 确保两次执行的序列号一样
如果第一次稳定性测试时出现了bug,那测试人员就需要重现bug和验证bug
所以需要重复两次操作一样,seed值相同就能确保monkey两次测试所触发的事件
一致
adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100
>C:\Users\Desktop\applog.txt:输出日志文件到本地路径
 
案例:adb shell monkey -p com.baidu.yuedu   -s 1001 --throttle 1000 -v-v-v 100 >  D:\ls\fx\cc.txt

 

 

 
adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100
>C:\Users\Desktop\applog1.txt:输出日志文件到本地路径
案例:adb shell monkey -p com.baidu.yuedu   -s 1001 --throttle 1000 -v-v-v 100 >  D:\ls\fx\cc1.txt

 

 

 

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序

列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随

机的;

 
=======================================================
 
 
 
Monkey调试:
1. Monkey调试:
在Monkey运行的过程中,我们可以通过结束进程的方式来终止Monkey的运
行,当然在运行的过程中遇到异常、奔溃、等情况Monkey也会停止。为了保证执行
的事件数执行完整我们可以通过调试选项的设置来防止在运行过程中Monkey命令提
前结束
--ignore-crashes 忽略在应用程序出现crash(崩溃)时monkey停止 (crash 克拉许   ,ignore  in过诺)
--ignore-timeouts 忽略在应用程序出现ANR(无响应)时monkey停止(anr  嗯no儿   )
--ignore-security-exceptions  (security安全 exceptions 异常)
忽略在应用程序出现许可时monkey停止
例如:同时忽略以上三种错误
adb shell monkey -p app包名 -s 1001 --throttle 1000 --ignore-crashes
--ignore-timeouts --ignore-security-exceptions -v-v-v 100
>C:\Users\Desktop\applog1.txt
 案例:adb shell monkey -p  com.baidu.yuedu  -s 1001 --throttle 1000 --ignore-crashes  --ignore-timeouts --ignore-security-exceptions -v-v-v 100  >D:\f\xyz.txt

 

 

 
7-2、Monkey练习题:
1. Monkey练习:
对百度阅读进行稳定性测试,要求:模拟用户的触摸操作,并执行时间12小
时,忽略crashes与anr报错,并输出日志以及稳定性测试报告
 
 
 
===================================================
 

4) 参数:  --throttle <毫秒>

用于指定用户操作(即事件)间的时延,单位是毫秒;

* 示例:adb shell monkey -p com.htc.Weather –throttle 3000 100

5) 参数:  --ignore-crashes

用于指定当应用程序崩溃时(Force& Close错误),Monkey是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey依然会发送事件,直到事件计数完成。

*示例1:adb shellmonkey -p com.htc.Weather --ignore-crashes 1000

  测试过程中即使Weather程序崩溃,Monkey依然会继续发送事件直到事件数目达到1000为止;

示例2:adb shellmonkey -p com.htc.Weather 1000

测试过程中,如果Weather程序崩溃,Monkey将会停止运行。

5.禁用进程

如果想中断运行中的monkey CTRL+C

adb shell ps | grep monkey  返回进程号

adb shell kill [刚才查到的进程号]

6.查看包名

A、手机安装包名查看器'

B、aapt命令:  aapt dump badging  *.apk

C、源码下AndroidManifest.xml文件查看(需要将apk解压)

D、adb logcat抓取当前Android机运行的app的包名命令行输入adb logcat > e:\bag.txt

手机操控app,ctrl+c停止,去e:\bag.txt这个文件下搜索关键字如Displayed ,一般都能找到!

 

 
参考:https://www.cnblogs.com/fighter007/p/8249851.html

 

posted @ 2024-04-17 09:29  xiaolehua  阅读(174)  评论(0编辑  收藏  举报