APP的命令和monkey压力测试

news2024/11/25 4:51:37

一、命令的使用:

1.dos下链接:adb connect 127.0.0.1:62001
2.所附设备清单:adb devices
device:已识别的设备,表示连接成功
unauthorized:没有授权需要手机授权才能连接
unkown:未识别设备
offline:离线设备
3.版本:adb version
Android Debug Bridge version 1.0.31
意思:Android调试桥版本1.0.31
4.启动adb服务:adb start-server
5.关闭adb服务:adb kill-server
6.检查5037端口号是否被占用:adb nodaemon server
7.显示所有第三方包名:adb shell pm list package -3
8.安装apk应用包:adb install \xxx.apk(apk包路径)
9.卸载apk应用包:adb uninstall app包名
10.获取包名和activity活动名:aapt dump badging apk路径
aapt dump badging D:\测试课程记录\jenkins\搭建环境需要的安装包\baiduyuedu_3760.apk
11.显示手机中所有的APP包名称:adb shell pm list packages
12.重启模拟器:adb reboot
13.进入安卓手机目录:adb shell
14.获取手机序列号:adb get-serialno(流水号)
获取全部的连接号:adb devices
获取某个设备的连接号,用于确认映射关系:adb get-serialno
15.获取手机屏幕分辨率:adb shell wm size
16.查看手机设备号:adb shell getprop ro.product.model
17.获取手机CPU信息:adb shell cat /proc/cpuinfo
processor : 0 处理器
vendor_id : GenuineIntel 供应商id
cpu family : 6 cpu家庭
model : 61 模型
model name : Intel® Core™ 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:(电源管理)
18.获取手机Mac地址:adb shell cat /sys/class/net/wlan0/address
19.查看所有进程的运行日志:adb logcat
20.查看指定APP百度阅读APP日志:adb logcat|find “com.baidu.yuedu”
21.将日志写入到文件中并保存在手机上:adb logcat -f androidpath/filename(手机路径和文件名)
22.将日志写入到文件中并保存在PC上:adb logcat ->windowspath/filename(本地路径和文件名)
23.上传文件到手机端:adb push 本地文件路径 手机路径
24.进入到指定目录:adb -s deviceName shell (中间是设备名称)
25.安装应用到指定的设备目录:adb -s deviceName install apk本地路径(中间是设备名称)
26.删除手机端文件
adb shell
root@shamu:/ # cd /data
cd /data
root@shamu:/data # rm -rf aaa.txt
rm -rf aaa.txt
27.dos命令adb logcat 保存日志出现拒绝访问
报错解释:
当你在使用 adb logcat 命令尝试将日志保存到文件时,如果遇到“拒绝访问”(Access is denied)的错误,这通常意味着你没有足够的权限来写入指定的文件或目录。

解决方法:
确保你在正确的目录下执行命令,并且你有权限在该目录下创建文件。
如果你是在Windows系统上,尝试以管理员身份运行命令提示符(右键点击命令提示符或PowerShell,选择“以管理员身份运行”)。
检查你想要保存日志文件的目录权限,确保你的用户账户有写入权限。
如果你正在尝试写入一个已经打开的文件,确保该文件没有被其他程序占用。
确保你的文件名没有包含任何特殊字符或者保留字,并且文件系统支持该文件名。
如果你在使用网络位置或外部存储设备,确保已经正确地挂载并且具有读写权限。
如果上述方法都不能解决问题,可能需要检查安全软件的限制或者系统策略,或者考虑使用其他方法,如使用文件管理器手动保存日志文件。(检查是否字符填写错误、是否漏写)

二、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,各种事件的具体实现。

三、monkey介绍

1.monkey就是SDK中附带的一个工具。monkey是Android中一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的办法。
该工具用于进行压力测试。开发人员结合monkey打印的日志和系统打印的日志分析测试中的问题。
2.monkey运行原理:命令行:adb shell monkey–>monkey.shell–monkey.jar–android进程–设备上执行测试
在这里插入图片描述

3.下载应用软件
4.adb命令实战:
1)monkey命令介绍:adb shell monkey help
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)对模拟器或真机做100次随机操作:adb shell monkey 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)显示第三方的app包的名称:adb shell pm list package -3
4)对指定的APP做100次随机操作:adb shell monkey -p app包名 100
出现问题:网络状态未连接
5.monkey稳定性实战:
对指定的APP每隔1秒做一次操作做100次:
查看所有包名:adb shell pm list package -3
节流:adb shell monkey -p app包名 --throttle 1000 100 (1000ms 100次)
每隔一秒对APP随机做一次操作持续十小时(实际工作时测APP):adb shell monkey -p app包名 --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个随机事件
对包进行300次无规律点击测试:adb shell monkey -p com.baidu.yuedu -v 300
adb shell monkey -p com.baidu.yuedu -v 300 >本地文件路径

五、monkey日志分析:

