需要明白-4方面:
应用架构、项目环境,
基于敏捷而开发的测试流程
APP测试要点:
GT工具的使用:进行性能测试
应用架构:
用户->客户端应用->web server ->数据库访问
app和web使用的后端服务是完全相同的,前后端都是http协议进行交互(有部分app是socket交互)。
不同处:app与后台通过json交互,web通过html。
环境
APP后台环境:开发环境、测试环境、预发布环境、生产环境。
预发布环境:链接生产环境的数据库,用生产环境的数据测试。
预发布环境发布到生产环境上,是灰度发布。
APP应用发布-前端,
安卓:APK测试包:XX.apk
IOS:IPA测试包:XX.ipa
上述包发给测试人员,但是有弊端:测试人员会更换N个包。
应用内测分发平台 :
方便测试程序包的安装和管理,可以将一些包免费的应用内测分发平台,将应用测试包上传到这些平台上,可以生产对应的二维码,直接扫描进行应用安装(选择最新的包)。
蒲公英、fir.im.
应用线上发布平台:
产品完全测试后,要在线上进行发布,普通用户可以下载使用,
安卓应用:豌豆荚、应用宝、360手机助手、各类手机品牌商城等
IOS应用:只要是APP store、iTools。
线上发布过程:
提交app报告到平台审核,给每个APP包分配平台号(渠道号),需要将平台号(渠道号)打包到对应的app包(该包需要再次测试)、正式提交发布。
app测试要点:
大类型
功能测试
兼容性测试
安装、卸载、升级测试
交叉事件测试:
PUSH消息测试
性能测试
用户体验测试
兼容性测试
安装测试
正常:
1、在不同的操作系统上安装
2、从不同的安装途径上安装(app商城、手机助手、直接下载apk包或者ipa包)
3、不同的安装路径(安装后手机、安装到sd卡)
异常:
1、安装过程中如果遇到异常(关机、断网),恢复后可以继续安装
2、安装过程中内存不足,有提示:请清除空间,清除内存后可继续安装
3、安装过程中取消后继续安装
4、正在运行中安装:覆盖安装,应该是:退出正在运行的app,然后覆盖安装。
5、低版本覆盖高版本:需要有提示:有更高版本、不能安装
6、卸载后安装
卸载测试
1、正常卸载(app手动卸载、工具卸载-手机助手)
2、运行时卸载-工具卸载,
3、取消卸载,正在卸载中,取消后,应该还是能正常使用
4、卸载异常:关机
5、卸载后无数据残留:文件系统中没有该软件的数据:配置文件、个人文件根据个人卸载时选择保留还是卸载
升级测试
1、从临近版本升级
2、跨版本升级:v1.0->v1.3
3、不同渠道升级:(应用商城、手机助手)
4、升级是否有提醒:可不提醒、可提示升级、强制升级(有严重bug修复时)
5、应用内升级时非wifi提醒
注意:升级后要观察升级前的数据正常(升级时如果数据结构没有处理好会导致数据发生混乱)
交叉事件测试或者叫干扰测试
指:在app运行中,其他事件或则操作对当前app可能产生干扰的事件,
例如:app运行中或者在后台 运行中,有来电、或者下载文件。
手段:模拟用户场景、发散测试。
关注点:
1、app运行中来电话:必须出现接听电话,电话结束后,会出现刚才的app运行界面
2、app运行中接收信息:给提示信息,app正常
3、app运行中查看应用推送信息
4、app运行中接上、断开蓝牙设备
5、app运行中接受文件弹窗,点拒绝接受、app仍然能运行
6、app运行中旋转屏幕
7、app运行中切换网络:4g,wifi-》4g,图片清晰度下降(),高清-〉一般
8、app运行中使用相机、计算机等手机自带应用
9、app运行中电量告警、插拔充电器。
PUSH消息测试
推送消息背景:
产品角度:功能需要
运营角色:活动需要
原理:
pull:app主动向server询问是否有最新消息,是多次短连接,server有消息就会发给app。
push:app被动接受server的消息,长连接。
两者对比:push更好、节约资源(cpu和电、流量),pull更加消耗资源。
push推送原理:server ->app ->用户。
push推送方式
1、操作系统级别的推送方式:操作系统自建的server(服务器)
应用的后台服务->消息推送server(apns)->手机->应用app,
2、调用第三方的push服务器
手机厂商类:小米推送、华为推送
第三方平台类:友盟推送、极光推送、云巴(基于mqtt)
bat大厂的平台推送:阿里云移动推送、百度信鸽推送、百度云推送,
3、自建push服务器(安全、稳定、高效、成本高)
push推送消息服务器和手机设置
主动推送、被动推送,
app服务器设置:push针对不同的全体:所有用户、部分用户(例如年消费额到2w)、特定用户,
手机端设置:是否接受通知、位置等。
push推送消息-测试关注点
服务端:
1、push消息是否按照既有规则发送了:例如消费额到一定额度,才能发送优惠券消息
2、针对特定用户时,检查收到消息的用户是否和push规则相同
手机端:
3、设置不接收时,是否如预期
4、设置接受时,位置是否正确
5、收到消息,是否能正常打开
app不同状态
6、app在前台运行中,push消息如何提示:
7、app在后台运营中,push消息如何提示
8、app离线时,是否能收到push消息。在消息的生存周期时可以收到,
app性能测试
关注:cpu、内存、电量、流量、启动速度、流畅度等。
性能测试工具-GT
简介:随身调,是腾讯自主研发的app随身调试平台,是直接运行在手机上的集成调试环境。
1、基础性能测试工作:手机整机或者手机上任意1个app的cpu、内存、电量、流量、启动速度、流畅度等基础性能指标的实时展示,历史数据采集及excel格式存储、曲线绘制等。
2、日志查看:app的logcat日志查看,便于app现场定位异常及查看crash。
3、网络数据包抓包:转包后,到pc端wireshark打开分析包
GT安装 方式有2种:
1、单独安装:直接下载apk,ios不可以
2、集成SDK:安卓和ios都可以,打包到被测app代码中。
性能工具:GT的使用:
手机必须有root权限
1、进入aut界面,选择指标
2、选择监控的参数:参数拖到对应的监控区域就好
3、配置日志:logcat设置on,同时打开日志、可以保证同步抓取日志
4、打开开始监控按钮后,打开被测的app应用后,悬浮筐就会出现在右上角
5、查看检测结果
6、到运行日志中查看日志
CPU
GT工具提供2个cpu的监控指标:cpu和jiffies,前者是经常使用的指标:
cpu:计算公式
cpu有用户态、系统态和空闲态:
用户态:cpu处于应用程序时执行的时间,
系统态:系统内核执行的时间,例如:控制电池消耗、屏幕、读写,
空闲态:空闲进程idle执行的时间,
cpu使用率=cpu执行非系统空闲进程时间/cpu总的执行时间=(用户态+系统态)/cpu总时间。
jiffies:表示自开机以来,应用程序消耗cpu时间片的总数。
cpu问题出现时的现象-出现时尽快定位下:
1、cpu使用率长时间处于90%以上时,
2、手机发烫、耗电量增加:cpu越高、耗电量越大、手机就会发烫,
3、手机卡断:反应变慢,引发anr:application not responding。
cpu-测试步骤:
梳理app业务的主要操作流程,
测试方法:
1、打开gt工具,配置cpu指标及告警阈值:编辑时
2、进入被测试app,操作主要业务,观察cpu指标:
看cpu是否飙升到90%,cpu是否持续在90%以上
3、进入gt停止,查看cpu结果:操作结束后,点红色按钮停止,查看结果,先看曲线图
4、收集cpu详细数据
cpu-监控数据保存到手机文件夹下
gt界面,参数页-右上角点文件夹符号,设置保存到手机的路径。
如何将文件保存到电脑上呢:
文件选中后,回退到根目录,切换到mnt/share文件夹,选择other文件夹,左下角有个3个点,点开后:黏贴此选项,
就拷贝到共享文件夹中了,然后再点右边的竖列里的电脑标示:选择“打开电脑文件夹”
,就拷贝到电脑上了。
内存
gt工具提供2个指标:pss、private dirty
private dirty:私有内存:是应用独占空间,其他应用不可使用的内存,销毁时可以回收的内存,共享内存是销毁时无法回收的内存。
pss:实际使用内存=私有内存+共享内存。需要按照比例计算实际内存。通常关注该内存。
常见内存问题及影响
内存泄漏 memory leak:内存申请内存后,程序无法释放内存空间,一次内存泄漏影响不大,但是泄漏内存堆积后果严重,内存早晚会被泄漏光。
内存溢出:out of memory,是指程序申请内存时,没有足够的空间供它使用。出现 out of memory,memory leak长时间会导致内存溢出。
内存问题的表现:
1、程序的pss(实际使用内存)持续增长
2、程序闪退,大概率内存溢出
app内存测试步骤
梳理app业务的主要操作流程,
测试方法:
1、打开gt工具,配置内存指标及告警阈值:编辑时,mem是整机的内存,pss、private memory是程序 自己的。
2、进入被测试app,操作主要业务,观察内存指标:
pss是否持续增长,是否程序闪退,
3、进入gt停止,查看内存结果:操作结束后,点红色按钮停止,查看结果,先看曲线图
4、收集内存详细数据,并分析。
流畅度测试
fps=frame per second:每秒的帧率。
流畅度
人脑感觉是连续的,每秒10-12帧
要求24帧/s
最高60帧/s、最低10-12帧
测试步骤
主要操作:上下滑动各5min,查看fps值。
该类指标操作和cpu、mem不同,如果是静止界面,fps本身就低,如果是动态界面,fps才会比较大。
测试方法:
1、打开gt工具,配置流畅度指标:参数列表中配置
2、进入被测试app,操作主要业务,观察流畅度指标:
3、进入gt停止,查看运行结果:操作结束后,点红色按钮停止,查看结果,先看曲线图:
只看滑动其间的值,滑动前、后的值不对。
4、收集详细数据,并分析。只计算 滑动期间的平均值。(24-60)帧/s都是正确的。
流量测试
流量:数据报文总大小(字节数)就是流量,数据报文包含手机上下行的报文。
常用流量测试方法:
统计测试法:数据统计,如果超过,用抓包测试
抓包测试法:app和server之间用tcpdump或者fiddler抓包,前者抓包必须用wireshark分析。
测试步骤
操作业务:动态画面
1、打开gt工具,配置net指标:参数列表中配置,可以拖动pnet和net一起看,pnet可以放到浮窗。
在“插件”中配置抓包,抓包命令可使用默认的:-p -s 0 -vv -w,可以看到抓包的位置
2、进入被测试app,操作主要业务,观察net指标:
3、进入gt停止,查看运行结果:操作结束后,点红色按钮停止,查看结果,先看曲线图:
r:receive 接受包
t:发包
4、收集详细数据,并分析。
流量优化的方法-6种
其实就是优化响应报文的方法:
1、数据压缩:打压缩包
2、不同数据格式的采用:例如图片:高清图片、普通像素图片,对手机来说效果差不多,用小文件代替大文件。
3、控制访问的频次:实时获取or降低频次,要权衡。
4、只获取必要的数据:其他不必要的数据不返回
5、缓存机制:
6、针对不同的网络类型设置不同的访问策略。
wifi:高清图
4g:缩略图。
电量
指标:电流、电压、电量和温度
是测试移动设备电量消耗快慢的一种方法,一般用平均电流(mAh:平均电流越小、说明电池使用时间越长)衡量电量消耗速度,
常见的耗电场景
定位:尤其是打开gps
网络传输:尤其是非wifi环境、4g
屏幕亮度:所以要确认测试屏幕
cpu频率
内存调度频率
wake_locker时间和次数 :锁屏和解锁
测试步骤
业务场景:
1、屏幕亮度调到最大
2、使用app,打开gps,拍照、使用wifi或者非wifi操作业务
3、使用过程中,几min就锁屏解锁下
测试方法:
1、打开gt工具-进入插件tab,选择“耗电数据采集”,采
2、设置数据:采集间隔设置100ms,屏幕亮度最大。数据指标。
3、进入被测试app,操作主要业务,观察指标:
4、进入gt停止,查看运行结果:操作结束后,点红色按钮停止,查看结果,先看曲线图:
5、收集详细数据,并分析。
电量是否有问题,需要有基准数据做对比的:
参照物:
与基准数据对比:(数据来自于产品经理-写需求写出来、或者以往数据积累-不能超过历史数据)
横向对比:拉上竞品一起分析(目前经常用该方法):
同样的网络、手机,相似的场景下,对比我们的产品和竞品之间的耗电量差距,给出优化意见
例如社交类:qq、微信
启动速度测试
冷启动:被后台杀死、重新启动的启动方式,
热启动:后台没被杀死、还在运行中、重新启动的启动方式,耗时
测试方法:
adb shell am start -W -n 包名/Activity名,查看app进入到该包到该Activity界面的启动耗时时间,
包名/Activity名的获取后续app自动化部分会讲:
关键指标3个:
ThisTime:界面启动的时间
TotalTime:应用程序启动的时间、>=ThisTime,一般以TotalTime作为最终的测试结果。
WaitTime:=TotalTime+系统资源的启动时间,是最大。
通常测试10组数据,然后计算平均值。
测试后数据有效性的判断-数据对比:
参照物:
与基准数据对比:(数据来自于产品经理-写需求写出来、或者以往数据积累-不能超过历史数据)
横向对比:拉上竞品一起分析(目前经常用该方法):
同样的网络、手机,相似的场景下,对比我们的产品和竞品之间的耗电量差距,给出优化意见
例如社交类:qq、微信
用户体验测试
从普通消费者角度,主观使用感知产品或者服务的舒适、有用、易用、友好亲切度程度,进而提升用户体验。
所以提单时:一定要提的具体一些 、最好有依据,提单为建议、优先级放低。
测试关注点:
1、UI界面测试:
测试依据:UI交互设计图,
检查:每个界面设计菜单、对话框、窗口、风格、布局等。
注意点:图片、按钮(选中效果)、菜单、对话框、字体大小颜色、居中对齐。
2、易用性测试:易学、易操作、易操作,符合用户正常操作习惯
是否有空数据界面引导客户操作,引导客户操作:新手指导。
菜单隐藏太深:需要点好几次才能进入界面,
交互流程分支是否过多
完成业务操作的步骤是否过多
界面中按钮可点击的范围是否适中(在按钮附近的框点都可以生效)
是否定义Back的逻辑。涉及软硬件交互时,Back键应该具体定义。
3、横竖屏测试:
横竖屏切换是否正常(针对每个界面都要做横竖屏测试)
特别关注app中有表格,因为横竖屏展示的宽度不同。
4、关注手机应用上其他辅助功能:
可关注:“放大字体”、“反色”、“语音转换”、多点触碰等功能。
稳定性测试:
通过长时间对应用进行无序操作,检查应用程序是否出现异常(系统crash、ard)
稳定性测试工具:Monkey
命令行工具、安卓官方提供,
测试人员可以通过Monkey工具模拟用户的触碰、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现app的压力和稳定性测试。(具体monkey的使用方法会在后续的自动化教程中体现)。
研发可结合Monkey和系统的日志,修复测试发现的问题。
稳定性测试的时机:
一般在测试后期-系统稳定、几乎无bug后,才能进行稳定性测试。