移动端性能测试概述_tsr106的博客-程序员信息网

技术标签: 移动端自动化测试  APP性能测试  性能测试  移动性能测试  APP测试  

随着移动设备的普及和使用范围越来越广,APP的性能测试变的越来越重要。比起之前的性能测试,APP性能测试有着自己的特色和KPI,难度也随之增加。
APP的自动化测试工具发展跟不上设备的发展速度,虽然有不少工具提供了设备模拟器来运行程序,但是和真机测试有较大差异,基本只能作为功能性测试使用。好消息就是,有些厂商提供了在线的真机自动化测试方案。

和传统测试的差异
1. 移动站点:和传统的只是一个普通的手机站不同(WAP站),随着HTML5的兴起和智能设备开放的传感器接口,移动站点很多时候很像一个APP,但依然使用的是HTTP或者HTTPS协议,从协议来说,很多测试和之前的WEB测试差异并不大。
2. 本地化APP:APP的测试最为复杂,虽然开发环境如DDMS XCODE都自带有一定性能测试测试功能,但主要是单APP运行时的性能测试,是在并发、压力等方面薄弱,且因为移动测试远不如传统测试发展的时间长,因此很多专项工具很匮乏,需要自动开发或者借助传统性能测试工具实现。
3. 混合型:APP加移动站的形式实现,很多移动端并不是单独的APP或者移动站点,而是混合使用,比如LINKEDIN的APP,本地化APP用来做UI,大量的内容是以移动站的形式放到云端, APP向网站请求网页数据,然后在APP端展现给客户。测试这类APP的时候,更为复杂,因为需要同时测试移动站和APP的。

移动测试分类:
系统分类
黑莓:小众类,非特殊原因,国内一般不需要测试
IOS:重要的分类
Android:重要分类
WINDOES PHONE:此OS依然属于小众,市场占用率低。

测试项分类:
我们暂不讨论和传统性能测试重叠的部分
- 电量消耗测试:当下智能设备的电池依然是瓶颈,一般手机只能支撑1天左右的使用,加之现在各种电源消耗监控软件,一个耗电量高的APP非常容易被用户投诉或者流失用户。即便是QQ,曾经也因电量问题,而遭到用户的大量抱怨,因此电量消耗测试必不可少。较为简单的电量测试方法,用很干净的手机,将第三方APP全部卸载,后台不要运行其他程序,从充足的100%电量开始测试,监测电量消耗。
- 网络测试:一般大家更多在关注APP的健壮性、服务器的负载能力、各手机系统兼容性、电池等,同时也要重视手机网络下的数据传输,这个很影响用户体验。网络的不稳定容易导致一些问题,如:
- 程序未知异常:如程序无响应,异常退出、程序未处理的网络异常、前后不一致。
- 交互异常:如图片显示不完整、信息显示不全、、传输超时、信息显示错乱等.
- 数据库异常:客户端和服务器传输信息时,如果不注意保证两边存储的信息一致性,就很容易导致数据不一致,导致异常。
- 性能测试难度大:数据传输异常时,需要花费时间进行异常数据处理,因此丢包、抖动、有限的带宽,对性能影响很大。性能测试就需要在各种网络环境下进行测试。
- 功能问题:网络传输的异常可能会导致客户端和服务器的不一致问题,如UI和数据,这些会导致功能问题。

随着4G的发展,移动设备大多通过蜂窝网络(手机网络)进行联网,虽然WIFI已经非常普遍,但是并不是随时都拥有WIFI信号。
手机网络基本分为:WAN 无线WAN WIFI 2G GPRS 3G 4G 运营商分为:电信 联通 移动, 网络特点:
移动网络特点:有高延迟、抖动、丢包、包错误、包重排序等特点。
信号不稳定:信号覆盖存在死角问题,有些区域信号覆盖不到或者很差,比如地铁、电梯、公司或家里的特定地点,这就导致连接会随时中断。
传输时数据丢失:通过手机网络传输时,容易遇到网络阻塞等问题从而导致数据丢失,即使使用TCP/IP,数据丢失依然影响用户的使用体验。如果处理不好数据丢失问题,很容易造成一系列用户体验问题,比如无响应、功能失常等问题。
带宽窄:4G以下一般都存在网络速度慢的问题,4G的信号覆盖也存在不稳定问题,经常被切换到3G, WIFI一般被多人连接和共享,因此并不是WIFI速度就会很快。
连接不可靠(蜂窝网络在打电话的时候大多会断网,而电话随时又都可能进来,加之很多人在行进的时候使用手机,因此信号存在不稳定,从而导致连接的不稳定),
速度不稳定、高延迟(2G和3G网络非常慢,但是使用者很多,4G虽然快,但是4G信号的覆盖存在问题),因此性能测试时,对网络的测试非常重要。双11天猫的顺利运行,其负责人就说,他们保证了网络很差的情况下,依然保持了浏览的顺滑。
3. 移动的网络问题存在,如果移动端不使用异步设计,不谨慎考虑网络问题,很容易导致性能和使用体验的滑铁卢。如果用户感觉到没有及时得到响应,很可能不是继续等待信息,而是重新请求,很容易导致服务器指数倍数的增加负载,造成恶性循环。

