移动APP测试
1.移动APP测试内容
APP测试是确保移动应用程序质量和稳定性的关键步骤。测试的内容涵盖多个方面,主要包括功能测试、性能测试、安全测试、兼容性测试等。
1.1 功能测试
基本功能测试: 确保应用的基本功能正常工作,例如登录、注册、数据输入、数据显示等。
业务逻辑测试: 针对具体业务逻辑进行测试,确保其正确性和一致性。
用户界面测试: 验证应用的用户界面设计、布局和交互是否符合预期。
用户体验测试: 评估用户在使用应用时的整体体验,包括流畅性、响应时间等。
1.2 兼容性测试
设备兼容性:根据市场占有率、发布时间等指标对主流、最新机型进行重点兼容
版本兼容性:服务器端需要兼容产品早期版本所需的 API 接口
屏幕方向兼容性:测试应用在横向和纵向屏幕方向切换时的表现,确保应用可以正确处理屏幕方向变化。确保应用在平板电脑和手机等不同设备上的屏幕方向兼容性。
屏幕分辨率兼容性:测试应用在不同屏幕分辨率下的显示效果,包括高分辨率屏幕和低分辨率屏幕。确保应用的UI在各种分辨率下都能正确适配和展示。
操作系统版本兼容性:测试应用在不同Android操作系统版本(如Android 5.0、6.0、7.0、8.0、9.0等)上的兼容性。确保应用在新发布的Android版本上能够适应和运行。
网络状况兼容性:测试应用在不同网络环境下的性能和稳定性,包括3G、4G、5G、Wi-Fi等。确保应用能够适应不同网络速度和连接条件。
应用兼容性:与手机硬件兼容,如home键、电源键、音量键等;与外部硬件设备兼容,如耳机、蓝牙等;与操作系统软件兼容,如wlan设置、系统时间调节、LBS定位等;与其他app兼容,比如后台在播放音乐时,进入动态页面点击动态视频的播放,系统如何处理

兼容性测试: 1.2.1硬件设备兼容 测试策略:一般需要覆盖市面上主流的手机厂商及各型号产品,可在百度等一些统计类的大数据网站获取最新的市场占有率排行,一般考虑厂商、型号来组合挑选。 测试方法:需要真机环境测试,可购置相应手机进行,或者在Testin、百度MTC、阿里MQC、腾讯WeTest等云测试平台进行。 测试要点:APP的安装/卸载,APP的正常运行。 1.2.2 操作系统兼容性 测试策略:需要覆盖市面上主流的操作系统及各版本,可在统计网获取最新的操作系统市场占有率,IOS直接挑选相应的操作系统,Android则根据Andriod系统版本和各厂商在其之上的定制版本做一些组合挑选。 测试方法:IOS可以通过模拟器进行,Andriod 往往仍需要真机测试,若对厂商定制的操作系统考虑风险较小不进行测试, 则也可以通过模拟器进行。当然也可以同硬件兼容性一样在云测试平台上进行测试。 测试要点:APP的安装/卸载,APP的正常运行、核心功能回归。 1.2.3 分辨率兼容性 覆盖市面上主流的各种屏幕分辨率、屏幕尺寸。这里主要关注的是UI上对各种分辨率、屏幕尺寸的适配情况。 测试方式:IOS可通过模拟器进行,Android 往往仍需要真机测试,若对厂商定制的手机屏幕尺寸考虑风险较小不进行测试,则可以通过模拟器进行。 测试要点:APP的界面显示、排版等各类UI测试。 1.2.4网络运行商兼容性 测试策略:在不同的网络制式、运行商下,APP能正常工作。一般需要覆盖主流的网络运营商。 测试方式:需要真机环境测试,需要连接各主流网络运营商提供的网络。 测试要点:挑选核心包含网络请求的功能进行测试。
1.3 安装、卸载、升级测试
安装测试点:
- 正常安装测试,检查是否安装成功。
- APP版本覆盖测试,例如先安装一个1.0版本的app,再安装一个高版本(1.1)的APP,检查是否被覆盖。
- 回退版本测试。例如先装一个2.0版本的,再安装一个1.0版本的,正常情况下版本是可以回退的。
- 异常情况安装测试
空间不足:测试设备存储空间不足时的安装行为,确保应用提示用户并处理适当。
网络中断:测试在网络中断的情况下应用的安装行为,确保应用不会因网络中断而安装失败。
安装中断恢复:模拟在安装过程中发生中断,验证应用在中断后能否正确恢复安装。
正在运行时覆盖安装
- 安装兼容性测试:在不同型号、系统、屏幕大小、分辨率的手机上进行安装的兼容性测试
- 安装完成后,能否正常启动应用程序,重启手机后是否能正常启动应用程序,是否对其他应用程序造成影响。
- 取消安装。安装过程中点击取消安装,能不能正常取消安装
卸载测试点:
- 用自己的卸载程序进行卸载,检查是否卸载干净
- 用第三方工具,检查是否卸载干净
- 在卸载过程中,点击取消按钮,看是否正常退出卸载程序,检查软件是否还能正常使用
- 卸载过程中,出现意外(比如手机关机,没电,查看信息,接打电话),程序是否还能正常运行
- 在卸载过程中,重启设备,再次访问程序,是否还能运行
- 在没有使用程序时,删除目录文件,看程序是否能运行
- 在使用过程中,直接删除目录文件,程序是否还能运行
- 不同系统,硬件环境、网络环境下进行卸载
- 卸载成功后,是否对其他程序有影响
- 卸载后再次安装,能否正常使用
更新测试点:
- 当客户端有新版本时,提示更新
- 非强制更新,可以取消更新,旧版本正常使用,下次使用软件时,仍然会出现更新提示。
- 强制更新,强制更新而用户没有更新时,退出客户端,下次启动,依然提示更新
- 不卸载更新,检查是否可以更新
- 非WiFi网络下。提示是否更新,取消就加入待下载,WiFi下自动更新。
- 从临近版本升级,跨版本升级
1.4 交叉事件测试
中断是指软件在工作中被其他任务或意外事件等情况终止退出,相应的测试即为交叉事件测试,亦称为中断测试。
通常有人为中断、新任务中断以及意外中断等几种情况。
常见的交叉事件测试的场景如下:

