APP测试
一、APP测试简介
1.1介绍
1.1.1APP与Web的区别
系统架构:APP是C/S结构,web是B/S结构
C/S( Client/Server ) :即客户端/服务器,需要下载安装客户端。
B/S( Browser/Server ):即浏览器/服务器,基于浏览器访问。
1.1.2APP测试范围

1.2APP发布
将开发完成的移动应用程序通过特定的渠道和流程,向公众发布,使得用户可以下载、安装并使用应用程序。
分类:
l 内部发布渠道
l 线上发布渠道
1.2.1内部发布
l 在实际测试工作中,为了方便测试程序包的安装和管理,可以使用一些应用内测分发平台。
如:蒲公英、Testlink等
l 步骤:
1. 开发将应用测试包上传到这些平台上
2. 平台可以生成对应的二维码
3. 测试直接扫码进行应用安装

1.2.2线上发布
l 产品测试完成后,将APP发布到应用各种平台上。
安卓应用:豌豆荚、应用宝、360手机助手、各类手机品牌商城等;
IOS应用: 主要有 App store、iTools
l 步骤:
1. 开发者账号注册,申请在发布平台(各种应用商店)上架
2. 针对不同的发布平台,在软件包中加入对应的平台ID(渠道ID),上传到发布平台
3. 平台审核通过后,用户即可在应用商店中下载

1.2.3发布策略
项目发布时采用的一种策略,先发布少数(1-3)服务器,待运行稳定后再发布到所有服务器。

| 开发环境->测试环境->(策略:灰度发布)->生产环境
l 灰度发布:部分用户可用,若有异常则回滚
l 线上发布:所有用户可用
二、APP功能测试
2.1功能测试介绍
使用技术手段,验证程序功能符合应用需求。
l 对象:核心业务、单功能
l 流程
l 方法
2.2案例
登录案例

测试点提取:

2.3练习


三、APP专项测试介绍
3.1专项测试介绍
3.1.1什么是专项测试
说明:在不同的移动设备上能持久、稳定的运行App程序。

3.1.2专项测试目的
l 保障主流移动设备能正常使用App应用
l 不同的网络环境APP应用正常使用
l 不同APP版本正常使用
3.1.3专项测试内容

3.2能搭建app项目测试环境
3.2.1环境
App应用运行所依赖的软硬件
l 依赖
1. mumu模拟器(移动设备)
2. App安装包

下载地址:
https://pan.baidu.com/s/1dIq7UnfyqOQRdl7FuDmJfQ?pwd=av2n
3.2.2mumu模拟器(移动设备)
说明:由网易编写一款安卓模拟器(window/mac)
安装:双击下一步安装完成即可。


3.2.3 App安装包
通过apk安装包进行安装或通过应用平台进行安装。

3.3能对Tpshop(安装、卸载、升级)设计测试点
3.3.1安装测试
l 正常场景:
Ø 在不同的操作系统版本上安装
Ø 从不同的安装渠道安装(APP商城、手机助手、直接下载apk或者ipa文件安装)
Ø 不同的安装路径(安装到手机上、安装到SD卡上)
Ø 卸载后安装
Ø 正在运行时覆盖安装
l 异常场景:
Ø 安装时出现异常(关机、断网),恢复后能否继续安装
Ø 安装时存储空间不足
Ø 安装时手动取消后再次安装
Ø 低版本覆盖安装高版本

3.3.2卸载、升级测试
卸载关注点:
升级测试关注点:


3.3.3总结
1. 安装:系统版本+渠道+路径+异常后安装
2. 卸载:正常卸载+运行时卸载+取消后卸载
3. 升级:临近版本+跨版本+不同渠道
3.4能对tpshop(兼容性)设计测试点
3.4.1兼容性测试
兼容性:程序能在不同的设备上运行正常。

3.4.2应用兼容性测试关注点


