移动测试
移动测试
测试总结
移动测试主要使⽤的平台为Android和IOS的平台,因此针对移动平台的测试,和WEB平台的测试,是存在
不同的思维⽅式的。 这些不同的思维⽅式具体总结如下。
兼容性测试
WEB:EDGE,Chrome,Firefox,苹果浏览器
移动互联网:UC浏览器,QQ浏览器
WEB
需要考虑WEB产品在不同浏览器上的⻚⾯兼容以及前端样式的展示
APP
操作系统
需要考虑APP在主流平台上的⻚⾯展示和样式的加载,⽬前考虑的主流平台主要是Android和IOS的平台
分辨率
不管是什么平台,都会存在不同的分辨率的展示,⽐如就拿苹果⼿机来说,它存在iphone7到iphone13,
当然这仅仅是IOS的平台,还需要考虑Android平台的兼容性的测试,主流的分辨率主要可以总结为如下部分:
android 800x480, 960x640,1280720(720p),1920*1080(1080p),25601440(2k)
在实际的企业⾥⾯,具体根据⽤户使⽤的⼿机来测试应⽤程序在不同分辨率下的展示情况,总之主流的核⼼⼿机分辨率都是需要来进⾏测试的。
可以设置不同的手机型号,可以调节分辨率大小

不同⼚家
国内很多的⼚商都对Android进⾏了⼆次改造,形成了各种不同的⼿机操作系统,其实本质上还是Android的基础上进⾏⼆次的改造和开发,核⼼的东⻄还是属于Android,只不过在⼈家的基础上新增了⼀层⾃⼰的应⽤程序, 这些不同主流的平台都需要来进⾏测试,核心主流的平台主要总结为如下:
小米
华为
vivo/oppo
阿⾥云os
⽹络类型
移动互联⽹产品相⽐PC互联⽹产品,有⼀个特点是前者使⽤的⽹络⽐较多样,除了Wif之外,很多时候是在移动⽹络下使⽤的,移动⽹络遇到的情况⼜⽐较复杂,⽐如地铁、隧道、体育场等。所以⽹络不稳定的情况是⽐较容易发 ⽣的,很多情况下App的⼀些问题是在复杂的⽹络情况下才会暴露,与其让⽤户发现和投诉这些问题,不如我们在 测试阶段尽量模拟这样的⽹络情况,及早发现和修复这些问题。 因为移动产品已经是⾮常普遍的,所以就需要测试⼀个APP在不同⽹络下资源的加载情况,这些不同的⽹络主要可 以总结为如下的⼏点:
wifi
2G(2G基本已经使⽤的⾮常少了)
3G
4G
5G
需要将⽹络连接不上、无网络、企业服务器错误等各种情况予以考虑并进⾏细化的测试。建议:
网络不稳定,没有的到服务器的反馈-->提示“网络不稳定,请稍后再试”。
网络没有连接-->提示“网络目前没有连接,请重新连接网络之后再尝试”。
企业服务器或者第三⽅服务因未知原因出错-->提示“目前⽆法接收相关数据,我们正在调查,请稍后再试”。
弱网络
离线状态

网络情况较差

配置Android.sdk环境
先检查node.js和java环境
node.js环境

java环境

下载sdk,解压压缩包,然后把文件路径添加到系统变量

在path环境变量中加入:%ANDROID_HOME%\platform-tools和%ANDROID_HOME%\tools,输入如下,最后点击确定即可

然后输入android -h 显示如下结果