网络仿真测试很难克服的困难(这些困难也是性能测试的挑战):
- 真实网络出现问题时,因为当时网络环境很复杂或一些信息没有记录完整,导致问题很难复现
- 难以完整搭建出类似真实网络的测试环境。
- 无法完整覆盖真实网络中的各项网络设置。
- 测试人员无法真实在各地进行真实网络测试。

测试项 测试内容
网络性能测试 模拟真实网络的环境,如随时波动的带宽(网速)、网络类型(WIFI/3G/GPRS/4G/EDGE,还有中国特色的跨网),注意用户在各种网络下的使用体验
网络阻塞测试 APP应该测试各种业务场景下的数据包丢失,特别是重要的场景
多网络测试 使用手机时,很可能不断的在各种网络环境切换,如在使用APP时,在3G/2G/4G/WIFI网络之间进行切换
真实环境测试 应该尽量在真实环境中进行覆盖测试

使用工具:各公司一般使用工具不同,简单的如linux的“tc”命令,微软的模拟器(Network Emulator for Windows Toolkit),具体使用方法请自行查询资料, 复杂的有网络模拟器,如infosys的Windtunnel 以及FACEBOOK的网络流量控制工具ATC “https://github.com/facebook/augmented-traffic-control“,以后有时间的时候 进行具体介绍。

移动端性能测试准备:
测试移动端性能之前,我们要先将要测试的内容进行抽象,抽象出两大类
1. 设备相关测试:虽然IT行业很重视跨平台、跨浏览器,但有些功能是需要强设备相关的,比如指纹、支付等。设备品牌不同、型号不同、OS版本不同、浏览器不同,其结果就可能不同。这对于性能测试是个很大挑战。
2. API测试(设备无关,抽象成API测试):APP使用API相互之间、和服务器之间进行交互,性能测试时,对这些API提取出来,并根据测试场景,分析其使用方法和压力情况,设计出合理的性能测试方法。API的性能测试和传统的API性能测试较为雷同。

测试设计
依据是否关注在移动端在真机的性能表现分为:监测APP在真机性能和不监测APP在真机性能。
1. 不监测APP在真机性能:一般来说是需要监测APP在真机性能,但并不是全部的,上面我们有说过,有些是网页形式的,这时主要是测试移动WEB网页的性能, 而不是APP真机性能。
移动站点:测试移动站点的时候需要使用浏览器,但是浏览器和电脑的浏览器不同,需要使用移动浏览器来测试,中国市场的移动浏览器主要为:UC QQ 百度 360 谷歌浏览器, 海外市场的占有率请自行查资料。
这里写图片描述
测试移动站时,需要模拟移动浏览器,服务器是依靠HTTP请求头的”User-Agent”字段值来区分浏览器类型, 不同的浏览器其User-Agent是不同的, 有的测试工具可以自定义此字段值, 可以通过自定义此字段值来模拟各个浏览器.
移动APP: APP的各项功能都是一个个函数组成的, 将APP的功能抽象到API中, 通过脚本调用API来实现性能测试.
2. 监测真机性能: 测试并发和负载的真机性能时,不可能使用大量的真机进行测试, 我们可以使用少量真机并配合自动化脚本. 用自动化测试脚本调用API或HTTP请求,形成大规模测试, 再使用少量真机访问服务, 记录KPI数据,并观测其反应. 各IDE和OS都提供了基本的一些性能检测功能, 能够满足一般的性能需求.

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/tsr106/article/details/50196561

智能推荐

接私活可用的 Springboot + Vue 快速开发框架_我是ed.的博客-程序员信息网_vue+spring boot私活

接私活可用的 Springboot + Vue 快速开发框架推荐两个使用起来不错的可以在空余时间接私活的快速开发框架。第一个 Jeecg BootJeecgBoot是一款基于SpringBoot+代码生成器的快速开发平台!采用前后端分离架构:SpringBoot,Mybatis,Shiro,JWT,Vue&Ant Design。强大的代码生成器让前端和后台代码一键生成,不需要写任何代码,保持jeecg一贯的强大,绝对是全栈开发福音!!JeecgBoot在提高UI能力的同时,降低了前后分

网络设备自动巡检工具(二)——主界面和设备列表的设计【2020-10-27】_燃烧生命0209的博客-程序员信息网_网络设备巡检工具

网络设备自动巡检工具(二)——主界面和设备列表的设计今天主要工作是建立项目、设计用户数据表、设计巡检设备数据表和设计主界面,Visual FoxPro建立项目是非常方便的,不用费多少功夫项目建立如下。用户数据表就是登录工具的人员认证,由于安全的考虑,所有工具类软件必须密码认证后才能登录操作。用户人员表只录入一个超级用户做调试使用。巡检设备列表的建立比较复杂,主要字段有这几类,设备基本信息、设备登录信息、设备资产信息和设备管理信息等。由于是工具类软件,界面主旨是简洁化、集中化,所以主界

