移动应用性能测试白皮书

前言

下文中说的手机测试范围不包含短信和电话功能,而是指用于通信功能之外的其他应用。如今手机已经成为大多数人的日常必需品。手机的使用量逐年增加,运行在手机上的应用也层出不穷。除了处理通常的电话和短信之外,人们也开始用手机来拓展业务,联络亲友,扩展职业圈,玩游戏,打广告,买卖商品。手机和其他移动平台的重要性不容小觑,各大商家已经开始着手开发手机版的产品,抢占这块重要的细分市场。当今时代,手机软件和网站已经成为人们从事商业活动,提高雇员业绩和接触目标市场的主要途径。

以下统计数据显示在这个智能化的时代手机应用的重要性:

  • 截止2011年底,全球共有87%的人口(60亿)拥有手机,其中10亿拥有智能手机
  • 22%手机用户每个月至少用手机上网一次
  • 34%的美国用户和28%欧洲用户在手机上使用超过一种移动应用
  • 预计到2014年,手机上网的总量将超过电脑
  • 尼尔森2012年的报道显示,智能手机64%的时间在运行多种应用程序
  • 2011年,全球移动应用下载量约300亿
  • 91%美国智能手机用户平均每天花费2.7小时访问社交应用程序,是他们平均吃饭时间的两倍,睡眠时间的三分之一
  • 6亿Facebook用户中,三分之一用户通过手机访问,1.65亿Twitter用户中,一半的用户通过移动设备登录,而大约每天有2亿Youtube用户通过移动设备登录

移动应用的使用量和重要性与日俱增,用户体验的要求也越来越高。与桌面程序相比,移动应用耗电小,速度慢,但手机用户却希望享受到与桌面程序同样的加载速度。

我们在此将探讨移动应用的重要性,移动app的性能测试的难点,移动app与桌面应用的异同,移动app的种类,对移动app进行压力测试和性能调优的基本方法。

移动应用的类别

移动应用按架构可分成三大类。要做好性能测试的, 有必要了解各种应用的种类和内部架构。我们来分别介绍一下各类app的基本情况。

本地应用

需要从网上商店下载并安装在特定移动设备上的可划分到这一类。这类应用由特定编程语言(例如安卓系统上用的Java和iOS系统上用的Object-C)编写,结合特定移动设备的开放API。用户将这种应用安装到移动设备上之后,无需连接到互联网就能使用。游戏应用程序和从网上商店下载的app就是很好的例子。

联网应用