功能测试点
用户使用习惯
权限问题
硬件问题
比如双卡双待、摄像头、GPU等。
操作习惯
用户常用的有菜单键、Home键、返回键、Home键长按(显示当前进程列表)、调整音量、待机等。相应的作为测试工程师我们需要考虑的项就变成了:
• 应用中的Back键的事件是否重写了?在各个功能界面中点击Back键会有什么反馈?
• 用户在应用各个界面点击Home键之后,再次打开应用的反馈:应用是默认处于后台的状态还是有结束生命周期。
• 应用是否使用到菜单键,切不可遗漏这个按键和应用的交互。
• 应用在任何状态下,系统进入待机或者关机。当系统被重新唤醒后,应用处于什么状态,是否有正确的反馈。
• 应用进程被用户手动关闭之后,是否可以再次正确启动。
数据移动
⽤户会在软件没有响应或者出现重⼤缺陷时,点击强制停⽌按钮。或者在⼿机变卡后选择清空数据来是否⾃⼰机器 的空间。
安装&卸载测试
用户安装方式主要有:
• 使用adb install <package name>进行安装;
• 使用第三方软件(比如豌豆荚、91助手等)安装;
• 将应用先下载到SD卡中再进行安装;
• 一部分数据量大的Android应用(一般是游戏)会采用小体积的应用安装,之后通过在线下载数据的方式使用。
应用安装之后,还要重点查看以下几点:
• 不联网的情况下是否能正常运行,会不会崩溃?
• 在线下载数据不完整,能否再次启动?
• 是否支持断点续传?
• 下载完整之后,再次启动。
• 安装成功后,检查版本号以及相关数据。
发布:
android:开发打包(.apk)的文件,上传到应用商店(主流的应用商店),发布
IOS:
1、把自己手机的唯一序列号告诉开发
2、在自己的手机上安装testflight
3、开发把被测试的APP发布后,然后测试就可以在testflight中下载开发发布的被测试的app
升级测试
升级应用必要条件:旧版本应用和新版本应用拥有相同的签名、包名,有一个标示符(比如版本号)来区分。
增量升级也叫做差分升级(Smart APP update)。
优点:用户不必再下载一个完整的Apk进行安装。
缺点:不需对发布的所有旧版本和最新版本做差分,很麻烦;如果一部分系统没有拿到内置应用的权限,那么就没有办法进行增量升级。
内置应用升级
注意每次升级之后的应用是否与内置在系统中的.os文件匹配,如不匹配则会直接导致应用崩溃。升级测试场景还有很多,以后再做补充。应用升级并非仅仅检查新功能或做冒烟测试,更多的是去了解升级的原理,升级到底更改了哪些文件,而这些文件又影响力哪些功能和数据库,找到这些问题的答案才能有针对性的进行全面的测试。
稳定性测试
在保证基本功能正确基础之上,App的稳定性就显得非常重要,如果一个App经常出现闪退或者卡死,那么用户体验就会受到很大伤害,在有其他竞争产品的情况下很容易造成用户的流失。 稳定性测试的概念有2种, 一, 稳定性测试,对应于异常性测试,即发生异常情况时,系统如何反应的测试。包含: 1 交互性测试,被打扰的情况,如来电,短信,低电量等。这些其实在上章的功能测试中有提到。 2 异常性测试,断网,断电,服务器异常等情况
二,稳定性测试指的是性能测试,压力测试 1 基准性能测试,通过压服务器端口及客户端在不同网络环境下响应速度 2 大数据测试,在特定环境下,客户端一次性更新大量数据及人员列表
另有其它⽂章,提到性能测试,为评估APP的时间和空间特性(真是⾼深啊,时间和空间,再来个4维,5维?), 包括:
1 极限测试:在各种边界压⼒情况下,如电池,存储,⽹速等,验证app是否能正确响应
--内存满时安装app
--运⾏app⼿机断电
--运⾏app时断掉⽹络
这⼏点倒是与第⼀条的内容重复
2 响应能⼒测试:测试app中的各类操作是否满⾜⽤户响应时间要求
--app安装 ,卸载的响应时间
--app各类功能性操作的影响时间
3 压⼒测试:反复、⻓期操作下,系统资源是否占⽤异常
--app反复进⾏安装卸载,查看系统资源是否正常(弄个⼏次就⾏吧,正常⼈,谁反复安装卸载啊)
--其它功能反复进⾏操作,查看系统资源是否正常(这倒是应该的)
4 性能评估:评估典型⽤户应⽤场景下,系统资源的使⽤情况
这⾥要定义,什么是典型⽤户应⽤场景
5 benchmark测试(基线测试),应该不是基准性能测试:与竞争产品的benchmarking,产品演变对⽐测试 等。
性能测试
普遍的apk性能测试,主要是以下七类
1、响应
2、内存
3、cpu
4、FPS (app使用的流畅度)
5、GPU过度渲染
6、耗电
7、耗流
adb命令
开发者权限打开
打开设置
搜索关于⼿机
在关于⼿机中点击7次
系统管理⾥⾯看到开发者选项
开启开发者选项和USB调试

adb命令
命令汇总
adb,即 Android Debug Bridge,它是 Android 开发/测试⼈员的强⼤⼯具。它是⼀种可以⽤来操作⼿机设备或模拟器的命令⾏⼯具。它存在于 sdk/platform-tools ⽬录下。虽然现在 Android Studio 已经将⼤部分 adb 命令以图形化的形式实现了。adb的命令汇总如下
安装:adb install [APK路径]:

卸载: adb install -r [APK路径]:
adb uninstall [应⽤包名]:

查看日志: 场景:假设测试的app出现了闪退以及崩溃还有卡死,那么这个时候需要把错误的日志给开发
adb logcat
adb logcat | finstr package(包名) # 查看指定应用的日志

当程序出现崩溃时,怎么跟开发去反馈问题
adb logcar | findstr 指定包名,过滤查看日志信息,把错误截图给开发
adb shell wm size # 查看屏幕分辨率

adb shell pm list packages # 显示设备里面所有应用的包名
adb shell service list # 显示当前运行的系统服务
adb pull [android端文件名] [PC本地路径]
adb push [PC端文件名] [android 端路径]


获取程序包名
adb shell am monitor
控制台输入命令后手机打开所要获取的程序,就会出现程序包名

adb shell dumpsys window | findstr mCurrentFocus

查看所有包名
adb shell
pm list packages


adb shell cat /proc/meminfo # 显示设备的内存使用情况
获取程序pid
adb shell 进入到手机系统 logcat ps | grep com.sina.weibo包名) 在手机系统里查看

adb shell ps | findstr pakcage 直接执行

adb shell top 获取全部信息

常用错误日志信息
空指针:nullpointException 数组越界:ArrayIndexoutof boundsException 多次启动线程:illegalThreadstateException 数字格式化问题 :java.lang.NumberFormatException 内存溢出:java.lang.OutOfMemoryError Crash > AndroidRuntime > Exception>Error 的顺序逐个搜索。
crash崩溃
crash,即崩溃,anr是crash的⼀种。在程序中可能会出现你未捕获到的异常,这就造成了崩溃。
Monkey应用
monkey启动
monkey启动方式相对而言是非常简单的,手机连接到电脑上,就可以开始启动操作。启动的命令是: adb shell monkey
查询monkey的pid,获取应用程序的pid
adb shell ps | grep monkey
adb shell kill pid
更多命令
adb shell logcat -v time >log.txt
会在当前目录下生成log.txt文件,里面会不断更新日志信息

获取内存信息
adb shell dumpsys meminfo 进程ID

获取cpu消耗信息
adb shell top -n 1 | findstr 进程ID

获取电量信息
adb shell dumpsys battery

获取GPU信息
获取流量信息
adb shell cat/proc/uid-stat/<uid>/tcp_rcv
adb shell cat /proc/pid/net/dev

怎么获取uid:
adb shell ps | grep <被测试程序包名>--》获取进程ID

adb shell cat /proc/&pid/status
浙公网安备 33010602011771号