android下的app性能测试应主要针对那些方面,如何开展?

如何开展安卓手机下的App性能测试,对于优秀的测试人员而言,除了要懂得性能测试的步骤流程外,还应该懂的性能测试的一些其他知识,比如性能测试指标、各指标的意义,常用的性能测试工具、如何查看结果分析等等知识。所以本文为了讲透该知识点,具体的撰写大纲如下所示:

1、性能测试目的
2、性能测试指标
3、 移动APP性能测试步骤流程
4、性能测试结果分析
5、性能测试场景问题分析

好,马上就讲。

一、性能测试的目的
性能测试的目的简而言之,就是优化应用程序(注:应用程序在PC端被称为"软件",在移动端被称为“App”),满足用户使用体验。

对于移动应用App来说,要想取得成功,顶级性能是最重要的。否则,最终用户将卸载应用程序APP,去寻找性能更好的APP替换它。

我承认18年我就是因为荒野行动卡顿,用户体验不好,才跑去玩和平精英的。

android下的app性能测试应主要针对那些方面,如何开展?_第1张图片

 

那到底要关注哪些方面,每个指标在实际生产中是如何影响业务?在实际生产中如何开展?我们从以下几点来看。

二、性能测试指标
1、Android性能指标
基础的产品性能指标,一般涵盖页面加载速度、到站率、接口返回速率、成功率、白屏率等用户侧指标,也包含功耗、流量消耗、包体积、磁盘空间等物理指标。

2、CPU
主要关注的 CPU 的使用率。比如打游戏时间长了,手机会出现发热发烫,是因为CPU 使用率过高,CPU 过于繁忙,会使整个手机无法响应用户,整休性能降低,用户休验会很差,也容易引起 ANR等等一系列问题。指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%。

android下的app性能测试应主要针对那些方面,如何开展?_第2张图片

3、GPU
GPU 过度渲染是指:在一个像素点上绘制多次,过度绘制对动画性能的影响是极其严重的,如果你想要流畅的动画效果,那么一定不能能忽视过度绘制。

还有一种由于当前线程中执行了太多任务,UI渲染跟不上Sync信号(刷新信号)而出现掉帧,通常是主线程导致。而这也是优化的重点,因为大部分卡顿、掉帧都会在这里现出。

android下的app性能测试应主要针对那些方面,如何开展?_第3张图片

4、APP响应时间
作为应用成功的核心特征之一,移动应用响应时间至关重要。用户对较长的加载时间和缓慢的处理零容忍。对应好坏的指标有:

优秀:0-400ms

标准:400ms-2000ms

隐患:2s-5s

严重:>=5s

优化APP性能需注意以下几点:减少 cookie 大小、使用更少的 URL 重定向、消除 Flash 等组件等,以实现良好的响应时间。

5、流畅度FPS

android下的app性能测试应主要针对那些方面,如何开展?_第4张图片

FPS指的时应用被使用时得流畅度,是图像领域中的定义,是指画面每秒传输帧数,通俗讲就是指动面或视频的面面数。FPS 是测量用于保存、最示动态视频的信息数量。

每秒钟帧数越多,所显示的动作就会越流畅,帧率肯定是越高越好,出于功耗与显示设备的限制,一般跑满也就在60fps左右。一般,Android 设备的屏幕刷新率为 60帧/s,要保特面面流畅不卡倾,要求每一帧的时间不超过1000/60=16。6ms,称之为16ms 的黄金准则,如果中间的某些帧的渲染时间超过 16ms。

导致屏幕渲染时间缓慢,也可能是由于屏幕尺寸不准确、字体不一致、图像未缩放、过多的阻塞脚本等导致。需要加快屏幕页面渲染时间,需避免使用 CSS 表达式并引用 HTML 中的图像。

6、应用程序APP崩溃

android下的app性能测试应主要针对那些方面,如何开展?_第5张图片

通常崩溃率是每次应用加载的平均崩溃率。移动设备的典型崩溃率为 1-2%,但可能会因APP类型、APP使用情况、成熟度等,而产生有很大差异。应始终以 98% 的无崩溃用户为目标。

7、电池使用情况
电池寿命是任何移动设备的关键特性。移动应用app电池消耗测试仅在必要时优化APP以消耗低电池电量。还应尽量减少后台活动。

在持续使用时,某些app程序会消耗大量电池寿命并加热手机。这个因素极大地提高了任何app程序的性能,并且通常会在APP使用的资源超过所需资源时发生。过多的资源使用会给处理器带来负担,并且手机会发热

android下的app性能测试应主要针对那些方面,如何开展?_第6张图片

8、内存消耗
在 Android 系统中,每个APP 进程除了同其他进程共享内存(shared dirty)外,还有私有内存(private dirty),通常我们使用 PSS(私有内存+比例分配共享内存)来衡量APP 的内存开销。