1.monkey日志命令:参数v:日志详细程度
用于指定反馈信息级别(信息级别就是日志的详细程度),总共分三个级别,对应参数:
-v:level0 除启动提示、测试完成和最终结果外提供较少信息
-v -v:level1 提供较为详细的日志,包括每个发送到activity的事件信息
-v -v -v :level2最详细的日志,包括了测试中选中、未选中的activity信息
2.日志分析:
每秒对APP做一次随机操作,执行100次,并输出详细日志:adb shell monkey -p app包名 --throttle 1000 -v-v-v 100
输出日志文件到本地路径adb shell monkey –p app包名 --throttle 1000 –v-v-v 100 >本地路径
3.正常情况:
如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数和所花费的时间;
monkey:send=1639361375098 count=100
// Monkey finished 代表执行完成
4.异常情况:
查阅Monkey的输出日志:

  1. 程序无响应的问题: 在日志中搜索 “ANR”(anr)
  2. 崩溃问题:在日志中搜索 “Exception”(异常)
  3. 如果有空指针,搜索“NullPointerException”
  4. 如果Monkey执行中断,在log最后也能看到当前执行次数
    5.重现异常以及回归验证:

六、s参数详解:

用于指定伪随机数生成器的seed值,如果seed相同,则两次Monkey测试所产生的事件序列也相同的
-s:在命令中加上seed值 确保两次执行的序列号一样
如果第一次稳定性测试时出现了bug,那测试人员就需要重现bug和验证bug
所以需要重复两次操作一样,seed值相同就能确保monkey两次测试所触发的事件
一致
输出日志文件到本地路径:adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100>本地.txt
adb shell monkey –p app包名 –s 1001 --throttle 1000 –v-v-v 100>本地1.txt
两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的Seed值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

七、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>本地路径1.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

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

八、拓展:

参数: --throttle <毫秒>
用于指定用户操作(即事件)间的时延,单位是毫秒;

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

参数: --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将会停止运行。

九、禁用进程

如果想中断运行中的monkey CTRL+C
adb shell ps | grep monkey 返回进程号
adb shell kill [刚才查到的进程号]

十、查看包名

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2202398.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于LORA的一主多从监测系统_BMP280气压传感器

关联&#xff1a;LORA 、HAL、气压传感器 这个传感器也是比较常见的&#xff0c;但灵敏度什么的都没啥问题&#xff0c;不过气压传感器不是很好去观察这个变化&#xff0c;毕竟一个地方的大气压基本不会有太大波动&#xff0c;我们可以在百度搜索所在地的平均大气压&#xff0…

bladex漏洞思路总结

Springblade框架介绍&#xff1a; SpringBlade是一个基于Spring Boot和Spring Cloud的微服务架构框架&#xff0c;它是由商业级项目升级优化而来的综合型项目。 0x1 前言 最近跟一些大佬学习了blade的漏洞&#xff0c;所以自己总结了一下&#xff0c;在渗透测试过程中&#x…

frp+windows+宝塔+域名使用

先讲一下frp的相关概念 1. 什么是 FRP&#xff1f; FRP (Fast Reverse Proxy) 是一款开源的反向代理工具&#xff0c;支持多种协议&#xff08;如 TCP、UDP、HTTP 和 HTTPS&#xff09;的内网穿透。它能够帮助你将位于内网或防火墙后面的服务映射到外网&#xff0c;方便外网用…

产品经理想转行做大模型AI产品经理,建议看看这篇文章!(文末福利)

如果你想转行做大模型&#xff0c;作为一名AI产品经理&#xff0c;你可以怎么做呢&#xff1f;或许&#xff0c;你可以先进行自我检测&#xff0c;看看自己是否真的适合转行做大模型。这篇文章里&#xff0c;作者便给想转行做大模型的AI产品经理们提出了一些建议&#xff0c;不…

【进阶版】如何实现一个基于 HTML+CSS+JS 的任务进度条

创建一个动态任务进度条&#xff1a;进阶版实现 在现代网页开发中&#xff0c;任务进度条是用户交互中非常重要的组件&#xff0c;它能够直观地展示任务的进展情况。本文将向你展示如何使用 HTML、CSS 和 JavaScript 创建一个动态的任务进度条。在这个进阶版本中&#xff0c;用…

三网话费折扣api怎么对接合作?如何变现?

三网优惠话费充值接口对接的操作步骤通常包括以下几个阶段&#xff1a; 注册账号&#xff1a;在API服务提供商的控制台注册账号&#xff0c;例如微客云控制台 。添加店铺&#xff1a;在控制台中添加店铺&#xff0c;并保存店铺ID或只勾选CMS 。申请API密钥&#xff1a;联系客服…

临时提高电压的常用方法电荷泵、自举升压电路

一、临时提高电压 爽死*子了&#xff0c;*子也硬玩一把临时重组器……&#xff08;雷总音&#xff09;。临时提高星级或者电压真的是一件很爽的事情&#xff0c;小钱办大事轻松拿捏。常用的临时提高电压的方式主要有两种&#xff0c;电荷泵和自举升压电路&#xff0c;你的某米手…

