移动应用性能测试剖析以及PerfDog与其他工具的对比分析11.22
商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处。
导语:
在IT、互联网及游戏行业,软件测试都是一个重要且不可或缺的过程,测试是软件生命周期中的一个重要阶段,是软件质量保证的关键步骤。目的是为了检验软件系统是否满足需求。随着中国IT、互联网及游戏产业的发展和市场的不断成熟,人们对软件功能的期望值也逐步增高,通常关注的指标包括,性能、可靠性以及最重要的质量缺陷等。几乎每个中大型IT企业的产品在发布前都需要大量的质量控制、测试和文档工作。这些企业也意识到测试的广度和深度决定了产品甚至企业的的生存周期。
———————————————————————————————————
不容置疑,在任何软件的测试过程中,性能测试都是一个很重要的环节,它直接影响了用户的体验和用户满意度。试想一下,我们打开一个手机APP要花费2分钟,打一个游戏不断的卡顿,使用一个视频通讯软件电量消耗极快,这些与我们生活密切相关的移动应用软件的性能都会影响我们的生活质量,直接的后果就是导致对于这些应用的抛弃。
同样对于开发这些应用的企业,产品迭代的周期越来越快,也要求我们的产品开发部门能快速的交付高质量的产品版本,而性能测试作为交付前的最后一个关键环节,如果测试时间过长或者性能测试场景覆盖不完整,会直接影响到产品的运营以及产生大量的客户投诉。对于开发和运营这些应用软件的厂商来说,失去的包括用户、市场以及口碑,而这些往往决定了企业的生存和发展。
对于性能测试的需求,其中最主要的需求来源是产品研发和测试部,测试工程师会结合行业的通用标准、实际的测试场景以及APP应用的独特性来形成大部分的性能测试用例,举一个常见的例子,比如我们的游戏APP软件,FPS(画面每秒传输帧数)、
游戏响应速度以及对于手机CPU和内存的实时占用都是一个很关键的指标,因此在游戏性能测试时尤为关注这几个指标的曲线变化,研发部门往往会根据行业标准及游戏特点来设置一个阀值上限,性能测试的目的就是要严格控制在游戏操作过程中一系列指标位于阀值之内。当然还有一些应用的性能测试需求是直接来源于客户、管理者以及在产品日常运营过程中的一系列消费者调研又或者是售后过程中反馈的投诉和建议。
综上所述,性能测试未来的发展趋势一定是高度的自动化、开发与测试线上协同、测试过程可追踪可管理的高效过程。
高度自动化的要求包括:性能测试过程工具化、工具智能化、性能测试结果自动化。
开发与测试线上协同包括:性能测试过程流程化、电子化、云化、多地协同。
测试过程可追踪可管理:支持对性能测试过程和结果数据进行追踪、统计分析和审计。
下面我们来分析一下手机APP性能测试的关键场景,主要可分为以下几类:
极限测试:要求在各类边界压力情况下,例如电池、存储、网速等,验证应用是否能正确响应。
响应能力测试:测试应用中的各种操作是否满足响应时间要求。
压力测试:在反复/长期操作情况下、对于系统的资源是否占用异常。
性能评估:评估在典型用户使用场景下,系统资源的使用情况。
Benchmark测试:与竞品的Benchmarking, 产品演变的对比测试。
APP性能测试的关键指标主要包括:响应、内存、CPU 、FPS、GPU过度渲染、耗电、耗流、手机版本号兼容性,屏幕分辨率兼容性,稳定性测试,安全测试、流量测试等)
———————————————————————————————————
APP性能测试的基本原理是在以上各种测试场景下通过监控APP的各项指标来识别和发现APP存在的代码质量问题并对程序进行修正和优化。而APP的性能测试工具正是基于这一过程的自动化需求应运而生。
APP性能测试的自动化工具市场上有很多,Android操作系统本身也提供了一些官方性能测试工具,包括:hierarchyviewer,主要检测布局复杂度,各视图的布局耗时情况;耗电量:Android开发者模式中的电量统计;
内存泄露检测工具:DDMS—MAT,等等,这些工具往往需要单独部署使用,没有很好的整合起来,并且安装、学习和使用耗费的时间成本较高。所以本文我们重点研究第三方的性能测试工具,主流的第三方工具包括leakcanary、Emmagee、itest、GT以及最近被热炒的PerfDog。
测试工具 | 测试指标 |
---|---|
leakcanary | 内存泄漏 |
GT Home | CPU、内存、流量、点亮、帧率/流畅度、查看开发日志、crash日志、抓取网络数据包、APP内部参数调试、真机代码耗时统计 |
iTest | cpu、内存、流量、电量等 |
Emmagee | cpu、内存、流量、电量等 |
PerfDog | cpu、内存、流量、电量等 |
提供厂商 | 目前收费 |
---|---|
square | 否 |
腾讯 | 否 |
淘宝 | 否 |
网易 | 否 |
腾讯 | 否 |
平台兼容 | 说明 |
---|---|
Android | 通过集成到程序中的方式,在程序运行时检测应用中存在的内存泄露,leancanry就是通过gc操作来检测内存泄露的 |
Android/IOS | 应用需要集成GT的sdk后,GT这个apk才能在应用运行时对各个性能进行检测 |
Android | Android自动化性能监控工具,能够记录特定应用的性能消耗情况, iTest不需要集成sdk到应用中,在itest中选中需要测试的应用即可进行测试; |
Android | Emmage和iTest一样,不需要在应用中集成sdk,能够对应用的常用性能指标进行检测,并以csv的格式保存方便查看应用的各项参数 |
Android/IOS | 移动全平台iOS/Android性能测试、分析工具平台。能快速定位和分析性能问题,提升APP应用和游戏的性能和品质。手机无需Root/越狱,手机硬件、游戏及APP应用也无需集成任何sdk,极简化即插即用。 |
从上面五款工具的对比我们可以看到,除了
leakcanary仅仅针对内存泄漏,其余各工具均能支持APP性能测试中的大部分指标项监测。从易用性方面,iTest/ Emmagee/
PerfDog明显略胜一筹,这三款工具不需要对APP再集成SDK即可对APP进行性能测试。而从平台兼容性看,GT
Home和PerfDog既支持Android又支持IOS系统,但是PerfDog更好,因为在真机上测试不需要ROOT和越狱。从厂商的影响力来看,GT
Home和PerfDog均来自腾讯,GT由MIG专项测试组开发,而PerfDog由腾讯游戏部门开发,而我们知道对于游戏的性能指标要求比一般的应用测试要求更加苛刻和严格。所以下面我们将重点放在PerfDog的关键功能和使用上。
———————————————————————————————————
PerfDog的下载和安装非常方便,查看https://perfdog.qq.com/support文章中的使用步骤一栏,我仅仅花了5分钟就已经安装完成并能实现USB和WIFI两种模式的APP监控了,无法言语的方便性。
接下来我选取了一个实际的APP进行性能测试和监控。打开PC端PerfDog并通过USB连接手机后如图,PerfDog能立即识别手机型号和各项系统参数:
然后选择设置->更多设置->权限管理->选择PerfDog,打开悬浮窗管理权限,这样在手机上监控应用时也能通过悬浮窗实时查看性能指标:
我选择了一款经常玩的游戏进行测试,街霸二,:-),这一看就是典型的80后玩的游戏,以前高中翘课逛游戏厅经常玩,每次都要通关,现在因为情怀一直未曾抛弃,看来我不仅怀旧还很专一,臭美下,
whatever,继续。开启游戏,我们马上能看到监控数据,PerfDog默认显示三个指标展示,FPS/CPU Usage/Memory
Usage。指标变化采用曲线图的方式展示,其中CPU Usage还显示了总共和当前APP的消耗对比,数据很全面。
在测试过程中可以针对游戏的不同操作或界面分别设置标签TAB,通过标签按钮给性能数据打标签,这里我设置了选择角色/游戏打斗两个标签:
接下来就是选择性能测试的指标,指标很全面,除了FPS/CPU/Memory,还包括CPU温度、电池消耗,以及ScreenShot在各个时点的截图等指标,下面是设置了ScreenShot截图的界面,以及各个指标项的选择界面。
当我在监控和记录了一定的数据之后,通过Record按钮可以保存到本地或者直接上传到PerfDog的云端服务器,这个记录保存和上传过程可随时进行。
———————————————————————————————————
PerfDog的云端和本地使用的是同一套账号,登录之后即可查看云端数据:
打开单个数据,显示非常详尽,各个指标不光是数据,而且有图形展示:
测试数据支持批注及标定,鼠标左键双击,增加批注,再次双击,则取消批注。鼠标左键单击,则增加标定,再次点击则重新标定。
还可设定性能参数统计分析阈值、编辑统计参数分析及框选记录保存, 可以通过鼠标框选/拖动查询时间周期内,统计数据等。同时可对框选数据进行保存。工具左侧“Setting”以设定对应的性能参数统计分析阈值等。
在云端还可以创建测试任务和对测试任务进行跟踪处理。
整个测试的过程感觉手机非常流畅,使用测试工具进行指标测试时丝毫感觉不到手机哪怕一丁点的卡顿,完全和平时正常玩游戏是一样,看了一下官网给出的数据:安卓平台比较关注的是工具本身对手机性能影响,我们在小米5手机上锁死最低频率。开启截图测试影响结果如下:
PerfDog性能影响:CPU占比6%-10%(正常频率下CPU占比1-3%)。
其他工具性能影响:CPU占比27%-33%。
———————————————————————————————————
整体评价下来,PerfDog的性能测试工具自动化和智能化程度都较高、云端数据管理可支撑开发和测试任务协同、测试指标全面、工具性能损耗较小、工具和平台简单易用。只是在对一些预设的场景考虑不足,比如针对压力、响应性能、极限等场景以及针对不同类的APP如游戏类、电商类、银行支付类,分别给出行业最佳实践的性能指标参考值,并能进行实时对比分析。还需要根据各类指标监控的数据问题,如CPU过高、过热的原因预设置一些处理方案和代码的排查方法,那就perfect了。最后总结一句,如果你在做APP性能测试,还在使用原始的方法或者其他工具,不妨试用下PerfDog,一定能对你有所帮助。
————————————————————————————————————
PerfDog是由WeTest腾讯质量开放平台发行的移动全平台iOS\Android性能测试工具平台,能快速定位分析性能问题,提升APP应用及游戏性能和品质,手机无需ROOT/越狱,手机硬件、游戏及应用无需做任何更改,极简化即插即用。
扫码即刻加群 与2000+测试同行深度交流
PerfDog官网:perfdog.qq.com
腾讯WeTest官网:wetest.qq.com
PerfDog交流群:602206842
移动应用性能测试剖析以及PerfDog与其他工具的对比分析11.22的更多相关文章
- Spring缓存源码剖析:(一)工具选择
从本篇开始对Spring 4.3.6版本中Cache部分做一次深度剖析.剖析过程中会对其中使用到的设计模式以及原则进行分析.相信对设计内功修炼必定大有好处. 一.环境及工具 IntelliJ IDEA ...
- 原理剖析-Netty之服务端启动工作原理分析(下)
一.大致介绍 1.由于篇幅过长难以发布,所以本章节接着上一节来的,上一章节为[原理剖析(第 010 篇)Netty之服务端启动工作原理分析(上)]: 2.那么本章节就继续分析Netty的服务端启动,分 ...
- Python 深入剖析SocketServer模块(一)(V2.7.11)
一.简介(翻译) 通用socket server 类 该模块尽力从各种不同的方面定义server: 对于socket-based servers: -- address family: ...
- 深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地
相信很多软件开发人员们对今年国内新兴的云端开发工具——华为软件开发云都有耳闻,有些人可能还免费体验过,由于它5人以下的团队是免费使用的,很庆幸本人的这个项目正好5个人,就注册使用了.下面就自己的使用心 ...
- [转]以Facebook为案例剖析科技公司应有的工具文化
原文:http://36kr.com/p/146507.html 这是一篇几年前的文章,但对于没有涉及到工具文化这个概念的人来说,还是很新的. 前言 前段时间和大众点评的 CEO 张涛聊天的时候碰到内 ...
- 以Facebook为案例剖析科技公司应有的工具文化
http://www.36kr.com/p/146507.html 编者按:本文由 @王淮Harry哥 撰写,摘自他即将出版的新书.王淮是 Facebook 早期员工,中国藉第二位工程师第一位研发经理 ...
- C++ 性能剖析 (三):Heap Object对比 Stack (auto) Object
通常认为,性能的改进是90 ~ 10 规则, 即10%的代码要对90%的性能问题负责.做过大型软件工程的程序员一般都知道这个概念. 然而对于软件工程师来说,有些性能问题是不可原谅的,无论它们属于10% ...
- 测者的性能测试手册:Web压力测试工具webbench
webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便. 1.适用系统:Linux 2.编译安装: wget http:/ ...
- Spark2.3(三十五)Spark Structured Streaming源代码剖析(从CSDN和Github中看到别人分析的源代码的文章值得收藏)
从CSDN中读取到关于spark structured streaming源代码分析不错的几篇文章 spark源码分析--事件总线LiveListenerBus spark事件总线的核心是LiveLi ...
随机推荐
- C++ 面向对象程序设计复习大纲
这是我在准备C++考试时整理的提纲,如果是通过搜索引擎搜索到这篇博客的师弟师妹,建议还是先参照PPT和课本,这个大纲也不是很准确,自己总结会更有收获,多去理解含义,不要死记硬背,否则遇到概念辨析题会 ...
- Oracle - SPM固定执行计划(二)
一.前言 前面文章(https://www.cnblogs.com/ddzj01/p/11365541.html)给大家介绍了当一条sql有多个执行计划时,如何通过spm去绑定其中一条执行计划.本文将 ...
- docker采用Dockerfile安装jdk1.8案例
1 获取一个简单的Docker系统镜像,并建立一个容器. 这里我选择下载CentOS镜像 docker pull centos 通过docker tag命令将下载的CentOS镜像名称换成centos ...
- 平时代码中用不到设计模式?Are you kidding me?
引子 平时我是个反应非常慢的人.有多慢呢?大概是两年前有次团队内部开会时,我听到同学说平时代码中用不到设计模式,我当时没有回答.两年后我终于反应过来了:“Are you kidding me?我每天都 ...
- 在Ubuntu上安装Miniconda
在Ubuntu上安装Miniconda Anaconda是一个开源的Python包管理器,而Miniconda则是轻量级的Anaconda 下载地址:https://docs.conda.io/en/ ...
- [靶场实战]:SQL注入-显错注入
SQL注入的本质:就是将用户输入的数据当作代码带入执行. 注入条件: 1.用户能控制输入 2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行 首先检查是否存在注入点 Rank1: 构造语句 ? ...
- Linux系统学习 五、网络基础—网络通信协议
OSI/ISO七层模型和TCP/IP四层模型 网络层协议和IP划分 OSI的七层框架 物理层:设备之间的比特流的传输.物理接口.电气特性等. 数据链路层:成帧.用MAC地址访问媒介.错误检测与修正. ...
- vue自定义指令笔记
https://cn.vuejs.org/v2/guide/custom-directive.html 在vue中,有时候我们会把抽象的方法封装为一个自定义指令,多个地方共用 比如:拖拽指令 < ...
- win7 Adobe flash player 无法在线更新
1.win7 Adobe flash player 无法在线更新,提示应用程序初始化错误 解决方法: 1.https://www.flash.cn/看一下支持的版本,网上找对应版本离线包下载安装即可 ...
- Linux下安装redis报错信息
redis在Linux安装报错 标签: redislinuxcentos 2017-02-24 13:46 384人阅读 评论(0) 收藏 举报 分类: Linux安装工具(2) 版权声明:本文为 ...