通过移动设备上的浏览器访问的应用叫做联网应用。这类应用是通过网络技术如HTML,JQuery和JavaScript开发的。热门社交网站,如Facebook(http://m.facebook.com)和Gmail(http://m.gmail.com)等都专门开发了基于移动设备的联网应用,倍受移动用户亲睐。

混合应用

联网应用和本地应用的结合被称作混合型应用。在这类应用里,联网应用被内嵌到本地移动应用中。用户界面像本地应用,内容却需要联网加载。安装在移动设备上的Facebook,Linkedin和Twitter应用是这类“本地界面,联网内容”的最佳典范。

提高移动应用性能的重要性

随着手机使用量的增加,手机性能的重要性也日益显著。手机用户对性能期望非常高,希望手机应用能像在电脑上运行那么快。据统计:

  • 71%用户希望在手机上打开网页能同电脑上一样快
  • 5秒钟被认为是用户能忍受的最长响应时间
  • 如果响应时间超过5秒,74%上网用户和50%移动应用用户会放弃
  • 三分之一失望的用户会转向竞争对手的应用

通常,手机用户会尝试两次,如果第三次依然出现同样问题,半数人再也不会使用该应用。比起桌面程序,手机应用的架构更加复杂,可用资源相对更少,提高和维持快速的响应时间比桌面程序更困难。

测试移动应用的挑战

做好性能测试,从来就不是一件简单容易的事。搭建与生产环境相同的性能测试环境一直是做性能测试的第一步,也是很重要的一步。然而,由于其复杂的架构,测试手机程序和网站显得更加困难。要覆盖到不同种类(联网,本地和混合应用)、不同平台(iOS,安卓等等)和不同网络环境(Wifi,2G,3G,3G+,4G LTE)也是手机测试面临的一大难题。下面介绍一下几个手机性能测试相关的主要难题。

模拟移动网络的互联网连接

与桌面程序的高带宽相比,大多数手机用户使用的3G,3G+和4G LTE网络更慢,无线连接更差。性能测试要模拟不同手机网络的接入情况,这对性能测试人员来说并非易事。

移动设备种类繁多

市面上有成千上万手机厂商,每个手机厂商倾向于使用不同的操作系统和手机配置。而且,即便是同一个品牌的手机,也有无数的影响因素,每个手机模型都有特定的配置,比如操作系统,处理器,内存和屏幕尺寸等等。测试手机应用时,这些因素或多或少都应该被考虑到,绝对不是件轻松的事。面对这种情况,选择一中功能够用的性能测试工具变得越来越重要。

用户数量巨大

随着时间的推移,使用智能手机商务应用的用户会急剧增加,越来越多的用户会通过手机处理重要业务。用户数量增加,相应的网络应用也需要增加。你不仅仅要满足现有用户需要,还要适时地增加新功能,这对任何手机应用都是极其重要的。

桌面端网络应用和手机应用的差别

不管是桌面端网络应用还是手机应该,性能测试的基本原理是相似的,尤其是对于手机网络应用的测试。两者使用相同的技术,你也不用为手机应用选择特别的性能测试工具。测试工具只需要具备基本的性能测试能力,测试人员基本上会用就行了。尽管如此,手机应用和桌面应用还是有如下几个本质上的区别:

客户端模式

传统网络应用运行在胖客户端上,而手机应用使用的是瘦客户端。胖客户端直接从服务器端访问应用,而不像瘦客户端那样需要将数据通过信号塔中转,因而它比瘦客户端吞吐量更大,速度更快。

网络带宽

网络带宽在性能中担当重要角色,现今的桌面端应用极大地得益于高速网络。移动网路也在带宽方面不断进步,不过任然无法与前者相提并论。大多数用户在低于3G或4G的网络下使用手机,应用的会话时间延长,用户的响应时间也响应增加,同时也消耗了更多电量。相比桌面应用,带宽是导致手机应用性能差的最大原因。

数据传送

与桌面端应用强大的CS架构不同,手机数据得依靠信号塔传送到用户设备上。信号塔之间的数据传送一直以来都很慢,也使得手机应用性能变差。

设备电量

网络应用可以借助桌面电脑的高速处理器和内存最大化地提高性能,然而移动设备的资源却非常有限。移动设备只能依靠有限的电池和内存资源。

操作方式

不像桌面应用那样通过点击鼠标来操作,移动设备使用手指操作从而获得更好的用户体验。手指操作不如鼠标来得快。何况,设备其实需要将触摸动作翻译成点击。

数据使用

在移动网路中,流量是收费的。数据缓存技术是桌面应用中提高用户体验的常用手段,但由于流量限制,此项技术在移动应用中无法实现。

性能指标

由于架构不同,网络和移动应用的性能指标也有些许差别。除了常规指标如响应时间和资源利用量之外,还需要监控电池消耗、二进制大小等等。

手机性能测试基础和最佳实践

本地手机应用脚本的录制

你需要一个移动设备或模拟器来录制用户在本机移动应用上的操作。为了测试应用的性能而录制用户操作,需要暂时关闭移动设备或模拟器上的其他网络流量。你需要一个额外的设备来记录手机或模拟器上的流量,而这个设备可以代替移动设备或模拟器接入互联网。如果用来录制的设备是运行在防火墙之后的,那就不可能获得从3G或4G网络里的流量记录。

解决这个问题的方法是将移动设备设置为代理录制器。强制让数据从录制代理里通过,就可以直接用移动设备来录制用户操作。

网络手机应用脚本的录制

从手机网络应用抓取用户操作与桌面网络应用相似,因为两者沿用了类似的架构。为简单起见,可以用桌面网页浏览器来录制移动网络应用的用户操作。不过,你需要修改用户请求,伪装成是来自移动设备而不是桌面电脑。浏览器插件可以修改用户代理,让请求看起来像是通过移动设备发出的。除此之外,最新的桌面网页浏览器需要支持最新的移动应用技术如HTML5等等。

混合移动应用脚本的录制

就像手机网络应用一样,桌面网页浏览器也可以用来录制各种各样的混合移动应用。你可以直接浏览到该手机应用的URL地址,然后做性能测试,就像测试单纯的网络应用一样。

准确评估应用程序的性能,必须识别并模拟最类似现实情况的设置。合理的负载模型是实现预期效果的关键。不同用户的互联网接入情况不尽相同(例如,Wifi,3G和4G),成功的性能测试必须覆盖所有的情况。所有流行的手机应用性能测试工具都可以模拟真实世界的各种网络连接。

另外,根据具体的功能,模拟不同地理区域的大用户负责也很重要。好的性能测试工具像AgileLoad可以借助基于云的性能测试模拟不同地理位置的大用户负载。

测试的执行过程是被监控的,在所有针对不同用户负载的应用程序响应被测试完之后,其结果也会对比事先定义好的服务水平协议得到全面的分析。好的性能测试工具如AgileLoad,也提供问题诊断功能,帮你找出根本原因从而快速解决。

移动应用性能优化技术

移动应用的性能优化技术取决于特定的应用极其瓶颈特性。我们在这里分享几个通用的优化移动应用性能的技巧:

  • 减少客户端到服务器的HTTP请求数量,可以缩短页面加载时间
  • 将JavaScript和CSS打包成文件并在多个页面之间共享,也是优化性能的好办法
  • 尽管浏览器缓存在移动应用上不那么凑效,但可以用HTML5的网页存储技术替代
  • 使用内嵌脚本资源,链接引用会极大地延长加载时间
  • 压缩或尽量减少界面资源,少占带宽,也能提高速度
  • 根据屏幕尺寸裁剪图像, 不仅能减小图片大小,还能提高处理速度

总结

移动应用日益普及,其重要性也日益增加,这已是不争的事实。优秀的用户体验将成为让用户驻足的原因之一。移动应用的性能测试原理与传统桌面应用并无二致。但是,要全面测试移动应用的性能参数,测试人员需要理解各种移动应用的架构和它们与桌面应用的根本区别,例如带宽,处理器,屏幕尺寸等等。

时间: 2024-10-05 22:20:27

移动应用性能测试白皮书的相关文章

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

一些牛人榜样,多看看他们写的东西

都是很老的内容了.无聊的时候看下,激励一下 淘宝技术委员会是由淘宝技术部高级技术人员组成的一个组织,共分为系统分会.  算法分会. C/C++分会.Java分会.数据分会.UED分会.测试分会七个分会. 淘宝技术委员会的愿景是淘宝成为技术人才向往的乐土,高级技术人员的发源地:技术委员会的使命是帮助淘宝建立业界一流的技术团队.同时,技术委员会也是技术人员间交流技术和想法的一个平台.我们努力让淘宝成为技术的舞台,我们为愿意从事互联网事业的技术人一个接触世界上顶尖网站架构的机会!我们期待着和一群有着挑

上周热点回顾(12.15-12.21)

热点随笔: · 分享12306抢票心得-最终篇([email protected])· 让姑姑不再划拳 码农也要有原则 : SOLID via C#(小九的学堂)· 我的权限设计实现(MVC4+Bootstrap+ PetaPoco+Spring.Net)(Murphyli)· Android Studio 1.0.1 + Genymotion安卓模拟器打造高效安卓开发环境(雲霏霏)· 随便写写2014创业记(一)(贺臣)· 我和程序猿的故事1(我是爱哭鬼)· 程序猿是如何解决SQLServer

牛人,多看看他们写的东西

计算机大师 Donald E. Knuth(高德纳) 算法大师,我最崇拜的计算机科学家,没有之一!不认识高爷爷的人别说自己是学计算机的.<The Art of Computer Programming>绝对是计算机科学的圣经.对高爷爷的崇敬,对编程艺术境界的向往,指引我不断的追求计算机的“艺术”,没有高爷爷的算法艺术就我 就不会进入计算机这个领域.高爷爷是我在计算机领域的指路人. 斯坦福大学:http://www-cs-faculty.stanford.edu/~knuth/ Jeffrey

测试牛人

测试牛人: 公直(黄利). 2004年毕业于北航,先后在大唐软件和上海微创软件任职,经历电信BOSS项目.MSN MX.MAA等项目的数据中心部署测试.功能测试.性能测试等项目.2008年8月加入淘宝,主要经历,负责广告技术基础平台产品测试:负责淘宝-阿里云合作项目飞天夸父项目的测试:负责淘宝广告技术测试工具研发:关键字(熟悉的领域):测试工具.自动化测试.敏捷测试. 丘虚(郑昌丘). 2008年加入淘宝,2009年负责研发了淘宝的测试平台获2009淘宝年度创新大奖二等奖;2010年负责建立了淘

接口性能测试方案 白皮书 V1.0

一. 性能测试术语解释 1. 响应时间 响应时间即从应用系统发出请求开始,到客户端接收到最后一个字节数据为止所消耗的时间.响应时间按软件的特点再可以细分,如对于一个 C/S 软件的响应时间可以细分为网络传输时间.应用服务器处理时间.数据库服务器处理时间.另外客户端自身也存在着解析时间.界面绘制呈现时间等. 响应时间主要站在客户端角度来看的一个性能指标,它是用户最关心.并且容易感知到的一个性能指标. 2. 吞吐率 吞吐率指单位时间内系统处理用户的请求数,从业务角度看,吞吐率可以用每秒请求数.每秒事

支付宝的性能测试

一.性能测试支付宝场景介绍 2013年双11过程当中,促销开启的第一分钟内支付宝的交易总额就突破了一亿元,短时间内大量用户涌入的情况下,如何保证用户的支付顺畅,是对支付宝应用系统的一个极大的挑战. 支付宝的性能测试场景分为性能基线测试,项目性能测试. 任意一笔交易过来,我们都需要对交易进行风险扫描,对于有可能是账户盗用的交易,我们会把这笔支付直接拒绝掉,或者通过手机校验码等方式进行风险释放. 相关厂商内容 白皮书下载:发布管理的痛点与最佳实践 百度技术沙龙第五十四期:人工智能技术应用(2014年

《2016上半年APP测试白皮书》:平均每款应用存在41个问题

2016年已过半,目前,经过几年高速发展后的国内市场移动互联网用户量已经趋于饱和,这让想要在该行业先发制人.出奇制胜的机会已经一去不复返.究竟App如今存在哪些方面的质量问题,不同类别的应用需要关注的内容是否相同?看似普通的兼容性测试又有哪些被人忽略却至关重要的关键点?这些问题就是阻碍你在这片拼杀激烈的商业红海中站住脚跟的关键. 继<2016年上半年手游测试数据分析报告>后,TestBird再次重磅推出<2016上半年App测试白皮书>(以下简称白皮书),希望通过上半年总共测试的2

app性能测试【通过loadrunner录制】

随着智能手机近年来的快速增长,从游戏娱乐到移动办公的各式各样的手机APP软件渗透到我们的生活中,对于大型的手机APP测试不仅要关注它的功能性.易用性还要关注它的性能,最近发现LoadRunner12可以对手机APP做性能测试,但由于LoadRunner12还没有破解版最多只有50个并发用户,所以我用LoadRunner12录制手机APP的脚本后放到LoadRunner8.0里进行压测,LoadRunner8.0可并发10000个用户. 1.下载CCProxy代理服务器,安装运行该软件用来检测本机