Android 非功能性测试(性能测试)
非功能性测试是针对非功能性需求来说的。所谓非功能需求,是指软件产品为满足用户业务需求而必须具有且除功能需求以外的特性
一、交互类性能
1.响应时间
启动时间和响应时间是APP带给用户最直观的性能体验。因此,无论何种类型的APP,我们都不能忽视响应时间的测试,在互联网上对于用户响应时间,有一个普遍的标准(有网络交互时),2/5/10秒原则:
- 2秒 “非常有吸引力”的用户体验
- 5秒 “比较不错”的用户体验
- 10秒 “糟糕”的用户体验
1.1 用例设计
我们通常所说的App卡、慢通常就是由于启动时间或者页面响应时间过长导致的。我们从这两个方面,结合实际的用户场景,给出了几种常用的测试场景。
测试场景 |
说明 |
冷启动时间 |
从App启动到出现第一个可操作的页面的时间间隔 |
热启动时间 |
同上 |
App启动到首页加载出来的时间 |
从App启动到首页完全加载出来的时间间隔 |
无网络请求的页面响应时间 |
一般指从发起跳转,到页面完全加载出来的时间间隔 |
有网络请求的页面响应时间 |
同上 |
注:冷启动 – 当应用启动时,后台没有该应用进程,这时系统会重新创建一个新的进程分配给该应用
热启动 – 当应用已经被打开,但是被按下返回键、Home键等按键时回到桌面或者是其他程序的时候,再重新打开该应用
1.2 测试方法
实际性能测试中是严格录像计时的,按下到首帧响应时间。
- ADB命令
说明:此命令适用应用冷启动时,只需关注TotalTime(单位:ms)
- ThisTime 表示一连串启动Activity的最后一个 Activity 的启动耗时,一般和TotalTime时间一样,除非在应用启动时开了一个透明的Activity预先处理一些事再显示出主Activity,这样将比TotalTime小
- TotalTime应用的启动时间,包括创建进程+Application初始化+Activity初始化到界面显示
- WaitTime 一般比TotalTime大点,包括系统影响的耗时
- 屏幕录制
1) 安装被测应用到测试机,保证手机网络畅通;
2) 通过高速相机对准手机屏幕进行录像,该步骤也可使用adb命令录制(精确度不如高速相机拍摄);
3) 用手点击APP,待用户期待界面完全展示后,停止录像;
4) 通过视频解帧工具打开录好的视频,分别找出用户点击屏幕的时间点和完全展示的时间点,两者的差值就是APP响应时间。
注:此方法适用任何场景,但测试较为繁琐,建议手机无USB连接权限或其他测试条件不满足时使用
- 脚本判断
1)在发送touch事件后记录起始时间;
2)当mFocusedActicity的数据中有指定activity,记录结束时间;
3)两者做差就是所需时间(单位:ms)。
注:该段脚本建议自行理解实践,切勿复制粘贴
1.3 判断依据
1) 冷启动响应时间不超过2s;
2) 安装完成首次启动时间不超过5s;
3) 竞品数据对比。
2.流畅度
流畅度测试简单来说就是Android页面绘制。Android系统每秒60HZ,也就是大约每16ms刷新一次界面。但是我们在使用过程中经常会看到页面有卡顿(丢帧)的现象,也就是说可能此时两个页面绘制的时间差超过0.1s(人眼视觉残留0.1s)
2.1 用例设计
测试项 |
测试场景 |
说明 |
过渡绘制 |
1. 新增列表页 2. 旧列表有大的改动 3. 当前加载页资源较多 4. … |
页面不能有超过70%的过渡绘制 |
帧率 |
平均FPS>=30,最小FPS>=24 |
2.2 测试方法
- 过度绘制
1)进入设置,开发者模式-调试GPU过度绘制;
2)打开待测应用,执行用例后查看页面显示
- 流畅度
1)进入设置,开发者模式-GPU呈现模式分析-在屏幕上显示为条形图;
2)打开待测应用,执行用例后查看页面显示。
- ADB命令
1) adb shell dumpsys gfxinfo com.xdja.actoma > D:\fps.txt
2) 获取到如下数据,复制到Excel中绘制成堆积柱形图
3) 表格:
4) Draw + Prepare+Process + Execute = 完整显示一帧 ,这个时间要小于16ms才能保存每秒60帧。
3.弱网测试
用户在各种场景下都会使用APP,我们需要针对不同场景的弱网环境下,验证出现丢包、时延软件的处理机制,极大提升产品印象和用户体验,避免因用户体验不好造成用户的流失。
3.1 用例设计
测试场景 |
测试用例 |
说明 |
丢包 |
丢包率:5%、10% |
一个或多个数据数据包(packet)的数据无法透过网上到达目的地 |
时延 |
延时:200ms、500ms |
信息从发送到接收经过的延迟时间 |
抖动 |
抖动延迟:500ms、800ms |
指信息从发送到接收经过的最大延迟与最小延迟的时间差 |
乱序 |
乱序比例:5%、10% |
打乱数据包发送的顺序 |
3.2 测试方法
1)下载Network Emulator for Windows Toolkit;
2)打开软件,创建一个过滤器,可以在菜单中点击configuration->new filter,也可以点击快捷按钮进行创建;
3)弹出的界面中,点击add按钮后,点击close按钮;
4)接着创建一个新的连接,同样可以在菜单中点击configuration->new link,也可以点击快捷按钮进行创建;
5)连接图标处点击右键或双击连接图标;
6)接着就可设置上行和下行的丢包及延时等网络数据,UpStream Property的设置窗口为,其中Loss为设置丢包,Error为设置错包,Latency为设置网络延迟,BW&Queue为设置带宽,BG Traffic为设置边界网关流量,Disconnection为设置断开连接数;
7)设置完成后点击应用按钮后点击确定按钮,弹出Downstream Property设置窗口直接点击确认按钮,完成后点击start按钮。
3.3 判断依据
合理设置弱网环境下:
1)软件不报错,正常运行;
2)软件超时响应处理;
3)传输中断错误处理。
二、资源类性能
1.CPU
Android性能指标cpu主要关注两点:
1) cpu总体使用率
2) 应用程序CPU占用率
1.1 用例设计
测试场景 |
说明 |
空闲状态下的应用CPU消耗情况 |
被测应用在系统资源非常空闲的情况下的占用率,比如只开一个被测应用; |
中等规格状态下的应用CPU消耗情况 |
后台已经有几个应用在运行已经并且消耗了系统的一些资源的情况下 |
满规格状态下的应用CPU消耗情况 |
从App启动到首页完全加载出来的时间间隔 |
1.2 测试方法
- 1.2.1 Android Studio直接查看
注:CPU运行状态图像化,但是无具体数值参考,可在测试报告中清晰表现,根据项目选择。
- 1.2.3 GT/iTest工具
1)选择待测应用+测试内容
2) 选择需要保存的数据
3) 查看动态图
4) 保存数据查看
1.3 判断依据
1) 前台进程不超过95%,后台进程不超过5%, 但是在系统没有前台进程时,后台进程可以超过5%;
2) 应用不能持续占用CPU过高,如段时间内过高需要研发给出解释。
2.内存
2.1 用例设计
测试场景 |
说明 |
内存使用率 |
应用占用系统的内存占比,一般仅测试应用启动时的内存使用率 |
内存抖动 |
使用过程中频繁申请释放内存,测试用例根据业务场景设计,例如:发送群聊消息、上传下载文件等 |
内存泄漏 |
内存无法正常释放,测试用例根据业务场景设计,例如:滑动查看图片、滑动查看文件列表、下载文件、上传文件、新建文件夹等 |
2.2 测试方法
2.2.1 内存占用率(工具:GT/iTest)
注:仅支持Android6.0以下的安卓版本
1) 选择被测应用
2) 查看内存占用曲线图
- 2.2.2 内存抖动(工具:AndroidStudio)
注:内存抖动是常见内存问题,必测项,需截图体现在报告。
1) 测试机安装待测应用,连接到AndroidStudio;
2) 操作应用使用场景查看内存抖动情况;
- 2.2.3 内存泄漏
注:内存泄漏为必测项,需保存每一项内存数据表现,为开发提供强有力的数据支持。
1) 测试机安装待测应用,连接到AndroidStudio
2) 在AndroidStudio选择DDMS工具
3) 选择被测应用,并操作用例场景后GC,记录Allocated、Data值
2.3 判断依据
- 2.3.1 内存抖动判断
如类似下图,频繁申请释放内存,即为不通过:
- 2.3.2 内存泄漏判断
标题2.2.3中Data值一直增长,GC后无下降行为即为不通过
3.流量
APP的网络流量消耗对于用户来说是较为敏感的,因为有可能会和钱挂钩。若APP开发时在这方面没有控制好,很有可能会给用户带来不好的体验
3.1 用例设计
测试场景 |
说明 |
IM聊天文字/表情/图片 |
频繁使用场景的流量测试 |
文件传输 |
传输过程中的流量消耗 |
后台静置待机 |
8小时后台待机流量消耗 |
Xpush相关业务场景 |
- |
应用首次启动流量 |
3.2 测试方法(测试工具:GT/iTest)
1) 测试机安装GT、待测应用
2) 打开GT选择对应应用,后台
3) 操作对应测试场景后查看GT统计
3.3 判断依据
1) 流量消耗不能与发送内容的大小相差太多。如1M文件传送消耗1.1M流量即为通过,消耗2M流量即为不通过
2) 8小时后台流量待机不能超过1M流量
4.功耗
4.1 用例设计
测试场景 |
说明 |
安装目标APK前后台待机 |
前后台待机包括4G、3G、WIFI、无网络情况下测试 |
常见场景待机 |
执行常见场景后,功耗可恢复到待机状态 |
GPS耗电待机 |
网络正常连接情况下应用有GPS业务 |
1.2 测试方法
- 1.2.1 硬件测试
注:推荐使用该方法测试功耗,如无法达到测试条件请参考方法3
1) 测试机拆除电源后连接稳压电源并串联万用表;
2) 按照万用表表盘操作读取时刻电流mA;
3) 测试结束后保存平均电流mA。
- 1.2.2 软件测试(测试工具:Power Tutor)
1) 打开PowerTutor软件,选择待测应用
2) 操作测试场景后,30分钟后查看平均功率并换算为mA
- 1.2.3 adb测试
1)测试样机恢复出厂设置,安装测试应用,保持电量在开测时是100%;
2)测试机连接电脑,重置电池信息;
adb shell dumpsys batterystats –reset
3)测试结束后执行,保存电量信息;
adb shell dumpsys batterystats > C:\Users\notordinary\Desktop\batterystats.txt
4) 从batterystats.txt筛选所需信息,搜索关键字“Estimated Power Use”
4) Computed drain即是段时间内消耗功耗mAh,如上图功耗值为:
功耗值 = 6.58mAh/测试时长
理解:上图数据测试时长为30min,一般功耗值表现为mA,所以需要有所换算。那么如何换算mAh呢?
首先,我们需要理解什么是☛mAh,mAh(毫[安时])是电量单位,功耗测试需要的是电流单位mA,1Ah=1000mAh,则有如下换算:
➺放电0.5小时,消耗6.58mAh耗电量,一小时消耗约13.16mAh
➺也就是说13.16的电量,如果平均电流是13.16mA话,可供该设备使用1个小时
结论:理解之后那么就知道,mA是电流的单位,表明电流的大小。 mAh是毫安时,电量的单位,常用来表明电池的容量,意即以多大的电流放电,能够持续提供多长时间的电流。是不能相互换算,所以使用此方法的小伙伴就直接用mAh做对比吧
1.3 判断依据
1) 安装被测应用后,系统总耗电平均电流无明显增加;
2) 被测APP不能有不合理的常驻服务,造成耗电持续偏高;
3) ACE待机灭屏耗电6mA – 12mA;
4) ACE待机亮屏耗电180 – 230mA。
Android 非功能性测试(性能测试)相关推荐
- 编写测试用例基本要求、非功能性测试和状态迁移法介绍
编写测试用例基本要求 1.项目测试流程 (1)需求评审 (2)编写测试计划与测试方案 (3)测试用例设计与评审 (4)测试执行与BUG跟踪 (5)编写测试报告 2.测试用例需求来源 (1)需求说明书, ...
- 什么是非功能性测试?
日常工作中功能测试占据了大部分的内容,但是软件测试中非功能性测试也是很重要的一部分,今天就来简单介绍下非功能性测试. 非功能测试是一种用于评估软件应用程序的性能.可用性.可靠性和其他非功能特征的测试类 ...
- 测试过程之过分关注功能性测试
一.定义: 过分强调功能测试,而非测试质量.数据和接口需求.以及测试架构.设计和实现的约束. 二.发生时间段 非功能性需求中. 三.陷阱表现 1.大多数的测试关注验证功能性表现 2.没有验证质量特性的 ...
- Android官方开发文档Training系列课程中文版:Activity测试之创建功能性测试
原文地址:http://android.xsoftlab.net/training/activity-testing/activity-functional-testing.html 功能性测试包括模 ...
- 软件开发的非功能性需求
The functional requirement is describing the behavior of the system as it relates to the system's fu ...
- 软件开发的功能性需求和非功能性需求
功能性需求,一般是我们显性易见的,就是一般实现了什么功能,提供了什么服务,大体我认为问题中提到,或者我们日常所说的:"看起来复杂不复杂",基本上都会是针对功能性需求而言的.如果拿g ...
- Android与iOS测试注意点
App测试中Android和IOS测试区别 分辨率测试: Android端种类多常见的手机分辨率: (4:3 VGA 640480 (Video Graphics Array) QVG ...
- Android端手机测试体系
以上转自http://www.51testing.com/html/57/n-1466657.html到家,看到群里的朋友在讨论怎么来测android端的手机测试,那么我在这里想引经据典一下,接下来这 ...
- 影响架构决策的非功能性需求
英文原文:Non-functional Requirements in Architectural Decision Making 本文由<IEEE Software>杂志首发,现在由In ...
- Android:Socket客户端开发,Android 的Socket客户端优化,Android非UI线程修改控件程序崩溃的问题
一.Android:Socket客户端开发 创建一个工程 我们要做的是按下按键之后,去往服务器 (服务器) 或者我们自己写的服务器 ,给他发送一些预定好的东西 然后打开操作界面 然后修改一下 你要发送 ...
最新文章
- Redis中主、从库宕机如何恢复?
- redhat下配置SEED DVS6446开发环境3
- 关于分辨率和地图打印的一些问题
- JAVA利用google的zxing解析二维码QRCODE
- 交流:Ghost版系统安装简单分析
- c4d语言包英文,Win版本MAXON Cinema 4D R21.027 C4D中文与英文版下载安装
- M302A-ZN-S905L2蓝牙语音-支持外置无线网卡版本
- myeclipse使用(技术和快捷键)
- TeamViewer突破地域限制,解决办公难题
- ubuntu18.04安装0.6以上版本的flameshot
- 煤炭传送带状态检测系统-python
- 华中科技大学2017年数学分析高等代数考研试题
- origin画对数坐标_如何用Origin绘制对数坐标图、双横坐标图及插入到Word文稿
- 爱思助手安卓能用吗_苹果的蓝牙耳机安卓能用吗
- 微信小程序电商首页开发基本思路
- Git-优雅地解决冲突:使用ours和theirs
- 精彩东博会丨我委会员单位联通沃音乐打卡第五届中国—东盟信息港论坛:穿越元宇宙 沉浸新技术
- 高级前端程序员和初级前端程序员的区别
- 一人改代码搞崩推特,马斯克气疯:全部重写!
- 【Windows】虚拟串口工具VSPD7.2安装