测试开发进阶(四十六)

为什么要做APP专项测试

  • 奔溃(crash)

  • 卡顿

  • 兼容性问题(占据大多数时间)

  • 发热/发烫

硬件耗电->产生热量

  • 响应慢

2-5-8原则

2秒钟 -> 优

5秒钟 -> 可以接受

8秒钟 -> 不能接受

专项纬度

场景测试

兼容性测试

  • testin云测

  • STF实验室平台

压力稳定性测试

  • Monkey

弱网测试

  • fiddler代理

  • network Emulator toolkit

  • Facebook ATC

安全测试

  • BurpSuite

  • ApkTool/Dex2Jar/JD-GUI反编译

  • 安装包签名

  • 账户安全

性能测试

CPU

  • proc文件-Jiffies

  • GT/soloPi

电量测试

  • 腾讯GT

  • battery historian

流量测试

  • proc文件

  • 腾讯GT

启动时间

  • adb shell am start

  • soloPi插件

流畅度专项

  • 卡顿root cause

  • FPS/SM

  • GPU呈现模式/GT

  • 卡顿分析

  • 页面多度绘制

  • TraceView/StrictMode

  • 频繁GC

内存专项

  • 内存泄露/溢出

  • 内存占用

  • LMK

  • leakcanary

测试开发进阶(四十六)_第1张图片

兼容性测试

由于移动端的碎片化特征,需要确保App产品能够在不同系统版本,不同屏幕分辨率,不同系统定制ROM也能够有好的用户体验

  • 系统版本兼容

Android:

  • 2.2 2.3 milestone

  • 4.0 4.1 4.2 4.4

  • 5.0 5.1

  • 6.0 6.1

  • 7.0 7.1

  • 8.0 8.1

  • 9

IOS:

  • 8

  • 9

  • 10

  • 11

  • 12

  • 13


  • 系统定制ROM兼容(Android)

小米MIUI

华为EMUI

魅族flyme


  • 屏幕分辨率兼容


APP流量数据https://tongji.baidu.com/research/app

测试开发进阶(四十六)_第2张图片

方案

  • 云测平台

  • 自建STF平台:http://www.lemfix.com/topics/341

压力稳定性测试

App长时间在前/后台运行,用户对于App的稳定性有更高的要求。

通过稳定性测试来避免奔溃(crash)/无响应(ANR)/内存泄露等问题。

  • Monkey 支持Android

优点:

Google原生工具,使用简单,开源

缺点:

基于坐标,遍历深度不够,无详细报告


  • Maxim 支持Android

优点:

基于uiautomator引擎实现,多种模式运行

缺点:

不开源,无法定制


  • FastMonkey 支持IOS

优点:

基于XCTestWD,swiftmonkey二次开发,无需插桩 效率高

缺点:

配置复杂


adb

  • 安装

https://www.douban.com/note/701408420/

  • 查看版本

$ adb version

  • 查看设备连接情况

$ adb devices

使用「夜神模拟器」

  • 杀死/重启adb服务

$ adb kill-server
$ adb start-server
  • 查看当前运行的包名

$ adb shell dumpsys activity | find "mFocusedActivity"

dumpsys:解析信息

activity:页面名字

monkey

乱点1000次

$ adb shell monkey 1000

测试开发进阶(四十六)_第3张图片

-p用于约束限制,用此参数指定一个或多个包(App名字)

指定包之后,Monkey将只允许系统启动指定的App,如果不指定则允许启动设备中的所有APP

$ adb shell monkey -p com.lemon.lemonban 1000

-s用于指定伪随机数生成器的seed值

如果seed相同,则两次Monkey测试所产生的事件序列也相同

# 提前指定,第一次Monkey测试出了bug
$ adb shell monkey -p com.lemon.lemonban -s 101 1000 
# 第二次测试的流程和第一次一样就可以保证复现
$ adb shell monkey -p com.lemon.lemonban -s 101 1000

-v日志级别

  • -v

默认值,仅提供启动提示,测试完成,最终结果

  • -v-v

提供较为详细的日志,包括每个发送到Activity的事件信息

  • -v-v-v

最详细的日志,包括了测试中选中/未选中的Activity信息

$ adb shell monkey -p com.lemon.lemonban -v -v 1000 
$ adb shell monkey -p com.lemon.lemonban -v -v -v 1000 

--throttle<毫秒>

指定用户操作间的时延

$ adb shell monkey -p com.lemon.lemonban --throttle 3000 1000

--randomize-throttle

指定随机延时,单位毫秒

执行1000次随机事件,间隔在0~300毫秒之间

$ adb shell monkey -p com.lemon.lemonban --throttle 300 --randomize-throttle  1000
  • 杀死monky

$ adb shell
# 进入shell
$ shell
$ kill -9 

事件百分比

测试开发进阶(四十六)_第4张图片

$ adb shell monkey -p com.lemon.lemonban --pct-touch 100 1000

设置全部(100%)为点击事件执行1000次

弱网测试

现在APP网络环境复杂,如果APP没有对网络异常进行兼容处理,那么用户可能在日常使用中遇到APP闪退,ANR(程序无响应),数据丢失等问题

低于2G速度属于弱网,3G也可以划分为弱网,一般WIFI不划入弱网测试范畴

测试开发进阶(四十六)_第5张图片

工具:

  • fiddler/charles

代理限速,设置延时

按照Charles抓取手机报文的方式设置代理

  • Network Emulator Toolkit

网卡限速,设置丢包和延时

  • facebook ATC

Linux 工具,需要部署环境,后续设备接入热点即可

你可能感兴趣的:(测试开发进阶(四十六))