找回密码
 立即注册

推荐阅读

  • 便民服务
  • 关注我们
  • 社区新手
\nC:\\Users\\Administrator\\Desktop\\app.txt\n","marks":[{"type":"fontSize","value":18}]}]}]}],"state":{}},{"type":"block","id":"CFbZ-1657887105681","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"XCt1-1657887105680","leaves":[{"text":"seed = 1659123456804  ==》可以理解为事件id,方便我们复现问题定位","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"CF72-1657887105683","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"TC0b-1657887105682","leaves":[{"text":"当出现问题时候,需要想开发提供这个seed值,复现这个场景","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"vZ5H-1657887105685","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"SzCy-1657887105684","leaves":[{"text":"adb shell monkey -p com.baidu.yuedu -s 1659123456804 --throttle 1000 -v -v -v 100 >","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"r7j6-1657887105687","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"2wNh-1657887105686","leaves":[{"text":"C:\\Users\\Administrator\\Desktop\\app1.txt ==》重复上一次事件(加了一个seed值)","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"565Y-1657887105690","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"ccQK-1657887105689","leaves":[{"text":"adb shell monkey -p com.baidu.yuedu --pct-motion 40 --pct-touch 40 --throttle 1000 -v -v -v","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"tKHs-1657887105692","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"TzSn-1657887105691","leaves":[{"text":"100>C:\\Users\\Administrator\\Desktop\\app2.txt==》对百度阅读app每个1秒做一次操作,并指定","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"eK3B-1657887105694","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"fko6-1657887105693","leaves":[{"text":"触摸事件占比40%,手势事件占比40%,做100次操作,且输出日志到桌面","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"tK50-1657887105696","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"2aV9-1657887105695","leaves":[{"text":"// Seeded: 1659123456804","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"bOUY-1657887105698","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"XPBe-1657887105697","leaves":[{"text":"// Event percentages:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"MWCj-1657887105700","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"8Afl-1657887105699","leaves":[{"text":"//   0: 15.0%    --pct touch --触摸事件占比15%,15次","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"idDU-1657887105702","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"v41D-1657887105701","leaves":[{"text":"//   1: 10.0%  --pct motion 手势事件  10次","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"kQh1-1657887105704","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"7Eaw-1657887105703","leaves":[{"text":"//   2: 2.0%   --pct panchzoom 二指缩放","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"WRFg-1657887105706","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"oqfq-1657887105705","leaves":[{"text":"//   3: 15.0%   --轨迹球事件   15次","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"ejBi-1657887105708","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":&quotOUj-1657887105707","leaves":[{"text":"//   4: -0.0%  --屏幕旋转","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"FG5O-1657887105710","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"qtq3-1657887105709","leaves":[{"text":"//   5: 25.0%  --运行时权限开关","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"TVfL-1657887105712","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"80L5-1657887105711","leaves":[{"text":"//   6: 15.0%  --基本导航事件 上下 左右","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"gqIH-1657887105714","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"pSN7-1657887105713","leaves":[{"text":"//   7: 2.0%   --主要导航事件 home 回退键 菜单键","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"IwlD-1657887105716","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"FAlI-1657887105715","leaves":[{"text":"//   8: 2.0%  --系统按钮事件,音量键","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"Ftd9-1657887105718","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"juJS-1657887105717","leaves":[{"text":"//   9: 1.0%  --启动 activity 事件","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"SWs3-1657887105720","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"bqOl-1657887105719","leaves":[{"text":"//   10: 13.0%  --键盘轻弹事件","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"jDg7-1657887105722","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"a7K5-1657887105721","leaves":[{"text":"7、Monkey日志分析:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"Ec1S-1657887105724","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"CheE-1657887105723","leaves":[{"text":"正常情况:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"VrMG-1657887105726","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"wnCj-1657887105725","leaves":[{"text":"如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"KtbE-1657887105728","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"25iR-1657887105727","leaves":[{"text":"和所花费的时间;// Monkey finished 代表执行完成","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"11TE-1657887105730","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"7XdS-1657887105729","leaves":[{"text":"异常情况:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"c6l6-1657887105732","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"7UQI-1657887105731","leaves":[{"text":"查阅Monkey的输出日志:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"2sXa-1657887105734","name":"list-item","data":{"version":1,"listId":"umsE-1657887105342","listLevel":1,"listType":"ordered"},"nodes":[{"type":"text","id":"yX3Q-1657887105733","leaves":[{"text":"程序无响应的问题: 在日志中搜索 “ANR”","marks":[{"type":"fontSize","value":18}]}]}],"state":{"index":1}},{"type":"block","id":"mLjZ-1657887105736","name":"list-item","data":{"version":1,"listId":"umsE-1657887105342","listLevel":1,"listType":"ordered"},"nodes":[{"type":"text","id":"SdNX-1657887105735","leaves":[{"text":"崩溃问题:在日志中搜索 “Exception”","marks":[{"type":"fontSize","value":18}]}]}],"state":{"index":2}},{"type":"block","id":"99x0-1657887105738","name":"list-item","data":{"version":1,"listId":"umsE-1657887105342","listLevel":1,"listType":"ordered"},"nodes":[{"type":"text","id":"JkWb-1657887105737","leaves":[{"text":"如果有空指针,搜索“NullPointerException”","marks":[{"type":"fontSize","value":18}]}]}],"state":{"index":3}},{"type":"block","id":"3LqN-1657887105740","name":"list-item","data":{"version":1,"listId":"umsE-1657887105342","listLevel":1,"listType":"ordered"},"nodes":[{"type":"text","id":"2lKK-1657887105739","leaves":[{"text":"如果Monkey执行中断,在log最后也能看到当前执行次数","marks":[{"type":"fontSize","value":18}]}]}],"state":{"index":4}},{"type":"block","id":"7C5m-1657887105742","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"oLrt-1657887105741","leaves":[{"text":"8、Monkey调试:","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"DO9n-1657887105744","name":"list-item","data":{"version":1,"listId":"lxn5-1657887105343","listLevel":1,"listType":"ordered"},"nodes":[{"type":"text","id":"lJuq-1657887105743","leaves":[{"text":"Monkey调试:","marks":[{"type":"fontSize","value":18}]}]}],"state":{"index":1}},{"type":"block","id":"YmW9-1657887105746","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"65PA-1657887105745","leaves":[{"text":"在Monkey运行的过程中,我们可以通过结束进程的方式来终止Monkey的运","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"LNKU-1657887105748","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"O8wD-1657887105747","leaves":[{"text":"行,当然在运行的过程中遇到异常、奔溃、等情况Monkey也会停止。为了保证执行","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"QfsJ-1657887105750","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"Oa2m-1657887105749","leaves":[{"text":"的事件数执行完整我们可以通过调试选项的设置来防止在运行过程中Monkey命令提","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"LqiG-1657887105752","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"Kjz6-1657887105751","leaves":[{"text":"前结束","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"fRdo-1657887105754","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"q86G-1657887105753","leaves":[{"text":"--ignore-crashes 忽略在应用程序出现crash(崩溃)时monkey停止","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"MM2b-1657887105756","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"GjZu-1657887105755","leaves":[{"text":"--ignore-timeouts 忽略在应用程序出现ANR(无响应)时monkey停止","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"tIds-1657887105758","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"WQG9-1657887105757","leaves":[{"text":"--ignore-security-exceptions 忽略在应用程序出现许可时monkey停止","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"5AHD-1657887105760","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"7470-1657887105759","leaves":[{"text":"例如:同时忽略以上三种错误","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"BLP2-1657887105762","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"d6zm-1657887105761","leaves":[{"text":"adb shell monkey -p app包名 -s 1001 --throttle 1000 --ignore-crashes","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"EIlE-1657887105764","name":"paragraph","data":{"version":1},"nodes":[{"type":"text","id":"c9VB-1657887105763","leaves":[{"text":"--ignore-timeouts --ignore-security-exceptions -v-v-v 100","marks":[{"type":"fontSize","value":18}]}]}],"state":{}},{"type":"block","id":"L4Ib-1657887105768","name":"quote","data":{"version":1},"nodes":[{"type":"block","id":"kTs9-1657887105766","name":"paragraph","data":{},"nodes":[{"type":"text","id":"MCMv-1657887105765","leaves":[{"text":"\nC:\\Users\\Desktop\\applog1.txt\n","marks":[{"type":"fontSize","value":18}]}]}]}],"state":{}},{"type":"block","id":"dcbp-1657887105780","name":"paragraph","data":{},"nodes":[{"type":"text","id":"9LI4-1657887105778","leaves":[{"text":"","marks":[{"type":"fontSize","value":18}]}]}],"state":{}}]">第18讲  monkey 稳定性测试
1、app测试从那些维度去测试
1-1、App功能测试:
  • 功能测试:

安装、卸载测试:正常安装卸载后app的所有功能是否都正常
升级测试:升级之后app的数据是否丢失
业务逻辑测试:分解需求使用xmind思维导图工具梳理测试点编写用例用例评
审后执行测试
UI测试:界面布局是否混乱 界面内容是否显示正确、清晰
异常测试:断网 弱网 网络切换 来电话 来短信 电量不足等提示
1-2、适配测试:
2. 适配测试:
适配测试:在不同的硬件设备上app能否正常运行的测试
不同的平台:MTK(联发科(芯片产商))/高通(芯片与cpu产商)/展讯(国内芯片)
不同的组件:屏幕、接口、听筒
不同的可选项:cpu、内存、存储
1-3、App兼容性测试:
  • 兼容性测试:

兼容性测试:不同软件环境的App能否正常运行的测试
不同的操作系统:android ios以及系统版本
不同的手机品牌:小米 华为 苹果 oppo vivo 三星等以及型号
不同手机尺寸:4.8 5.1 5.5 6.1
不同屏幕的分辨率:10801920 10802340 10802400(宽1080个像素点 长2400个像素点)越高表示屏幕的像素点越多 图案就更清晰
不同网络:2G 3G 4G 5G wifi
1-4、App专项测试:
  • 专项测试:

专项测试:因为app的终端是手机
,严格来说属于手机的测试范畴
耗电测试:正向耗电测试(直接测试耗电量) 逆向耗电测试(系统资源占用情况)
后台耗电测试(后台运行耗电量)
流量测试:流量占用 后台流量
内存泄漏测试:内存占用 内存泄漏 内存不足
网络专项测试:弱网
蓝牙专项测试:蓝牙连接
T卡专项测试:2g 4g 8g 16g 32g手机存储卡
SIM卡专项测试:中国移动SIM卡 中国电信SIM卡 中国联调SIM卡
PS:指出响应报文协议及版本,状态码,响应头,响应体
1-5、App稳定性测试:
  • App稳定性测试:

稳定性测试:软件长时间持续运行,系统版本是否稳定,是否能持续的为用户
提供服务
2. 稳定性指标:
异常次数
异常频率
3. App稳定性测试实战:
Monkey工具
Monkey是向系统发送随机的用户事件流(如按键输入,触摸屏输入和手势输
入等),实现对正在开发的应用程序进行稳定性测试。可以更好的模拟用户操作,确
保App的稳定性
2、Adb命令:
  • adb命令:

adb version :查看当前adb版本
adb start-server:启动adb服务
adb kill-server:关闭adb服务
adb nodaemon server:检查5037端口是否被占用 如果被占用则提示:
cannot bind to 127.0.0.1:5037
adb install xxx.apk(apk包的路径):安装apk应用包
adb shell pm list package -3:显示所有第三方app包名
adb uninstall packName(app包名):卸载apk应用包
adb dump badging apkpath(apk包的路径):获取app包的名称与aActivity
adb shell pm list packages:显示手机中所有的app包的名称
adb reboot:重启模拟器
adb shell:进入安卓手机目录
adb get-serialno:获取手机序列号
adb shell wm size:获取手机屏幕分辨率
adb shell getprop ro.product.model:查看手机的设备型号
adb shell cat /proc/cpuinfo:获取手机的 cpu 信息
adb shell cat /sys/class/net/wlan0/address:获取手机的 mac 地址
adb logcat:查看所有进程运行日志
adb logcat | find “com.baidu.yuedu”:查看指定app百度阅读app日志
  • -f androidpath/filename:将日志写入到文件中并保存在手机上


                windowspath/filename:将日志写入到文件中并保存在pc上adb push windowspath androidpath:上传文件到手机端adb pull androidpath windowspath:手机端上传文件到pc端adb -s deviceName shell :进入到指定设备的目录adb -s deviceName install xxx.apk:安装应用到指定的设备目录
            
3、monkey 稳定性测试实操
1)monkey 是android skd 自带的工具,adb搭建好了就可以使用
adb shell monkey ==》monkey 命令使用介绍
adb shell monkey 命令前缀 固定写法  中间的中括号是一个列表,不必填,后面有一个
count 函数 事件,必填
4、monkey 命令格式:
adb shell monkey +中间参数(不必填) +count(事件必填)
adb shellmonkey 100  ==》对真机或者模拟机做100次随机操作(没有指定包名)
adb shell monkey -p com.baidu.yuedu 100 ==》对百度阅读app进行100次随机操作
adb shell monkey -p com.baidu.yuedu --throttle 1000 100 ==》
对百度阅读app进行每个1秒做1次,做100次随机操作
adb shell monkey –p app包名 –throttle 1000 36000==》每隔1秒对app随机做1次操作持续10小时
5、 Monkey日志命令:
-v:leve0 除启动提示、测试完成和最终结果之外、提供较少信息
-v -v:leve1 提供较为详细的日志,包括每个发送到Activity的事件信息
-v –v –v:leve2 最详细的日志,包括了测试中选中,未选中的Activity信息
6、 Monkey日志分析:
adb shell monkey –p app包名 --throttle 1000 –v-v-v 100:
每隔1秒对app做1次随机操作,执行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 >C:\Users\Administrator\Desktop\app.txt
            
seed = 1659123456804  ==》可以理解为事件id,方便我们复现问题定位
当出现问题时候,需要想开发提供这个seed值,复现这个场景
adb shell monkey -p com.baidu.yuedu -s 1659123456804 --throttle 1000 -v -v -v 100 >
C:\Users\Administrator\Desktop\app1.txt ==》重复上一次事件(加了一个seed值)
adb shell monkey -p com.baidu.yuedu --pct-motion 40 --pct-touch 40 --throttle 1000 -v -v -v
100>C:\Users\Administrator\Desktop\app2.txt==》对百度阅读app每个1秒做一次操作,并指定
触摸事件占比40%,手势事件占比40%,做100次操作,且输出日志到桌面
// Seeded: 1659123456804
// Event percentages:
//   0: 15.0%    --pct touch --触摸事件占比15%,15次
//   1: 10.0%  --pct motion 手势事件  10次
//   2: 2.0%   --pct panchzoom 二指缩放
//   3: 15.0%   --轨迹球事件   15次
//   4: -0.0%  --屏幕旋转
//   5: 25.0%  --运行时权限开关
//   6: 15.0%  --基本导航事件 上下 左右
//   7: 2.0%   --主要导航事件 home 回退键 菜单键
//   8: 2.0%  --系统按钮事件,音量键
//   9: 1.0%  --启动 activity 事件
//   10: 13.0%  --键盘轻弹事件
7、Monkey日志分析:
正常情况:
如果Monkey测试顺利执行完成,在log的最后会打印出当前执行事件的次数
和所花费的时间;// Monkey finished 代表执行完成
异常情况:
查阅Monkey的输出日志:
  • 程序无响应的问题: 在日志中搜索 “ANR”
  • 崩溃问题:在日志中搜索 “Exception”
  • 如果有空指针,搜索“NullPointerException”
  • 如果Monkey执行中断,在log最后也能看到当前执行次数

8、Monkey调试:
  • Monkey调试:

在Monkey运行的过程中,我们可以通过结束进程的方式来终止Monkey的运
行,当然在运行的过程中遇到异常、奔溃、等情况Monkey也会停止。为了保证执行
的事件数执行完整我们可以通过调试选项的设置来防止在运行过程中Monkey命令提
前结束
--ignore-crashes 忽略在应用程序出现crash(崩溃)时monkey停止
--ignore-timeouts 忽略在应用程序出现ANR(无响应)时monkey停止
--ignore-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
            


分享至 : QQ空间
收藏

0 个回复

您需要登录后才可以回帖 登录 | 立即注册