内存使用占有率高,APP在运行时,由于一个移动设备的内存是固定的,会和与其他后台APP竞争,如果内存消耗过大就会造成应用卡顿或被操作系统终止(闪退)。应保证应用不占用过多的内存资源,且能够及时释放内存,以保证整个应用内的稳定性和流畅性,以减少APP的内存占用。

内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%。

9、 网络流量
目前的网络类型包含 2。5G、3G、4G、wifi,其中还有不同运营商的区分,我们在 APP的使用中经常遇到大资源,重复请求,调用响应慢,调用失败等各种情况。在不同的网络类型之下,我们不仅加快请求的响应,还要控制流量使用。每秒钟乎均流量,建议值<5.12kb,每10 分钟平均流量,建议值<3MB。并且不存在app偷跑流量等行为

android下的app性能测试应主要针对那些方面,如何开展?_第7张图片

10、碎片化

性能质量在各种移动设备中都是相对的。在市场上Android有数以千计的移动设备,它们因品牌、价格而异的硬件配置、不同的操作系统版本、不同的分辨率。在具有不同 RAM、ROM 和不同规格的处理器等设备上,对应用进行测试。确保应用在容量较低的设备上,也可以正常地运行(如4g,再低则很少有维护的必要)。

三、性能测试步骤流程
通常性能测试会交由专门的性能测试组进行测试。但在不同的公司、不同类型的App,对性能测试步骤流程都是相似的。

在做性能测试的时候,通常是这样的分配的:

• 45%前置准备:性能测试分析,也就是制定明确的标准及目标;

• 30%测试执行:通过工具或自动化脚本,根据制定的目标,进行执行;

• 25%结果分析:执行完成后得出性能报告,但这并不意味着结束。而是要根据报告分析系统中存在问题的原因。

1、前置步骤
但在实际开始测试移动应用App性能之前,通常需要制定一个针对该应用,行而有效的测试计划,以确保应APP得到有效测试。简单而言,有以下几个步骤:

步骤1:性能需求分析

性能需求分析是开始进行性能测试最重要的部分。

同其它软件研发流程一样,性能测试也是有需求的。需求通常要明确:对性能测试或调优要的目标确认;系统背景相关信息进行确认;被测系统的业务场景确认;测试风险确认。这些都对之后的高效性能测试实现等,都具有指导性。

步骤 2:定义测试性能目标

缺乏移动应用App性能测试目标,是APP开发和性能测试中最常见的失败原因。

性能测试需要目标清晰、定义明确,与业务APP实现目标保持一致,否则测试过程很容易阻塞。比如:我觉得这个页面打开有点儿慢,足足用了5秒,对于研发来讲:这符合预期,因为定义时只是说很快,从10秒到现在5秒,效率提升两倍,我5秒已经很快了~从而开始争论不休。

android下的app性能测试应主要针对那些方面,如何开展?_第8张图片

 

步骤 3:确定测试用例 KPI
计划需要设置并实现测试基准,以证明性能测试的可行性。战略目标确定了APP测试的目标, KPI 将帮助我们了解,距离实现这些目标还有多远。

以下这些 KPI 可以帮助衡量测试的有效性:

平均响应时间

峰值响应时间

错误率

并发用户数

每秒请求数

吞吐量

android下的app性能测试应主要针对那些方面,如何开展?_第9张图片

步骤 4:确定关键场景并确定优先级
大多数APP性能测试失败的一个常见原因是目标定义不明确。

每个功能点都应该有对应得性能指标。这需要尽早定义。否则一概而论很可能会破坏测试策略,阻塞性能测试进度,发现不了性能能瓶颈的测试结果都是无效的。

制定好优先级,这需要先对必要的功能场景,制定对应的性能指标,测试完成后,再制定辅助功能场景的性能指标,并继续测试。

App性能测试清单:

• 使用此APP需要多少 RAM?

• 验证APP在不同网络和环境下的速度和响应时间。

• 在多种网络条件下确保真实的用户体验

• 确保在多个连接的情况下实现所需的结果

• 确保APP不会崩溃。

• 确保APP程序在使用数据、Wi-Fi 或其他连接时表现良好

• 监控正常运行时间和移动 API 使用瓶颈

• 确定最大并发用户数

• 检查app程序的极限

android下的app性能测试应主要针对那些方面,如何开展?_第10张图片

步骤5:在测试环境中使用模拟器、虚拟机和真机设备,测试APP
通常在模拟器等虚拟测试设备上,可以帮助测试人员运行APP,尽管虚拟测试设备与最终用户设备表现相似,并具有成本效益,但也仅仅是大致了解APP,依旧无法替代真机。

这是因为在真实设备上,会获得最真实的体验感受。如:相机权限、GPS的性能,这往往是虚拟设备无法提供的。还可以在各种屏幕分辨率,以及不同的地理位置和网络环境进行测试。通常真实设备比虚拟测试设备提供更准确和可靠的结果。

