首页 > 其他分享 >肖sir__app之monkey测试

肖sir__app之monkey测试

时间:2024-04-17 09:34:57浏览次数:40  
标签:__ sir shell monkey -- app adb 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:查看手机的设备型号

 adb shell getprop(prop支撑) 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 地址 address(额觉思)   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

 

标签:__,sir,shell,monkey,--,app,adb,Monkey
From: https://www.cnblogs.com/xiaolehong/p/18139810

相关文章

  • vue相关内容
    vue相关路径配置1.根目录下的vite.config.jsimport{fileURLToPath,URL}from'node:url'import{defineConfig}from'vite'importvuefrom'@vitejs/plugin-vue'importAutoImportfrom'unplugin-auto-import/vite'importComponen......
  • 强!一款贼好用的低代码报表工具,开源免费!
    大家好,我是狂师!今天给大家推荐一款免费的数据可视化报表设计工具:JimuReport,类似excel操作风格,在线拖拽完成报表设计!项目号称:功能永久免费、可以商用、永久免费使用!1、JimuReport介绍JimuReport是北京国炬信息技术有限公司旗下的平台,是一款免费的数据可视化报表工具,主要用于报表......
  • 单例
    装饰器实现defsingleton(cls):_instance={}definner():ifclsnotin_instance:_instance[cls]=cls()return_instance[cls]returninner@singletonclassCls(object):def__init__(self):passc......
  • 视频质量AI智能分析诊断系统解决方案建设思路与设计
    一、建设背景随着安防视频覆盖日趋完善,视频在安全管理等方面发挥了不可替代的作用,但在使用过程中仍然存在视频掉线、视频人为遮挡、视频录像存储时长不足等问题,存在较大的安全隐患。1)视频在安全生产管理上作用日趋凸显,视频质量需长期保障受环境、老化、网络、供电、人为等多方......
  • Bootstrap-table 使用总结
    Bootstrap-table使用总结一、什么是Bootstrap-table?在业务系统开发中,对表格记录的查询、分页、排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这个bootstrap-table是一款非常有名的开源表格插件,在很多项目中广泛......
  • 市面上繁多的跨网软件,哪一款最适合中小型研发企业?
    中小型研发企业是指规模相对较小,以研究和开发新技术、新产品为主要业务的企业。这类企业虽在规模上无法与大型企业相比较,但同样作为市场经济最重要的组成部分,中小型研发企业仍以高创新力、强灵活性及市场灵敏度,具有非常强的发展生命力。数据对中小型研发企业而言非常重要,数据保......
  • 第一篇博客test
    MarkDown基础1.标题最多五个#号2.引用:这是一段引用用大于号实现3.列表3.1无序列表把大象放进冰箱:打开冰箱把大象塞进去关上冰箱3.2无序列表短横线-实现阿斯芬迪我无敌我牛逼3.3方块横杠+[]实现吃饭睡觉打豆豆选中3.4块代码块:```......
  • MySQL触发器
    MySQL触发器触发器是预先定义的一段SQL语句,当在某个表上执行INSERT/UPDATE/DELETE操作之前或之后,会自动执行触发器。创建触发器CREATETRIGGERtrigger_nameAFTER/BEFOREINSERT/UPDATE/DELETEONtable_nameFOREACHROWBEGIN--触发器操作的SQL语句END;查看触发器......
  • 【CSP】90%解压缩&80%化学方程式 两道大模拟
    大模拟就没什么太多说的了,《解压缩》需要用一点位运算,《化学方程式》需要用字符串。学到的主要经验就是,使用次数>2的功能拆分到不同函数内,并且对于难写的函数提前单独调试错误,不要等写完了再debug。对于《化学方程式》,我使用模块化思想。第一步拆成不同的项,把系数缓存起来,然后对......
  • MySQL存储过程与函数
    MySQL存储过程与函数存储过程创建、调用、删除创建CREATEPROCEDURE存储过程名(参数列表)BEGIN--SQL语句END;调用CALL存储过程名(参数值);删除DROPPROCEDUREIFEXISTS存储过程名;函数创建、调用、删除创建CREATEFUNCTION函数名(参数列表)RETURNS返......