win10下 + cuda10.2 + 双目相机zed 2i sdk的安装_cuda sdk_积极向上的mr.d的博客-程序员信息网

zed 2i 环境搭建本实验用的是pycharm平台,python3.7,主要讲解zed 2i sdk的安装以及遇到的问题我们实验之前已经装好了pycharm,anaconda,实验中用的是cuda10.2,cudnn10.2,sdk10.2(cudnn、zed sdk版本与cuda一定要对应)首先需要检查电脑NVIDIA版本是否支持cuda,具体方法如下:回到桌面->空白处右击->NVIAIA控制面板->系统信息->组件可以看到我电脑支持cuda10.2查看电脑适合

福利来了!程序员单身交友群,来了!__findyi的博客-程序员信息网_程序员交友

很早之前我就答应要给公众号的单身妹子找男朋友,也答应了给公众号的单身程序员同胞找妹子,但是一直没执行。在之前我推文的时候,好几位女读者,要求我必须在今年帮助她们实现找到程序员男朋友的愿望。背负着巨大的压力,我来了!刚知道好友甲哥正好在做程序员脱单这块的产品,并且已经帮很多程序员完成脱单,必须推荐给大家,以下是甲哥对程序员单身交友群的介绍:这次我给大家建立了程序员单身交友群!群里面有来自京东、腾讯、头条、华为、携程、美团、网易、小米的程序员们,有来自平安科技、慕课网、宝马、蘑菇街的运营、开发妹子们。

android 笔记本推荐 2015年,5千内适合Android开发的笔记本电脑大推荐_weixin_39906358的博客-程序员信息网

题主如果想玩android开发,那么应该要装Eclipse和AVD的了,这两个空载启动,大概就要1GB以上的内存,如果写写代码,编译一下,那么最低最低内存配置也要4GB了,CPU越高越好。如果题主要玩JSP的话,那么前端调试用Chrome(这玩意的开发者工具还是不错的,一般学Web后端的人,肯定也得学前端)应该还是不错的。如果想在开发的同时顺便开下Chrome查下资料,那么Chrome是个无底洞,...

浅谈一下我对Android实现人脸认证登录的认识_赏金术士的博客-程序员信息网_android 人脸识别登录

1.什么是人脸认证登录?(简称TRFA:Tencent Research Face Authentication)是由腾讯研究院研制的。 从功能上来看,人脸认证登录系统是基于终端摄像头的一种身份加密技术,其核心为人脸识别技术。它通过视频扫描来确认使用者的身份。用户在进入登录界面时,终端将自动通过摄像头将用户图像传入人脸识别系统,系统对人脸特征进行分析鉴定后,确定用户是否合法。2.人脸...

随便推点

【无线网络技术专题(五)】Wi-Fi信号满格网速就一定快吗?_网络工程师大彭的博客-程序员信息网

任何企业都离不开无线网络,无线网络技术已经成为网工必备技能。因此,开此无线专题,暂定12篇内容,主要是普及无线基础知识及典型无线场景,不涉及具体设备配置。典型配置案例后续再开设专题分享!希望对大家有帮助!

借剑_pl2597758的博客-程序员信息网

--------------------------------------------------------------------------------Writing Your Own Packer - by BigBoote --------------------------------------------------------------------------------In

有关计算机的论文参考外文文献,最新计算机论文参考文献 计算机外文文献怎么找..._今年也要加油呀的博客-程序员信息网

精选了【100个】关于最新计算机论文参考文献供您后续的写作参考,在写计算机论文之前,很多大学生总是被计算机外文文献怎么找难倒怎么办?请阅读本文!一、计算机论文参考文献范文[1]集成电路发展对抗恶劣环境计算机的影响与对策.朱天成,2013全国抗恶劣环境计算机第二十三届学术年会[2]可信计算在弹载计算机上的实现方法研究.王可,2013全国抗恶劣环境计算机第二十三届学术年会[3]适应海上环境计算机需求分...

Python seaborn 条形图_Rp_的博客-程序员信息网

Python seaborn条形图import seaborn as snsname_list = []time_list = []plt.grid()plt.xlabel('名字')plt.ylabel('本周迟到时长/min')plt.title('%s迟到榜' % week_index)sns.barplot(x=name_list, y=time_list, ci=...

neo4j在ubuntu18.04下的安装以及环境配置_CaptainSG的博客-程序员信息网

下载版本: 4.0.4以上是neo4j官网。国内下载速度可能比较慢。非服务器解决:使用远程服务器下载后再拷贝;或者有双系统或者虚拟机,使用迅雷下载。安装直接解压到指定目录即可;我的放在了/usr/local/neo4j目录下;直接在/usr/local/neo4j/bin下,执行./neo4j console或者直接执行./neo4j 命令,根据提示执行配置全局变量vi ~/.bashrc在最后添加export NEO4J=/usr/local/neo4j/binexpor..

推荐文章

热门文章

相关标签