设置App性能测试环境如下:

• 了解需要测试的App程序

• 识别APP需要在其上运行的不同操作系统版本

• 构建测试设置

• 构建模拟器或模拟器

• 实际设置的原型

• 选择合适的测试工具

android下的app性能测试应主要针对那些方面,如何开展?_第11张图片

步骤 6:测试与研发协调
性能测试通常由自动化支撑,来实现APP在软件生命周期中的持续测试。

而测试方法与APP开发方法应保持一致,有助于测试目标和测试基准统一,有助于实现APP愿景和业务战略,同时也有助于让研发团队中的每个人,可深入了解在一段时间内应用性能,对未来得性能提升打下坚定得基础。

例如:敏捷开发中,开发及测试团队,在整个项目的开发生命周期中,开发和测试的持续迭代,将工作流,调整为阶段,在进入下一阶段之前,开发及测试团队定期进行回归测试并接受错误报告。

步骤 7:考虑运营商网络的延迟和带宽
日常测试种会受到网络带宽和网络消耗及延迟的影响。移动设备通过第三方网络运营商连接到互联网,带宽和网络延迟可能会有所不同。因此需要在不同的网络条件下测试APP,以确保APP良好的运行,提供可靠的质量保证和改进的APP性能指标。
android下的app性能测试应主要针对那些方面,如何开展?_第12张图片

流量 

APP需要在各种速度可变的网络上进行检查。

APP要在 2G、3G 、 4G和WIFI 网络上进行测试,监控APP的行为。特别是当两个网络都可用,并且从一个网络切换到另一个网络时。

例如:当用户将电话网络从 4G 切换到 WIFI 时,用户的APP中可能会出现问题,反之亦然。在这种情况下,APP变得无响应,可能需要重新启动APP才能使用。

抖动

响应时发生延迟时,对理想时间位置上,出现的短期偏离,称为抖动。

这是在分组交换网络时,发生的问题。当信息被分发到数据包中时,数据包可以通过不同的路径,从发送者到接收者。当数据到达预期位置时,它会变得比最初发送的顺序更混乱。

我们要确保当出现随机抖动的情况时,App程序应该有足够的能力来处理它。处理起来通常是告知用户,需要重新发送请求或等待系统再次响应。

数据包丢失

在完全丢包的情况下,APP应该能够重新发送信息请求或相应地生成警报。

如果数据不完整,则用户将无法理解 App 中显示的信息。这会给用户带来困惑并质疑应用的能力。

因此,最好显示合适的错误消息或提示用户重试。

2、测试执行——挑选移动应用性能测试工具
性能测试需求目标场景确认完成后,就要挑选用来针对测试所用到的性能测试工具。因设备和平台的类型而异。推荐一些最常用的测试工具包括::

1)Appium【推荐,正文末附该工具学习资料】
Appium Studio 是一款免费的移动性能测试工具。它以其易于阅读和编写的代码界面、各种受支持的测试和独特的 XPath 而闻名。

它与现有的测试环境完全集成,并为开发人员提供对特定于设备的功能的访问。

android下的app性能测试应主要针对那些方面,如何开展?_第13张图片

 

2)Robotium
Robotium 是一个 Android 测试自动化框架,它为原生和混合APP提供全面支持。

该框架使为 Android APP编写,其功能强大且健壮的自动黑盒 UI 测试变得容易。

开发人员可以编写自定义功能、系统和用户验收测试场景。用户还可以记录和回放进行测试的步骤。

 

3)Selendroid

Selendroid 是一个基于 Selenium 的测试自动化框架,适用于 Android 原生和混合移动应用app以及移动网络。用户可以同时测试多个 Android 应用版本,在模拟器或真机之间切换。

android下的app性能测试应主要针对那些方面,如何开展?_第14张图片

4)Sauce Labs
Sauce Labs 是一个真机云APP自动化测试平台,提供移动应用app的自动化测试。

允许用户在 700 多种不同版本的操作系统,在云真机设备上,并行运行测试,且不会相互干扰。

支持测试人员在没有编程知识背景下,进行移动端自动化测试。

还为测试客户提供了一个安全的测试协议,可在开发、测试、测试版或发布后,对错误进行捕获,并确定优先级。通过更深入地了解APP故障的根本原因,提供高保真错误数据和强大的崩溃分析,来降低APP风险。

android下的app性能测试应主要针对那些方面,如何开展?_第15张图片

 5)JMeter 【正文末附该工具学习资料】

JMeter 通常用来测试服务器,可用于测试静态和动态资源。如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库和 FTP 服务器等等。

JMeter 可对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。

另外,JMeter 能够对APP做功能/回归测试、分布式测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。为了最大限度的灵活性,JMeter 可以使用正则表达式创建断言。