1)多个APP同时运行是否影响正常功能,如音乐下载、音乐收听、QQ、微信等。 2)APP运行时前/后台切换是否影响正常功能; 3)APP运行时拨打/接听电话。 4)APP运行时发送/接受信息。 5)APP运行时发送/收取邮件。 6)APP运行时切换网络。(2G/3G/4G/5G/WIFI); 7) APP运行时浏览网页; 8)APP运行中手机断电、重启、充电、插拔耳机; 9)APP运行时,Kill掉进程再打开; 10) APP运行时使用相机、计算器等手机自带设备; 11)APP运行时使用蓝牙传送/接受数据; 12)APP运行时查看应用推送; 13)APP运行时旋转屏幕; 14)APP运行时锁屏; 15)没有内存空间时,APP是否能正确响应。
1.5 push消息测试
(1)消息推送场景:产品角度,功能需要;运营角度,活动需要
(2)消息推送原理:
Pull:客户端定期向服务器发出请求,有新消息就返回给客户端
Push:服务器与客户端一直建连接,服务器有消息就把消息推送给客户端(更省资源)
(3)Push消息推送的实质:当服务器有新消息发送给用户时,先发送给应用App,应用App再发送给用户。
(4)Push消息推送的方式:
- 操作系统自建的push服务器
- 第三方的Push服务器
- 自建push服务器(安全、稳定、高效、成本高)
(5)Push 推送设置:
APP服务器设置:push消息针对不同的用户群体:全部用户、部分用户、特定用户,该设置决定推送的用户和业务规则
手机端设置:push消息推送是否接受通知,提醒位置等。该设置决定是否展示给用户,或者如何展示给用户
(6)Push消息测试关注点:
- Push消息是否按指定业务规则发送;
- 当Push消息是针对特定用户时,检查收到的Push与用户身份是否相符
- 设置不接受推送消息时,用户是否会收到push消息
- 设置push消息显示的位置是否与配置一致
- 收到Push消息是否能正常打开
- app在前台使用时,收到push消息如何提示
- APP在后台运行时,收到Push消息如何提示
- APP离线,是否能收到push消息
1.6 性能测试
性能评估: 测试应用在不同网络环境和设备上的性能,包括响应时间、加载速度等。
稳定性测试: 在长时间运行和各种应用场景下测试应用,确保其在不同条件下的稳定性。
负载测试: 通过模拟大量用户同时使用应用,评估应用的性能和稳定性。
APP性能测试常见指标:内存,cpu,流量,电量,启动速度,流畅度等
性能测试关注点:
- app使用时对cpu、内存的占用情况
- APP使用时是否流畅
- APP使用时电量、流量消耗情况
- APP的启动时间是否过长
1.6.1 性能测试工具GT 介绍
GT简介:GT(随身调)Android版是腾讯MIG专项测试组自行研发的APP随身调测平台,它是直接运行在手机上的“集成调测环境”,之所以叫集成调测环境是因为仅用GT即可独立完成如下针对App的测试工作:
基础性能测试:手机整机或者手机上安装的任何一个app的cpu,内存,网络流量,流畅度/帧率、电量等基础性能指标的实时展示、历史数据采集及excel格式存储、曲线绘制等。
日志查看:APP的logcat日志查看,便于直接用手机定位app功能异常、crash
网络数据包抓包:直接用手机抓包保存成pcap文件,下载到pc后用wireshark查看。
GT安装:
方式一:单独安装(APK,ios无单独安装包)
方式二:集成SDK(android,ios都可以,集成到被测APP代码,运行app时自动打开)
GT:下载路径
目前官网已经不维护GT,但是源码的地址还存在:https://github.com/Tencent/GT
由于官网已经放弃维护了,现在已经找不到这款apk软件的维护。可以瞅下以下被二次开发过的apk,下载地址.:https://www.itmop.com/downinfo/87649.html
GT首页如下:
1.6.2 性能测试要点
(1) CPU
CPU知识点介绍:
CPU测试,主要关注的是cpu的占用率。很多时候,我们玩手机时,会出现发热发烫,那是因为CPU使用率过高,CPU过于繁忙,会使整个手机无法响应用户,整体性能降低,用户体验就会很差,也容易引起ANR(application not responding,主线程(UI线程)如果在规定时内没有处理完相应工作,就会出现ANR)等等一系列问题。
GT工具提供了两个CPU的监控指标:CPU和Jiffies
- CPU:整机的CPU使用水平,即当前手机的CPU整体使用率。
计算公式:在linux系统下,CPU利用率分为用户态、系统态和空闲态。用户态表示CPU处于应用程序执行的时间,系统态表示系统内核执行的时间,空闲态表示空闲系统进程执行的时间。
CPU使用率 = CPU执行非系统空闲进程时间/CPU总的执行时间
- Jiffies:表示自开机以来,应用程序消耗的CPU时间片的总数
CPU问题产生的影响:
- CPU使用长时间处于90%以上
- 手机发热、耗电量增加
- 反应变慢、引起ANR(Application Not Responding)
(2) 内存
内存知识点介绍:
在Android系统中,每个APP进程除了同其他进程共享内存(shared dirty)外,还独用私有内存(private dirty),通常我们使用PSS(私有内存+比例分配共享内存)来衡量一个APP的内存开销。由于一个移动设备的内存是固定的,如果内存消耗过大就会造成应用卡顿或者闪退,需要对内存进行测试。正常情况下,应用不应占用过多的内存资源,且能够及时释放内存,保证整个应用内的稳定性和流畅性。
GT工具提供了两个内存的监控指标:PSS和Private dirty
- Private dirty(私有内存):进程独占内存,也就是进程销毁时可以回收的内存容量
- PSS(实际使用内存):将跨进程共享页也加入进来,按比例计算PSS,这样能比较准确的表示进程占用的实际物理内存。
常见内存问题:
- 内存泄漏(memory leak),是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏危害可以忽略,但是内存泄漏堆积后果很严重,无论多少内存,迟早会被占光。
- 内存溢出(out of memory),是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory。meory leak 会最终导致out of memory!
内存问题产生的影响:
- 程序实际使用的内存PSS持续增长
- 程序出现Crash(可能是内存溢出)
内存测试的步骤:
- 打开GT工具,配置内存相关的指标
- 打开被测APP,测试相关业务,监控内存指标
- 打开GT,查看内存监控数据曲线
- 收集内存相关的数据,并分析
(3)流畅度
流畅度知识点介绍:
GT工具提供了流畅度的监控指标:FPS(Frames per second),表示GPU在一秒内绘制的帧数
流畅度产生的影响:
- 想要让大脑觉得动作是连续的,至少是每秒10-12帧的速度
- 想达到流畅的效果,至少需要每秒24帧
- 60帧每秒的流畅度是最佳的,我们的目标是让程序的流畅度能接近60fps
流畅度测试方法:
- 打开GT工具,配置流畅度监控指标(在参数项中配置)FPS
- 打开被测APP,滑动页面,统计FPS值
- 进入GT,查看流畅度曲线
- 手机滑动操作时的流畅数据,计算平均值。(24fps-60fps之间就是正常的)
(4)流量
流量知识点介绍:
手机通过运营商网络访问Internet,运营商替我们的手机转发数据报文,数据报文的总大小(字节数)即流量,数据报文是包含手机上下行的报文
GT工具提供了流量的监控指标:NET
常用流量测试方法:
- 统计测试法:获取应用程序收发的数据报文,统计出对应的流量
- 抓包测试法:主要是利用工具TCPdump或者fiddler抓包,导出pcap文件,再在wireshark中打开进行分析
流量测试步骤:
- 打开GT,配置流量指标NET
- 进入GT的插件tab,选择抓包,开始
- 进入被测APP,进行相关的业务测试
- 进入GT,查看NET指标的流量曲线
- 将手机抓包的文件,导入PC,在wireshark中打开进行分析
场景的流量优化方法:
- 数据压缩
- 不同数据格式的采用
- 控制访问的频次
- 只获取必要的数据
- 缓存机制
- 针对不同的网络类型设置不同的访问策略
(5)电量
电量知识点介绍:
GT工具提供了电量的监控指标:电流、电压、电量跟温度
电量测试:
就是测试移动设备电量消耗快慢的一种测试方法。一般是用平均电流(电池生产厂家一般都采用mAh来标记电池容量大小,平均电流越小,说明设备使用时间就越长)来衡量电量消耗速度
常见的耗电场景:
- 定位,尤其是调用GPS定位
- 网络传输,尤其是非Wifi环境
- 屏幕亮度
- CPU频率
- 内存调度频度
- wake_locker(锁屏和解锁)时间和次数
电量测试步骤
- 打开GT工具,进入插件tab,点击耗电数据采集
- 选择采样频率,屏幕亮度和采集参数
- 进入APP,操作常见耗电场景业务
- 测试完成后,回到参数页面,点击停止录制;点击保存,选择路径保存本次的数据
- 在上面指定的路径下,找到保存的数据(1个.csv文件)就可以看到刚才测试场景的电量值
电量测试结果分析:
我们可以根据不同的业务场景测试出对应的电量消耗数据,但是是否有问题需要对比分析,对比方法:
- 与基准数据对比(基准数据来自于产品经理,或者以往数据积累)
- 横向对比,拉上竞品一起测(目前多采用这种方法),同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在耗电方面的差距,给出优化建议
(6)启动速度
启动速度知识点介绍:
app启动分为冷启动和热启动两种,冷启动指app被后台杀死后,在这个状态打开app;热启动指APP没有被后台杀死,仍然在后台运行,这种情况下再次去打开app
启动速度测试方法:
使用命令adb shell am start -W -n 包名/Activity名,查看APP启动耗时
该命令获取三个关键指标:
ThisTime:该Activity的启动耗时;
TotalTime:应用自身启动耗时,包括创建进程、App初始化、Activity初始化到界面显示(开发者需要优化的耗时)
WaitTime:系统启动应用耗时,TotalTime+系统资源启动时间
启动速度的测试结果分析:
同电量测试一样,我们可以测试出APP冷启动和热启动花费的时长,但是是否有问题需要对比分析,对比方法:
(1)与基础数据对比。(基准数据来自于产品经理,或者以往数据积累)
(2)横向对比,拉上竞品一起测(目前多数采用这种方法)
同样的网络、手机,相似的测试场景,最后对比我们的产品和竞品在启动时长方面的差距,给出优化建议。
1.7 弱网测试
3.1弱网环境
低于2G速率都属于弱网,根据目前的网络发展状况,也可将3G纳入为弱网,而wifi不属于弱网范畴。
3.2弱网测试的关注点
弱网测试测试的目的就是尽可能的保证用户体验度。关注点通常有:页面响应时间、页面呈现、超时文案、超时处理、大流量事件、支付重复等。
弱网测试的常见测试要点,通常进行3类测试:
1)无网测试:
断网功能测试;
页面文案提示是否满足用户体验度;
加载本地数据显示。
2)弱网的功能测试:
页面响应时间是否被用户接受,如热启动、冷启动时间,页面切换,前后台切换,首屏时间等;
页面呈现是否满足产品需求,是否完整一致,是否会出现重叠现象;
超时文案是否符合定义,异常信息是否显示正常;
是否会有超时重连;
是否在弱网下进行apk包的更新、下载文件;
弱网下支付请求超时,检查订单是否生成;支付成功后返回页面或APP时请求超时,订单是否生成,是否出现重复支付。
3)网络切换测试:
会话状态是否保持;
是否会出现Crash,anr现象;
是否会出现app页面显示错乱现象;
是否出现请求堆积处理。
3.3弱网划分
2G网络制式及速率划分如下:
3G网络制式及速率划分如下:
3.4弱网环境搭建
弱网环境搭建的两种方式:软件方式和硬件方式
硬件方式:通过无线网卡或路由器配置修改模拟弱网;
软件方式:利用模拟网络参数来配置网络环境。
在各类网络软件中,主要对带宽、丢包、延时等进行模拟弱网环境。软件方式的成本低且易操作,但亦有弊端,不能非常接近真实的弱网环境,
只能做到尽可能的接近。
利用抓包工具fidder进行弱网设置,fiddler主要是使用Rules->Performance->Simulate Modem Speeds 功能进行的网络延迟模拟,点击Rules ->Customize Rules进行设置,打开自定义脚本编辑器,如图所示:
红框内标出的就是设置延迟时可以操作的上行和下行网络延时时间,意为每上传/下载1KB的数据要延迟多少毫秒。这里通过计算上行和下行的网络延迟时间,可以模拟出想要的网络效果。
补充:
数字信息流的基本单位是bit(比特),时间的基本单位是s(秒),因此bit/s(比特/秒)是描述带宽的单位,
更长见的是使用 bps(Bit Per Second),称为比特率。
上行速率,是指用户向互联网发送信息时的数据传输速率。
下行速率,是指互联网向用户发送信息时的数据传输速率。
速率的单位是:比特/秒(bit/s)或者叫做:比特率(bps),而速度的单位:字节/秒(Byte/s)。
而根据换算关系:1Byte=8bits(1字节为8比特),所以速率和速度之间的关系是:速率/8 = 速度。
上传速度与上行速率的数值对应关系为:上传速度=极限上行速率/8。
利用(1KB/下载速度)*1000 = 要delay的毫秒数来计算(公式中*1000是把秒转换为毫秒)。根据上述2G网络制式与速率分布,各类网络制式的上行速率为2.7Kb/s,下行速率是9.6kb/s,根据1KB=8kb,可以计算出上行延迟时间为(1/(2.7/8))X1000 = 2962ms,同理下行延迟为(1/(2.7/8)X1000=833ms。
按照不同网络制式下的上下行速率计算出对应的网络延迟时间,然后设置fidder,完成后在fidder里将Rules->Performance->Simulate Modem Speeds选中即可设置生效。
1.8 用户体验测试
用户体验测试:以主观的普通消费者的角度去感知产品或服务的舒适、有用、易用、友好亲切程度。通过不同个体、独立空间和非经验的统计复用方式去有效评价产品的体验特效提出修改意见提升产品的潜在客户满意度。
用户体验测试关注点:
(1)UI界面测试
对照UI交互设计文档,检查每个界面设计菜单、对话框、窗口、风格、布局等
注意事项:图片、按钮(选中效果)、字体大小、颜色、居中对齐等等
(2)易用性测试
是否有空数据界面设计,引导用户去执行操作
菜单层次是否太深
交互流程分支是否太多
完成业务操作的步骤是否过多
界面中按钮可以点击范围是否适中
是否定义Back的逻辑。设计软硬件交互时,Back键应具体定义
(3)横竖屏测试
横竖屏的切换是否正常(针对每个页面都要做横竖屏测试)
特别要关注APP中有表格,因为横竖屏的显示宽度不一样
(4)关注手机 应用上的其他辅助功能
可以重点关注“放大字体”、“反色”、“语音转换”“多点触碰”等功能
1.9 稳定性测试
通过长时间对应用程序进行无序操作,检验应用程序是否会出现异常。如闪退Crash、无响应ANR等。
稳定性测试工具:Monkey
Monkey是一个命令行工具,是由安卓官方提供的
测试人员可以通过Monkey来模拟用户的触摸、点击、滑动以及系统按键等操作(操作事件都是随机的),从而实现对APP压力的测试和稳定性测试。
稳定性测试的时机:
一般需要等产品稳定了,bug比较的时候,再用monkey去测试待测应用的稳定性
>>>待续
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
2019-02-27 Python之XML模块
2019-02-27 Python之CSV模块