目录
十、monkey压力测试(稳定性测试)
(一)什么是monkey
-
adb monkey是一款稳定性测试工具,通过随机操作app一段时间,看app会不会出现崩溃、无响应,能够正常维持运行的测试。是由android系统自带应用,可以通过adb shell monkey直接使用。(伪随机)
(二)monkey命令的路径
-
127|HWCLT:/ $ ls -l /system/bin/monkey -rwxr-xr-x 1 root shell 268 2018-08-08 00:01 /system/bin/monkey
(三)monkey的12种随机事件:
-
编号0: 触摸事件,参数--pct-touch,触摸事件指的是在屏幕某处按下并抬起的操作,我们可以模拟点击的操作;
-
编号1:手势事件(滑动事件),参数--pct-motion,滑动事件指的是在屏幕某处按下、随机移动、抬起的操作,类似我们滑动手机屏幕翻页的操作。
-
编号2:二指缩放事件,参数--pct-pinchzoom,缩放事件指的是在屏幕上的两处同时按下,又同时移动,最后同时抬起,模拟我们在手机放大缩小的操作
-
编号3:轨迹事件,参数--pct-trackball,指的是由一个或者多个随机的移动组成,有时会伴随点击。
-
编号4:屏幕旋转事件,参数--pct-rotation,模拟手机的横竖屏切换,degree指的是旋转方向,顺时针旋转,0表示旋转90°,1表示旋转180°,2表示旋转270°,3表示旋转360°
-
编号5:permission事件
-
编号6:基本导航事件,参数--pct-nav,指的是点击方向输入设备的上下左右按键的操作,现在的手机很少有这样的方向键了,所以应用较少
-
编号7:主要导航事件,参数--pct-majornav,指的是点击“主要导航”按键的操作,例如app的中间键,返回键,菜单按键等
-
编号8:系统按键事件,参数--pct-syskeys,指的是系统保留的按键事件,比如Home键、返回键、音量调节按键等
-
编号9:启动activity事件,参数--pct-appswitch,指的是在手机上启动一个Activity的操作,在随机的时间间隔内,Monkey 将执行一个 startActivity() 方法, 作为最大程度上覆盖被测包中全部 Activity 的一种方法
-
编号10:键盘事件,参数--pct-flip,键盘事件指的是一些与键盘相关的操作,比如点击输入框、键盘弹起等
-
编号11:其他类事件,参数--pct-anyevent,指的是除了上述事件之外的其他事件,比如其它不常用的设备按钮等
-
举例:adb shell monkey 1000 表示对手机整机进行1000次随机操作
(四)部分参数:
-
-p:指定有效的package(如不指定,则对系统中所有package有效),一个-p对应一个有效package, 如:-p com.ckt -p com.ckt.asura;
-
-v:指定打印信息的详细级别,一个 -v增加一个级别 , 默认级别为 0,三个-v表示最详细的级别。
-
-s:指定产生随机事件种子值(seed),相同的种子值产生相同的事件序列。如: -s 200
-
--throttle:每个事件结束后的间隔时间——降低系统的压力(如不指定,系统会尽快的发送事件序列)。如:--throttle 100
(五)指定各种事件百分比的参数:
-
--pct-touch:指定触摸事件的百分比,如:--pct-touch 5 表示触摸事件占5%的比例
-
--pct-motion 百分比 (滑动事件)
-
--pct-pinchzoom 百分比(二指缩放事件)
-
--pct-trackball 百分比 (轨迹球事件)
-
--pct-rotation 百分比 (屏幕旋转事件)
-
--pct-nav 百分比 (导航事件 up/down/left/right)
-
--pct-majornav 百分比 (主要导航事件 back key 、 menu key)
-
--pct-syskeys 百分比 (系统按键事件 Home 、Back 、startCall 、 endCall 、 volumeControl)、--pct-appswitch 百分比 (activity之间的切换)
-
--pct-appswitch 百分比(启动activity事件)
-
--pct-flip 百分比(键盘时间)
-
--pct-anyevent 百分比(任意事件)
(六)调试选项:
-
--dbg-no-events:初始化启动的activity,但是不产生任何事件。
-
--hprof:指定该项后在事件序列发送前后会立即生成分析报告 —— 一般建议指定该项。
-
--ignore-crashes:当应用程序崩溃或发生任何失控异常时,monkey将停止运行。如果设置此选项,monkey将继续向系统发送事件,直到计数完成。
-
--ignore-native-crashes:忽略本地代码导致的崩溃。设置忽略后,Monkey将执行完所有的事件,不会因此停止
-
--ignore-timeouts:通常,当应用程序发生任何超时错误(如‘Application Not Responding’对话框)时,monkey将停止运行。如果设置了此选项,monkey将继续向系统发送事件,直到计数完成。
-
--ignore-security-exceptions:忽略安全异常
-
--kill-process-after-error:发生错误后直接杀掉进程
-
--monitor-native-crashes:跟踪本地方法的崩溃问题
-
--wait-dbg:知道连接了调试器才执行monkey测试。
(七)一个比较完整的monkey命令
-
一个简单的monkey命令:adb shell monkey -p com.xy.android.junit -s 1635966164169 -v -v -v 10000
但是,工作中为了保证测试数量的完整进行,我们一般不会在发生错误时立刻退出压力测试。monkey测试命令如下:
-
adb shell monkey -p com.xy.android.junit -s 1635966164169 --ignore-crashes --ignore-native-crashes --ignore-timeouts --monitor-native-crashes -v -v -v 10000 >E:\monkey_log\java_monkey_log.txt 2>&1
其中,2>&1表示将输出和错误都重定向到文件中
-
--pkg-blacklist-file:黑名单,排除某些包不执行,如--pkg-blacklist-file /data/blacklist.txt
-
--pkg-whitelist-file:白名单,指定执行哪些包,如--pkg-whitelist-file /data/whitelist.txt
如图
使用举例:
在重定向的日志中搜索crash、anr、error、exception等关键字看有没有出现过类似错误。
命令一:用monkey去跑指定的app跑1万次,忽略异常和超时,把输出和错误都重定向到文件中
adb shell monkey -p tv.danmaku.bili -v -v -v --ignore-crashes --ignore-native-crashes --ignore-timeouts --ignore-security-exceptions 10000>C:\Users\lenovo\Desktop\37期\monkey7.txt 2>&1
命令二:指定seed值用monkey去跑指定的app跑1万次,忽略异常和超时,把输出和错误都重定向到文件中,这个用来复现或回归问题
adb shell monkey -p tv.danmaku.bili -v -v -v --ignore-crashes --ignore-native-crashes --ignore-timeouts --ignore-security-exceptions -s 1637762067514 10000>C:\Users\lenovo\Desktop\37期\monkey7.txt 2>&1
如果你想跑到出问题就停止,那就不需要忽略异常,把跑的次数设置足够大。
常见报错:部分小米手机在执行adb shell monkey命令时报java.lang.SecurityException: Injecting to another application requires INJECT_EVENTS permission,解决方法是在开发者选项页面,打开USB调试(安全设置),允许通过USB调试修改权限或模拟点击。
十一、 助手工具的使用
91助手、豌豆荚、爱思助手(iOS)、PP助手、360手机助手等等;
在测试中,可以借助这些助手工具完成测试App的安装、卸载,升级测试等,包括iOSApp和Android App;
以91助手为例,要通过助手管理手机,需要:
-
1)开启手机的开发者模式,再打开USB调试;
-
android手机需要做这个操作,步骤:打开设置-->打开关于手机-->找到版本号连续点击3次以上,直到看到进入开发者模式-->找到开发者模式并进入--->打卡usb调试-->然后用数据线连接电脑,在配对信息中点允许配对
-
-
2)用数据线连接PC与手机,按提示点击确定,91助手会在手机上安装一个91助手App,允许其安装即可;
-
3)正常情况下就可以连接PC与手机了,把测试App拖到应用一栏里,就可以安装App;
-
注意:
-
1)测试的iOS App安装,需要提前获取到测试设备UDID,把UDID写到测试App中一起打包,这样才能在测试设备上安装这个App;并且信任
-
2)测试App中使用的是测试证书,在安装完成测试iOSApp后,还需要在设置下面信任测试证书,才能使用这个测试App;
-
3)91助手可以通过iOS设备日志查看苹果设备的日志信息。
-
安装卸载升级操作:
-
如图
-
-
截图,日志,崩溃分析
-
如图
-
使用助手工具的主要场景:安装、卸载app,打印iOS的日志等。
十二、 弱网测试工具
弱网的因素:延迟、丢包、抖动、带宽
生活中的典型弱网场景:电梯、地下室、地铁(高峰、错峰)、公交(高峰、错峰)、高铁、山里
弱网测试的基本标准:app在弱网情况下不出现闪退、崩溃、ANR等问题。
弱网测试工具
-
当前推荐工具:QNET
-
QNET是当前最好用的弱网测试工具,能够模拟延迟、丢包、抖动等弱网场景,它以独立的app方式运行,操作简单,它里面内置了国内所有省份和海外部分国家的网络数据以及常见的弱网场景(公交高晚高峰、地铁早晚高峰、停车场、电梯等),在使用的时候直接选择内置的场景就可以了。
-
安装后默认有连续丢包、正常网络、100%丢包、极差网络四个模板。
-
除此之外,还可以新增模板,新增模板时可以选择类型为场景模板,就可以直接选择QNET中预置的场景。
-
-
其它工具:360 WiFi、Fiddler(抓包工具)、切换手机网络制式
-
360 WiFi限速:
如图
-
如果使用移动网络,通过在手机上选择不同的网络制式;
如图
-
通过fiddler限速
fiddler的原理
通过fiddler来实现限速步骤:
(1)在Rules-》CustomizeRules下面,首先要保证m_SimulateModem值为true,表示开启限速
(2)如下两行代码分别表示对上传和下载的限速,第一行表示上传1KB的延时是300ms,相当于上传速度是1KB/300ms=3.33333KB/s,第二行表示下载1KB延时150ms,通过设置这两个延时来控制网速,延时越大网速越慢。
十三、 App的性能测试
(一)什么是性能狗PerfDog
performance
charles_shenxxxx@foxmail.com/perdog2020
PerfDog是腾讯WeTest团队研发的一款性能测试工具,是移动全平台iOS/Android性能测试、分析工具平台。快速定位分析性能问题,提升APP应用及游戏性能和品质。手机无需ROOT/越狱,手机硬件、游戏及应用APP也无需做任何修改,极简化即插即用。
PerfDog支持移动平台所有应用程序(游戏、APP应用、浏览器、小程序、小游戏、H5、后台系统进程等)、Android模拟器、云真机等性能测试。支持APP多进程测试(如Android多子进程及iOS扩展进程APP Extension)。
(二)性能狗的使用演示
十四、 App抓包
(一)抓包工具
主流的抓包工具:开发者工具F12、Charles、Fiddler、Wireshark等
Charles抓包工具的使用
Charles/Fiddler抓包的原理:启动后会监听在8888端口,同时它会修改电脑的代理为http=127.0.0.1:8888;https=127.0.0.1:8888,表示Charles/Fiddler是作为电脑的代理工作。
https是加密的,http是不加密的,https=http+ssl
抓https的包,需要安装证书:Help->SSL Proxying->Install Charles Root Certificate,安装之后通过抓一个https的包来验证是否安装成功。
(二)抓App的包的步骤:
1、把手机和PC连接到同一个Wi-Fi;
2、修改手机的代理,配置成PC的IP(Wi-Fi分配的IP)和端口(Charles的端口),保存;
3、在Charles上会弹出如下窗口,点击Allow运行手机连接Charles,到这一步,在Charles上就可以抓到手机的http包了,如果要抓https的包,继续第4步操作;
4、在Charles上开启SSL代理
Proxy -> SSL Proxying Settings-->勾选Enable SSL Proxying
点击Add,点击Add,Host设置要抓取的https接口地址和端口
Host : * (使用通配符表示检测所有网络请求;建议还是设置单个需要抓取的https host,尽量避免使用 * 通配符)
5、在手机端安装Charles证书
在Charles上点击Help->SSL Proxying --> Install Charles Root Certificate on a Mobile Device or Remote Browser,会提示你如何在手机端配置代理以及安装证书:
点击后提示如下:
然后在手机浏览器上打开Charles Web Debugging Proxy • SSL CA Certificate installation下载证书,下载到一个你能找到的目录,别下载完就找不到了。
下载后在手机的系统设置-》更多设置-》系统安全-》加密与凭据-》从存储设备安装,安装刚刚下载的证书。
安装证书后,就可以抓到https的包了。
用charles拦截android设备https,证书无效的解决方法_charles 拦截后提示该网站的安全证书有问题-CSDN博客
HTTP请求的常用方法:
-
GET:表示从服务器获取资源
-
POST:表示向服务器提交资源
-
PUT:表示修改资源
-
DELETE:表示删除资源
用Fiddler抓取手机App的包的步骤:
1、安装Fiddler,配置Fiddler,勾选允许远程电脑连接
2、把手机和电脑连接到同一个Wi-Fi里;
3、查到电脑的Wi-Fi的IP地址
4、连接Fiddler下载证书并安装
在手机浏览器中打开 http://电脑IP:8888
5、修改手机的代理,IP为电脑的Wi-Fi IP,端口为8888
6、在手机上打开浏览器,输入百度一下,你就知道,正常在Fiddler就可以抓到手机浏览器的包