Nvidia在AI峰会上发布了七项重大技术公告

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

文档大师:打造一站式 Word 报告解决方案

最新技术资源&#xff08;建议收藏&#xff09; https://www.grapecity.com.cn/resources/ 前言 在政府、医院、银行、财务以及销售等领域&#xff0c;常常需要创建各种报告文件来展开工作汇报&#xff0c;譬如季度销售报告、年度总结报告、体检报告和保险合同等。在没有报表工…

一个月学会Java 第7天 字符串与键盘输入

Day7 字符串与键盘输入 字符串作为所有程序都很重要的东西&#xff0c;这个东西必须好好的学习&#xff0c;在Java中String会比较好学习&#xff0c;比起C和C里面会更加的简单&#xff0c; 在Java之中也是很好理解的&#xff0c;因为底层已经封装好了char数组&#xff0c;也就是…

《深入浅出LLM基础篇》(五):Propmt工程优化

&#x1f389;AI学习星球推荐&#xff1a; GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料&#xff0c;配有全面而有深度的专栏内容&#xff0c;包括不限于 前沿论文解读、…

【C++】AVL树(AVLTree)

目录 一、AVL树概念&#xff1a; 二、定义&#xff1a; 三、AVL树的插入&#xff1a; 四、AVL树的旋转&#xff1a; 1、左单旋&#xff1a; 2、右单旋&#xff1a; 3、右左双旋&#xff1a; 4、左右双旋&#xff1a; 五、AVL树的检验&#xff1a; 一、AVL树概念&#x…

重离子+数字化,肿瘤治疗的新路

大国之重器&#xff0c;当为大国之民生。 医用重离子加速器装置&#xff0c;被誉为肿瘤放疗领域的大国重器。在河西走廊东侧的甘肃省武威肿瘤医院(以下简称&#xff1a;武威肿瘤医院)&#xff0c;我国首台拥有自主知识产权的医用重离子加速器装置坐落此。自建成投入使用以来&a…

新手教学系列——爬虫异步并发注意事项

引言 爬虫是网络数据采集中不可或缺的工具,很多程序员在入门时会遇到这样的问题:为什么我的爬虫这么慢?尤其在面对大量数据时,单线程爬虫的速度可能让人捶胸顿足。随着爬虫规模的增大,异步并发成为了提高爬取效率的关键。然而,异步并发并不像表面看起来那么简单,如果没…

有哪些可靠的算力租赁平台推荐

作为一名炼丹师&#xff0c;在炼丹过程中使用过不少 GPU 算力租用平台&#xff0c;也有很多心得体会~为了让道友们少走弯路&#xff0c;我打算把近期在市场上用过的几家热门的 GPU 算力平台比较比较&#xff0c;以便其他炼丹师选择适合自己的算力平台。话不多说看&#xff01; …

Python简介与入门

如果你要用计算机做很多工作&#xff0c;最后你会发现有一些任务你更希望用自动化的方式进行处理。比如&#xff0c;你想要在大量的文本文件中执行查找/替换&#xff0c;或者以复杂的方式对大量的图片进行重命名和整理。也许你想要编写一个小型的自定义数据库、一个特殊的 GUI …

2025年人工智能行业的发展趋势预测以及中小企业的应对策略

大家好&#xff0c;我是Shelly&#xff0c;一个专注于输出AI工具和科技前沿内容的AI应用教练&#xff0c;体验过300款以上的AI应用工具。关注科技及大模型领域对社会的影响10年。关注我一起驾驭AI工具&#xff0c;拥抱AI时代的到来。 ​ 进入2024年的第四季度&#xff0c;人工…

python数据分析与可视化工具介绍-numpy库

NumPy&#xff08;Numerical Python的简称&#xff09;&#xff0c;是科学计算基础的一个库&#xff0c;提供了大量关于科学计算的相关功能&#xff0c;例如&#xff0c;线性变换&#xff0c;数据统计&#xff0c;随机数生成等。其提供的最核心的类型为多维数组类型&#xff08…

Android Studio 打包混淆失效问题

项目场景&#xff1a; 通过 Python 脚本运行打包 Apk &#xff0c;实现动态配置各个版本的 Apk。 问题描述 通过 Python 脚本打包编译 Apk&#xff0c;开启混淆后&#xff0c;打包成功&#xff0c;反编译出来的 Apk 并没有被混淆。 原因分析&#xff1a; 首先确认打包混淆…

矩阵系统源码搭建,oem贴牌,技术指导

一、技术选型与整合 多种技术的融合 矩阵系统通常需要整合多种技术&#xff0c;包括前端技术、后端技术、数据库技术、服务器技术等。选择合适的技术栈并确保它们能够良好地协同工作是一个挑战。例如&#xff0c;前端可能使用 React 或 Vue.js&#xff0c;后端可能使用 Java Sp…