四、最后就是测试结果分析
1、测试结果报告:
测试完成后会,会生成报告,一般分为三个部分:

• 基础信息:包名、版本号、提交时间。

• 检测结果:如果下方的检测项出现错误,则会在检测结果上提示哪台手机出现错误。

• 各设备检测结果:选择的机型中的各个设备的检测结果。

2、设备检测结果:
设备信息:安卓版本、分辨率、运行内存、内部储存空间、屏幕大小

设备性能参数:再次启动时间、列表滑动帧率、CPU 占用率、FPS、内存占有率

3、重要检测项:
首次启动时间:首次启动耗时下限设定为 4000ms;耗时过长,会导致用户看到的都是白屏或者内容有缺失。建议检查加载过程中的所有操作,看是否存在请求数据耗时过长,或者一次性渲染数据过大的情况等。

内存占用为:快应用内存占用下限,设定为 600M;请检查是否存耗费内存的操作,如:内存泄漏,没有复用的超长列表,很多大尺寸图片等。

其他较为重要的检测项目还有:

• 是否成功安装

• 是否成功启动

• 是否有卡死现象

• 是否有崩溃现象

• 是否成功卸载

• 是否正常运行

• 是否出现黑屏或者白屏异常

android下的app性能测试应主要针对那些方面,如何开展?_第16张图片

 

4、生成测试报告

生成测试报告,或者通过excel表里面的数据,制作折线图、柱状图。此时,作为测试人员并不是提交这些报告才算完工。我们需要查看执行概览,测试结果,被测系统监控,错误日志,跟踪并分析日志等。

5、在测试结果分析前,还需要有四看:

在整个测试场景的执行过程中, 一要看:测试环境是否正常。

如果在测试过程中发生出现过异常,那么这样得出的结果往往不准确,无须进行分析。

二要看:测试场景的设置是否正确、合理。 

测试场景的设置是否正确对测试结果有很大的影响。当测试出现异常时,需要分析是不是由于场景设置不正确引起。

三要看:负载生成器和服务器的系统资源情况。 

保证负载生成器在整个测试过程中的CPU、内存、带宽未触及到性能瓶颈,否则测试是无效得。

四要看:错误发生曲线在整个测试过程中是否有规律变化 

如果是,则意味着程序存在一定的缺陷。

android下的app性能测试应主要针对那些方面,如何开展?_第17张图片

五、场景问题分析
通常上线一定时间内,APP会发生不同的问题。总结不同的应用场景,在性能测试领域,大概有以下几类常见问题:

1)应用间互相影响:
在与其他APP并行测试时,要做到不会干扰到其他APP运行。测试时需与其它应用之间进行切换,以监控应用与其他应用的交互方式。

2)卡顿分析:
通常需要插桩,通过对线程任务分布,CPU利用率及颗粒度进行卡顿问题分析及线程堆栈信息收集。

3)流畅性分析:
保存FPS记录、记录动态视频信息数量,查看相关线性图。

4)启动分析:
自动化测试启动时间,启动阶段执行任务分析、线程创建情况分析。

5)内存分析:
查看内存多维度的指标,如:Java Heap Dump 内存数据,分析大小对象、内存泄漏问题,纹理分配数量及占用内存,还原图片帮助归因。

6)界面分析:
UI自动化进行验收,视图拾取、点选视图、查看视图信息&修改视图属性,展示视图输等。界面层级结构分析、视图归类分析等。

7)崩溃分析:
对ANR 监听并捕获、NativeCrash、Java crash 堆栈信息,崩溃数据抓取,分析各种环境关键信息。

android下的app性能测试应主要针对那些方面,如何开展?_第18张图片

六、性能测试学习视频推荐
如果看完上述文字后,对安卓下App性能测试的工具,还是不知道如何入手?文末获取~

七、总结
熟练掌握Android下的App性能测试指标,不仅仅是对指标名称的了解,最好还能掌握Android系统相关机制。可通过阅读Developer开发者文档(百度《android开发之developer文档》),针对性能测试做好前置准备工作。

最后总结App性能测试流程,大概分为下面几步:

1)通过调研分析,
2)得出对被测移动APP的测试方法,
3)制定有效的测试策略(而不是上来就是通过工具构造高并发,多线程虚拟用户,进行莫名其妙得测试)。
4)分析得出的数据,绘制折线图进行观察,分析性能缺陷,并推算出导致问题的原因。

敲字不易,如果此文章对你有帮助的话,点个赞收个藏,给作者一个鼓励。也方便你下次能够快速查找。

如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

END配套学习资源分享
最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

加入我的软件测试交流qq群:632880530免费获取~(同行大佬一起学术交流,每晚都有大佬直播分享技术知识点)

你可能感兴趣的:(自动化测试,软件测试,android,python,测试工具,职场和发展,软件测试)