3.4.3测试方法
测试方式:
-
- 方式1:使用公司已有的真机进行兼容性测试。
- 方式2:使用第三方的兼容性平台进行测试。
如:线上云测平台testin(https://www.testin.cn/)

3.4.4总结
兼容性:品牌型号+分辨率+网络+软件+硬件
3.5能对tpshop(push消息推送设计测试点)
3.5.1Push消息介绍
Push消息是APP推送的各种通知。

3.5.2Push消息推送方式
Pull方式消耗客户端和服务器资源
Push方式节省客户端和服务器资源

3.5.3 Push消息推送流程

3.5.4Push消息测试关注点


3.5.5总结
1. Push消息:app接收的各种通知
2. 推送服务器:操作系统级别+自己搭建+三方推送
3. 关注点:内容+业务规则+人群+显示/关闭通知+位置
3.6能对tpshop(交叉测试、用户体验)设计测试点
3.6.1交叉测试
又叫(冲突、干扰)测试,是指一个功能正在执行过程中,另外一个事件或操作对该过程进行干扰的测试。
如:在App前台/后台运行同时接听来电或者下载文件等。
交叉事件测试关注点:

3.6.2用户体验测试
以主观的角度去感知产品或服务的舒适、易用、友好亲切程度。


3.6.3总结
1. 交叉测试:app应用使用过程中被其他操作干扰影响
2. 用户体验:UI界面+易用(导航、菜单、提示)+横竖屏
3.7APP性能测试
APP性能测试
测试app使用期间占用硬件资源(cpu、内存、流量、电量)使用情况。
分类
① App程序运行时占用手机硬件资源情况
-
- App稳定性
3.7.1如何测试App(资源)性能?
说明:使用工具或命令进行测试
l 工具
SoloPi是一个无线的 Android 自动化工具,具备录制回放、性能测试等功能。
l 功能
性能测试:能够对CPU、内存与网络环境进行限制,复现应用在性能较差、网络环境不佳场景下的表现。
录制回放:能够将用户的操作记录下来,支持在各个设备上进行回放。
一机多控:操作一台主机设备来控制多台从机设备,进行重复冗杂的兼容性测试,能够极大提升兼容性测试的效率。
l 下载: https://www.pgyer.com/solopi

3.7.2SoloPi使用(选择测试项)
(1)打开SoloPi,选择性能测试

(2)选择被测应用,勾选监控指标,勾选后悬浮窗会出现在手机屏幕上



(3)点击开始监控,随后打开被测APP应用,开始测试

(4)查看数据采集结果



3.7.2APP性能测试关注点

3.8内存
3.8.1内存监控指标
每个程序运行时都需要将代码和数据放入内存中,内存不足则程序无法正常运行。
提示:SoloPi工具提供了两个内存的监控指标:Private dirty 和 PSS。
Private dirty(私有内存):
• 进程独占内存,也就是进程销毁时可以回收的内存容量。
PSS(实际使用内存):
• 将跨进程共享页也加入进来, 进行按比例计算PSS。这样能够比较准确的表示进程占用的实际物理内存。

3.8.2内存问题的现象

2.8.3案例:性能内存测试
l 需求:浏览京东首页平均内存消耗情况。
l 步骤:
(1)打开SoloPi工具,配置内存监控
(2)进入APP,操作上述业务,观察运行时的内存指标
(3)查看内存运行结果
l 检查程序实际使用的内存PSS值
进行了首页刷新、查看详情和登录操作





3.8.4总结
1. 性能:
① 内存 + cpu + 流量 + 电量
② 启动速度 + 流畅度 + 稳定性
2. 内存关注:
① 实际使用内存( PSS )
② 私有内存
3. 内存常见问题:
① 内存泄漏:申请内存无释放内存。
② 内存溢出:申请内存时,无内存可用。
3.9CPU
3.9.1CPU监控指标
SoloPi工具提供了两个CPU的监控指标:全局占用CPU和应用进程CPU。
l 全局占用CPU:整机的CPU使用水平,即当前手机的CPU整体使用率。
• 在 Linux 系统下,CPU 利用率分为用户态、系统态和空闲态
• 用户态:表示 CPU 处于应用程序执行的时间
• 系统态:表示系统内核执行的时间
• 空闲态:表示空闲系统进程执行的时间。
• CPU 使用率 = CPU 执行非系统空闲进程时间 / CPU 总的执行时间
l 应用进程CPU:表示自开机以来,应用程序消耗的CPU时间的总数。
3.9.2CPU消耗引起的现象
3.9.3案例性能CPU测试
需求:测试滑动首页CPU使用率
步骤:
(1)打开SoloPi工具,勾选CPU监控指标
(2)进入京东,操作上述业务,观察运行时的CPU指标
(3)查看CPU运行结果
l 检查APP运行时CPU是否长时间处于90%以上


3.9.4总结
1. 关注:长时间90%以上
2. cpu问题现象:手机发热 + 耗电量增加 + 反应变慢 + 无响应
3.10流量
3.10.1流量介绍
操作APP会与服务器交换数据,流量就是指这些交互数据的总大小。

SoloPi工具提供了流量监控指标:网络

3.10.2案例 性能流量测试
需求:打开tpshop首页,上下滑动动态20秒,获取消耗的网络流量。
步骤:
(1)打开SoloPi工具,勾选流量监控指标网络
(2)进入APP,操作上述业务
(3)查看流量统计结果
提示:在模拟器中无法统计电脑流量使用情况,看进程使用流量即可

看进程




3.10.3总结
流量优化策略:
3.11电量
APP应用使用时对电池电量的平均消耗
3.11.1常见的耗电量大的场景:
3.11.2电量的监控方法
l 系统自带接口
最新的IOS和Android系统内置的Setting里可以查看各个APP的电池消耗
该方案不能检测固定某一时间段内的电池精准消耗。
l 硬件检测
通过硬件可以精准地获得应用的电量消耗(如: PowerMonitor 硬件设备)
该方案测试时需要拆机,成本太高比较麻烦。
l 软件工具检测
通过第三方的软件来获取应用的电量消耗(如: AccuBattery、360省电王、SoloPi等)提示:SoloPi工具提供了电量的监控指 标:电池。
该方案取决于第三方软件的计算准确性。
l 结果分析
与基准数据对比(基准数据来自于产品经理,或者以往数据积累)
横向对比(竞品)(目前多数采用这种方法)
3.11.3案例 性能电量测试
l 需求:打开京东,进入首页,上下滑动动态2分钟,获取消耗的电量。
l 步骤:
(1)打开SoloPi工具,勾选电量监控指标:电池
(2)进入APP,操作上述业务,观察运行时的CPU指标
(3)保存电量详细数据后,可以查看电量详细的数据统计。
提示:模拟器没有电池,无法获取电量数据。

3.11.4总结
1. 耗电量大场景:
定位
网络传输
屏幕亮度
wake_locker(锁屏-解锁)
2. 分析结果:
• 与基准数据对比(基准数据来自于产品经理,或者以往数据积累)
• 横向对比(竞品)
3.12流畅度
3.12.1流畅度介绍
动画播放或图片切换的流畅性。
动画其实是由一张张画出来的图片连贯执行产生的效果,当一张张独立的图片切换速度足够快的时候,会欺骗我们的眼睛,以为这是连续的动作。反之,当图片切换不够快时就会被人眼看穿,反馈给用户的就是卡顿现象。
3.12.2流畅度的监控指标
SoloPi工具提供了流畅度的监控指标:帧率FPS
流畅度问题产生的影响:

3.12.3案例性能流畅度测试案例
需求:打开京东,进入首页,上下滑动动态2分钟,记录FPS值。
步骤:
(1)打开SoloPi工具,勾选帧率
(2)进入APP,操作上述业务,观察运行时的流畅度指标
(3)查看流畅度运行结果


3.12.4总结
流畅度:动画播放或图片切换的流畅性
3.13启动速度
3.13.1启动速度介绍
APP启动速度:从启动app到主页面加载完成的速度。
APP启动分类:冷启动、热启动
Solopi指标:启动耗时计算
3.13.2案例 性能启动时间测试
需求:分别获取tpshop冷启动和热启动时间
3.13.3总结
启动分类:热启动+冷启动
冷启动:启动app进程,这种启动方式叫做冷启动。
热启动:从后台切换到前台
3.14稳定性测试
3.14.1Android-sdk环境搭建
Android-sdk环境说明
android开发、调试工具包
作用:android应用稳定性测试、调试工具、日志记录等
下载:https://pan.baidu.com/s/15cQCOazgrmGUYMDiRKQxyA?pwd=9gbj
l 安装:
1、解压到指定目录 如( D:\\Android\\sdk )
2、将目录添加到path中
① 新建环境变量:ANDROID_HOME=D:\\Android\\sdk (这里为安装目录)
② 添加path路径,在Path中添加:%ANDROID_HOME%\\tools 、%ANDROID_HOME%\\platform-tools
l 验证:win:打开开始菜单->运行->输入cmd->adb version

3.14.2什么是稳定性

app程序能持久良好的运行。
稳定性测试:在app应用中随意操作,挖掘有可能出现的异常。
3.14.3Monkey介绍
monkey就是猴子, monkey测试就像一只猴子在玩手机(乱抓、乱点)。
作用:模拟用户随机(触摸屏幕、滑动、 按键)等操作来对程序进行稳定性测试, 检测程序异常情况。

3.14.4稳定性测试步骤
1、执行命令,执行结果写入日志

2、检查日志异常

3.14.5Monkey命令

语法:adb shell monkey -p 包名 –v 次数>tpshop.log
参数:
-p:指定包名
-v:log详细程度(最高支持’-v -v -v’最详细)
次数:要执行随机操作的次数
>:重定向(保存)日志

3.14.6检查日志
检查日志中是否有异常关键字,提取相关日志发给开发。
常见关键字:
• 无响应: 在日志中搜索 “ANR”、timeout
• 崩溃:在日志中搜索 “NullPointerException”或 Exception
• 闪退:memory out 、memory Leak
• 错误:error

3.15.6案例 京东稳定性测试
需求:针对京东商城进行稳定性测试
分析:
- 获取app包名
先用adb connect 127.0.0.1:7555连上模拟器(MuMU模拟器的端口号为7555)

输入adb devices能看到设备

输入adb shell成功进入了安卓系统shell

先在模拟器里打开要测试的APP
输入dumpsys window | grep mCurrentFocus即可获取当前前台运行的App包名

包名:com.jingdong.app.mall
② 执行monkey命令: adb shell monkey -p 包名 –v 次数 >c:\\日志.log
③ 检查日志异常关键字: [ANR,timeout,Exception,out,leak,error]
-
- 将异常日志发给开发

异常查找:

……
3.15.7扩展


可以看到日志中0是100%

3.15.8小结
1. 常见app不稳定的现象
崩溃、闪退、无响应、卡顿
2. 稳定性测试
在app应用中随意操作,挖掘有可能出现的异常。
3. 稳定性怎么测?
① Android系统使用自带monkey工具
② 测试次数【工作中50W-80W次】
4. Monkey工具应用
① 执行Monkey命令:adb shell monkey -p 包名 -v 次数 > 日志.log
② 检查日志是否有异常,有异常将日志发给开发
[ANR,timeout,Exception,out,leak,error]





