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

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

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

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

1、前置步骤

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

步骤1:性能需求分析

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

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

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

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

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

步骤 3: 确定测试用例 KPI

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

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

平均响应时间
峰值响应时间
错误率
并发用户数
每秒请求数
吞吐量

步骤 4: 确定关键场景并确定优先级

大多数APP性能测试失败的一个常见原因是目标定义不明确。

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

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

App性能测试清单:

• 使用此APP需要多少 RAM?

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

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

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

• 确保APP不会崩溃。

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

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

• 确定最大并发用户数

• 检查app程序的极限

步骤5:在测试环境中使用模拟器、虚拟机和真机设备,测试APP

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

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

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

• 了解需要测试的App程序

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

• 构建测试设置

• 构建模拟器或模拟器

• 实际设置的原型

• 选择合适的测试工具

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

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

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

步骤 7: 考虑运营商网络的延迟和带宽

日常测试种会受到网络带宽和网络消耗及延迟的影响。移动设备通过第三方网络运营商连接到互联网,带宽和网络延迟可能会有所不同。因此需要在不同的网络条件下测试APP,以确保APP良好的运行,提供可靠的质量保证和改进的APP性能指标

流量

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

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

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

抖动

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

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

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

数据包丢失

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

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

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

2、测试执行——挑选移动应用性能测试工具

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

1)Appium【推荐,正文末附该工具学习资料】

Appium Studio 是一款免费的移动性能测试工具。它以其易于阅读和编写的代码界面、各种受支持的测试和独特的 XPath 而闻名。

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

2)Robotium

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

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

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

3)Selendroid

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

4)Sauce Labs

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

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

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

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

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

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

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

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

四、最后就是测试结果分析

1、测试结果报告:

测试完成后会,会生成报告,一般分为三个部分:

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

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

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

2、设备检测结果:

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

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

3、重要检测项:

首次启动时间:首次启动耗时下限设定为 4000ms;耗时过长,会导致用户看到的都是白屏或者内

容有缺失。建议检查加载过程中的所有操作,看是否存在请求数据耗时过长,或者一次性渲染数据过大的情况等。

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

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

• 是否成功安装

• 是否成功启动

• 是否有卡死现象

• 是否有崩溃现象

• 是否成功卸载

• 是否正常运行

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

4、生成测试报告

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

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

在整个测试场景的执行过程中,一要看:测试环境是否正常。
如果在测试过程中发生出现过异常,那么这样得出的结果往往不准确,无须进行分析。