学计算机的那个

不是我觉到、悟到,你给不了我,给了也拿不住;只有我觉到、悟到,才有可能做到,能做到的才是我的.

0%

【译】Improve Performance in Your iOS Applications 四

翻译几篇iOS性能优化的文章 ⅠV,这是本系列的第四篇文章,重点关注UI改进、代码改进、动画、视觉体验最佳实践等

有许多因素,包括速度、性能、UI交互等,对你的iOS应用的成功至关重要。缓慢和无响应的应用程序被用户所鄙视,因此在向公众发布之前进行彻底的测试是至关重要的。

本文中提到的技术旨在测试iOS应用程序的性能,可能需要iOS测试的基本知识;不过,本指南还将介绍测试的基本原理,以便您可以开始编写第一个测试用例。

在我们开始之前,先快速回顾一下本系列的前三篇文章……

本系列的第一篇文章展示了一些性能技巧,以帮助您改进iOS应用程序的编译时间,构建更快的应用程序,并专注于在构建系统中改进iOS性能。本系列的第二篇文章将讨论帮助您改进UI交互、媒体播放、动画和视觉效果等的性能提示—提供流畅和无缝的体验。在本系列的第3部分中,我将讨论通过现有代码库、模块化架构、利用代码中的可重用组件等优化iOS应用程序性能的技术。

性能测试基础知识

开发人员和测试人员在虚拟环境中审查和分析应用程序的性能,以预测当产品发布时用户将如何与产品交互。这意味着:

  • 应用程序在高流量(high traffic periods)期间的性能测试。
  • 糟糕的互联网接入可能会对应用的稳定性产生负面影响。
  • 与各种移动设备的兼容性。
  • 分析应用程序的整体性能。
  • 准确地发现和报告错误。
  • 对应用程序处理额外需求能力的评估。

当同时发生的用户或活动的数量增加时,开发人员可能需要查看后端服务器和网络请求的性能,并进行更改以保持整体用户体验的平稳。当流量很大时,了解应用程序的工作速度和系统的工作方式是很有帮助的。负载测试可以让您了解数据从后端服务器加载到iOS应用程序所需的时间。如果应用程序显示内容所需的时间超过几秒钟,则需要研究改进方法。

您可以通过应用程序的压力测试来评估应用程序的持久性,例如数据处理、响应速度和在无响应服务器等情况下的功能行为。这些数据可用于检测和修复应用程序瓶颈,从而提高应用程序性能。与压力测试一样,峰值测试包括增加需求,以查看应用程序是否会因为管理不当的大量数据而变慢,或者在某些情况下停止响应并崩溃,或者由于网络请求和响应的峰值(用户活动呈指数增长)而导致服务器崩溃。它可以帮助您确定服务器的加载能力,以及应用程序在关键场景中的行为。频繁出现用户峰值的应用需要进行峰值测试。

批量测试评估应用程序的总容量。此测试评估应用程序管理大量数据而不降低或丢失数据的能力。另一方面,容量测试可以识别用户在应用性能下降时所面临的困难。随着应用程序用户基数的增长,它的可靠性也会增加。

可伸缩性测试分析响应时间、每秒请求和事务处理速度,以确定后端服务器管理不断增加的工作负载的能力。虽然它不直接专注于测试你的iOS应用程序,但它肯定可以识别支持iOS应用程序的后端服务器的问题,以确保数据流的稳定性和整体用户体验。持久性测试衡量的是应用的长期性能。在耐力测试中,开发人员和测试人员长时间模拟强大的流量,以验证应用程序的稳定性。

iOS测试基础知识

第一步是了解在iOS中如何进行测试,以及如何开始测试iOS应用程序。要编写测试用例,你需要关注不同类型的测试:

  • 单元测试:测试一个不依赖于任何外部依赖的函数,如验证函数逻辑、验证电子邮件地址等。
  • UI测试:复制用户行为和操作,例如在应用程序中导航。
  • 集成测试:测试依赖于另一个函数的单个函数,例如,测试对本地文件或数据库调用的操作。
  • 性能测试:测试应用程序在实际使用过程中的表现,例如,加载一个非常大的图像结果列表。

首先,让我们用下面的例子来理解单元测试。下面的函数返回一个整数的阶乘。要测试下面的函数,可以运行这个示例并使用不同的数字测试它,例如4的阶乘等于24

1
2
3
4
5
6
7
func getFactorial(of num: Int) -> Int {
var fact = 1
for factor in 1...num {
fact = fact * factor
}
return fact
}

现在,为了自动化检查,让我们编写一个简单的函数,它将在逻辑上检查条件并返回相应的结果。

1
2
3
4
5
6
class getFactorialTest: XCTestCase {
func testGetFactorial() {
let factorial = (1...4).map(Double.init).reduce(1.0, *)
XCTAssertEqual(factorial, 24.0)
}
}

这段简单的代码在逻辑上检查阶乘是否正确,如果结果不正确,则测试失败。为了本文的简洁,接下来的部分将关注如何在iOS中运行测试来检查应用程序的性能。

总结

要获得可靠的结果,必须运行有意义的测试。不准确的测试结果可能会阻止应用程序的部署。如果你的程序不能为真正的用户工作,你的时间和金钱将被浪费,如果一个应用程序发布给公众时存在bug或性能问题,负面的在线评论可能会扼杀它的受欢迎程度。苹果生态系统和Android生态系统中的设备和操作系统如此多样化,以至于模拟器可能不足以对应用进行完整的测试覆盖。诸如AWS Device FarmKobitonHockeyapp等仿真工具可以让您比较软件版本或与竞争对手进行测试。您需要在模拟器和实际设备上测试应用程序的性能,以获得准确的移动用户体验数据。

参考

Part 4