冒烟测试:对核心功能的验证
- 作用:保证提测内容具备可测性
回归测试:对已修复bug\更新后对已测内容再次测试
- 作用:保证bug修复、确保新功能对旧功能没有影响
App测试范围
功能测试:业务测试,功能模块测试
性能测试:CPU、内存占用,启动速度,流量、电量消耗,流畅度,稳定性
专项测试:安装卸载升级,push消息推送,交叉事件测试,用户体验测试,兼容性测试
Web与App区别
App是C/S结构,Web浏览器是B/S结构
App发布方式
内部发布:蒲公英、Testlink等
线上发布:
- 安卓应用:豌豆荚、应用宝、360手机助手、应用市场等
- IOS应用:主要有App store、iTools
上线发布策略
- 开发环境—>测试环境—>(策略:灰度发布)—>生产环境
- 灰度发布:部分用户可用,若有异常则回滚
- 线上发布:所有用户可用
App专项测试
说明:
在不同的移动设备上能持久、稳定的运行App程序
App项目测试环境搭建
环境;App应用运行所依赖的软硬件
依赖:
- mumu模拟器(移动设备)
- App安装包:通过apk安装包进行安装或通过应用平台进行安装
内容:
安装测试
正常场景:
- 在不同的操作系统版本上安装
- 从不同的安装渠道安装
- 不同的安装路径(手机、SD卡)
- 卸载后安装
- 正在运行时覆盖安装
异常场景:
- 安装时出现异常(关机、断网),恢复后能否继续安装
- 安装时存储空间不足
- 安装时手动取消后再次安装
- 低版本覆盖安装高版本
卸载、升级测试
卸载关注点:
- 正常卸载(App手动卸载、工具卸载)
- 运行时卸载
- 取消卸载
- 卸载异常中断后卸载
- 卸载后无数据残留
升级测试关注点:
- 从临近版本升级
- 跨版本升级
- 不同渠道升级(应用商场、手机助手)
- 升级提醒成功(可不提醒、可以提示升级、强制升级)
- 应用内升级时非WIFI提醒
注意事项:升级后要观察升级前的数据是否正常(当数据结构改变而开发没有处理好时很容易出现升级前的数据混乱)
兼容性测试
**兼容性:**程序能在不同的设备上运行正常
- 品牌型号(品牌、系统版本、分辨率)
- 网络
- 软件兼容
- 硬件兼容
应用兼容性测试关注点
- 与手机硬件兼容:home键、电源键、音量调节
- 与外部硬件设备兼容:耳机、蓝牙、数据线
- 与操作系统软件兼容:wlan设置、系统时间调节、LBS定位等
- 与其他APP兼容:后台在播放音乐时,进入动态页面点击动态视频的播放,系统如何处理
测试方法:
方式1:使用公司已有的真机进行兼容性测试
**方式2:**使用第三方平台的兼容性平台进行测试(如:线上云测平台testin(http://www.testin.cn/))
push消息测试
**介绍:**push消息是APP推送的各种通知,如点赞、评论、关注
Push消息推送方式
Pull(拉)客户端主动获取:客户端固定时间主动向服务器获取消息
Push(推)客户端被动接受:当服务器有更新消息时,主动发送到客户端
Pull方式消耗客户端和服务器资源
Push方式节省客户端和服务器资源
提示:在APP项目中。基于手机电量与流量的考虑,使用的都是push方式进行消息推送,因此又叫Push消息
Push消息推送的设置
APP服务器设置:
- 推送内容
- 推送时机
- 推送频率
- 推送人群(全部用户/部分用户)
手机端设置:
- 是否接收通知
- 提醒位置等
Push消息测试关注点
App服务器设置测试点:
- Push消息是否按指定业务规则发送
- 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符等
手机端设置测试点:
- 设置不接收推送消息时,用户是否会收到Push消息
- 设置push消息显示的位置,是否与配置一致
- 收到push消息,是否能正常打开跳转等
其他测试:
-
APP在前台使用时,收到push消息如何提示
-
APP在后台运行时,收到push消息如何提示
-
APP离线,是否能收到Push消息
交叉测试
又叫(冲突、干扰)测试,是指一个功能正在执行过程中,另外一个事件或操作对该过程进行干扰的测试
如;在APP前台/后台同时接听来电或者下载文件等
交叉事件测试关注点:
- APP运行时接打电话
- APP运行时收发信息
- APP运行时查看应用推送
- APP运行时接上蓝牙设备
- APP运行时接收文件弹窗提醒
- APP运行时旋转屏幕
- APP运行时切换网络(4G、Wi-Fi)
- APP运行时使用相机、计算器等手机自带应用
- APP运行时电量告警、插拔充电器
用户体验测试
以主观的角度去感知产品或服务的舒适、易用、友好亲切程度
UI界面测试
对照UI交互设计文档,检查每个界面设计菜单、对话框、窗口、风格、布局等
易用性测试
- 是否有空数据界面设计,引导用户去执行操作
- 菜单层次是否太深(3级内)
- 完成业务操作的步骤是否过多(5步内)
- 界面中按钮可点击范围是否适中
横竖屏测试
横竖屏的切换是否正常(特别要关注APP中有表格,因为横竖屏的显示宽度不一样)
关注手机应用上的其他辅助功能
可以重点关注”放大字体“、”反色“、”语音转换“、多点触碰等功能
APP性能测试
性能:
①内存+CPU+流量+电量
②启动速度+流畅度+稳定性
测试app使用期间占用硬件资源(cpu、内存、流量、电量)使用情况
**分类:**①APP程序运行时占用手机硬件资源情况
②APP稳定性
如何测试APP(资源)性能?
**说明:**使用工具或命令进行测试
工具:
①Android:工具(solopi、GT)+命令(abd)
②IOS:苹果开发工具xcode
SoloPi是一个无线的Android自动化工具,具备录制回放、性能测试等功能
功能
- 性能测试:能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现
- 录制回放:能够将用户的操作记录下来,支持在各个设备上进行回放
- 一机多控:操作一台主机设备来控制多台从机设备,进行重复冗余的兼容性测试,能够极大提升兼容性测试的效率
**下载:**https://www.pgyer.com/solopi
SoloPi使用(选择测试项)
提示:SoloPi使用时,需要申请悬浮窗权限(adb权限、读写权限),根据弹窗提示进行授权
(1)打开SoloPi,选择性能测试
(2)选择被测应用,勾选监控指标,勾选后悬浮窗会出现在手机屏幕上
(3)点击开始监控,随后打开被测APP应用,开始测试
(4)查看数据采集结果
APP性能测试关注点
- APP使用时对CPU、内存的占用情况
- APP使用时是否流畅等
- APP使用时电量流量的消耗情况
- APP的启用时间是否过长
- APP是否能长时间稳定运行
内存监控指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行
**提示:**SoloPi工具提供了两个内存的监控指标:Private dirty和PSS
-
Private dirty(私有内存):
-
- 进程独占内存,也就是进程销毁时可以回收的内存容量
-
PSS(实际使用内存):
-
- 将跨进程共享页也加入进来,进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存
内存问题的现象
常见的现象:
- 内存泄漏:
-
- 内存泄露memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄漏堆积后果很严重,无论多少内存,迟早会被占光
- memory leak最终会导致内存溢出
- 内存泄露memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄漏堆积后果很严重,无论多少内存,迟早会被占光
- 内存溢出:
-
- 内存溢出out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory
内存问题产生的影响:
- 程序实际使用的内存PSS持续增长可能是内存泄漏
- 程序出现crash(崩溃)可能是内存溢出
CPU监控指标
SoloPi工具提供了两个CPU的监控指标:全局占用CPU和应用进程CPU
全局占用CPU:整机的CPU使用水平,即当前手机的CPU整体使用率
- 在Linux系统下,CPU利用率分为用户态、系统态和空闲态
- 用户态:表示CPU处于应用程序执行的时间
- 系统态:表示系统内核执行的时间
- 空闲态:表示空闲系统进程执行的时间
- CPU空闲率=CPU执行非系统空闲进程时间/CPU总的执行时间
应用进程CPU:表示自开机以来,应用程序消耗的CPU时间的总数
CPU消耗引起的现象
-
CPU使用长时间处于90%以上
-
手机发热、耗电量增加
-
响应变慢、引起ANR(Application Not Responding应用无响应)
流量监控指标
**流量:**操作APP会与服务器交换数据,流量就是指这些交互数据的总大小
上行消息:APP发送给服务器的数据
下行消息:APP接收的服务器的数据
SoloPi工具提供了流量监控指标:网络
**提示:**在模拟器中无法统计电脑流量使用情况,看进程使用流量即可
流量优化策略:
- 数据的压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
电量监控指标
**电量:**APP应用使用时对电池电量的平均消耗
常见的耗电量大的场景:定位、网络传输、屏幕亮度、wake_locker(锁屏—解锁)
电量的监控方法
系统自带接口
- 最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
- 该方案不能检测固定某一时间段内的电池精准消耗
硬件检测
- 通过硬件可以精准地获得应用的电量消耗(如:PowerMonitor硬件设备)
- 该方案测试时需要拆机,成本太高比较麻烦
软件工具检测
- 通过第三方的软件来获取应用的电量消耗(如:AccuBattery、360省电王、SoloPi等)
- 该方案取决于第三方软件的计算准确性
结果分析
- 与基准数据比对(基准数据来自于产品经理,或者以往数据积累)
- 横向对比(竞品)(目前多采用这种方法)
流畅度监控指标
**流畅度:**动画播放或图片切换的流畅性
SoloPi工具提供了流畅度的监控指标:帧率FPS
- 即Frames per second:GPU在一秒内绘制的帧数。(简单理解为一秒内呈现给用户的图片数)
- FPS值越高画面越流畅
流畅度问题产生的影响
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
- 想达到流畅的效果,至少需要每秒24帧
- 60帧每秒的流畅度是最佳的,我们的目标就是让程序的流畅度能接近60帧每秒
注意事项:
- 当页面多为静态时,FPS值很小是正常的
- 页面数据多为动态加载时,FPS值比较大(建议在24帧以上)
启动速度监控指标
**APP启动速度:**从启动app到主页面加载完成的速度
**APP启动分类:**冷启动、热启动
- **冷启动:**启动app进程,这种启动方式叫做冷启动
- **热启动:**将app从后台置于前台
SoloPi指标:启动耗时计算
Android–sdk环境说明
android开发、调试工具包
**作用:**android应用稳定性测试、调试工具、日志记录等
稳定性监控
**常见app不稳定的现象:**崩溃、闪退、无响应、卡顿
**稳定性:**app程序能持久良好的运行
**稳定性测试:**在app应用中随意操作,挖掘有可能出现的异常
Monkey
monkey测试就像一只猴子在玩手机(乱抓、乱点)
**作用:**模拟用户随机(触摸屏幕、滑动、按键)等操作来对程序进行稳定性测试,检测程序异常情况
提示:
- Monkey程序是Android系统中自带一款稳定性测试工具,由Java语言编写【无需单独安装】
- Android位置:/system/framework/monkey.jar
稳定性测试步骤
1、执行命令,执行结果写入日志
adb shell monkey -p 包名 -v 次数 > 日志.log
2、检查日志异常,有异常将日志发给开发
ANR,timeout,Exception,out,leak,error