移动App性能测评与优化导读-阿里云开发者社区

开发者社区> 华章出版社> 正文

移动App性能测评与优化导读

简介:
前  言 Preface
写作背景
当前移动设备越来越多地涌现在我们日常生活中,像网络购物、充值缴费、新闻资讯、理财、团购、车辆保养等都可以通过移动设备来搞定。通过移动设备可以帮助人们更便捷高效地完成很多事,同时越来越多的需求也希望能通过移动设备来完成,这样也催生了很多工作机会,让IT技术人员能开发更多的App来满足不同用户的不同需求。相对于传统PC,移动设备有其自身的特点,如屏幕小、移动网络复杂且需要收费、电量有限等。因此,在完成用户一系列需求的背后,我们也面临一系列的问题。比如说,如何能保证开发的App内存开销低?如何保证App在功能不变的情况下足够省电?如何做到页面滑动流畅顺滑?如何保证网络开销尽可能的低?等等。
上面一系列的问题,我们都曾经遇到过,写这本书的目的也是希望能将我们团队在“如何开发高性能质量App”上探索的经验和成果分享给读者,将我们在团队中碰到的真实案例总结出来,给做移动互联网应用的研发团队,包括测试团队,提供参考。
在我们团队的工作过程中,经常会碰到上面的问题,刚开始是和有研究探索过的前辈交流,再自己不断地实践、升华、提炼。后面也出现其他团队的人来咨询交流,再者,团队内部人员也会不断地流动,新人的加入,也需要资深的同事将积累的经验提供给新人不断学习。这样,出于以上各种原因,越来越觉得很有必要将团队近几年在移动互联网应用开发中,如何进行评测调优的实践经验总结出来。先是内部收集大家手上案例并沉淀,发现大家负责的专题都不一样,虽然零散但都很有价值,因此萌生了写书的念头。正好可以借写书将我们做过的优秀案例梳理总结出来,包括其中走过的弯路,踩过的坑都展现给大家。
本书内容
我们将日常工作中优化的案例按不同的纬度划分总结,总计有六个专题方向和最后一个自研的随身调测工具GT。六个专题研究方向分别是:内存、电量、流畅度、导航、网络优化和应用安装包瘦身。每个专题对应一章的内容,通篇都有案例说明,重点在讲述问题解决的思路,以及过程中碰到的问题,同时也介绍了移动应用测试的方法等。下面针对每个章节做一下基本的介绍,读者可以通过介绍了解该章讲述的基本内容。
第1章是内存篇,介绍了各种内存使用情况分析的方法和一些优化技巧。使读者能够准确地了解应用内存的消耗情况,找出存在的内存问题,并在开发过程中尽量节约使用内存。
第2章是电量篇,本章从app层面到rom层面,从硬件测试方法到软件测试方法,结合多个案例从多方面介绍电量测试的切入点和测试方法以及测试原理。介绍了基本的硬件测试方法;介绍了GT、PowerStat、Battery Historian等软件测试方法;以及一种通过大数据去分析用户异常耗电场进而景制定优化策略的测试思路;总结了一些在功耗测试中的优化经验。
第3章是流畅度篇,介绍了android流畅度的测试和优化方法。一开始先介绍评测APP流畅度的方法,结合我们实际的测试经验,阐述FPS在流畅度测试中的不足之处,然后针对FPS的不足,讨论我们如何对测试方法进行改进,从而使得我们的测试方法能够准确地反映出当前APP的流畅度情况。接着结合具体的案例,阐述我们如何对Android APP的流畅度进行测试以及优化。最后总结我们在实践中的流畅度优化方法,这些方法针对Android大部分的APP都具有通用性。
第4章是导航篇,介绍了路线规划,语音播报这两个导航中最重要模块的测试方法和经验。导航类评测的难点在于,case无穷尽;单看自家产品的结果很难给出优劣的评价;人工评测费时费力,达不到足够的量。我们通过后台日志筛选了用户访问量大的case,作为评测的case,以有限的量尽可能覆盖更多的用户。利用多个产品进行对比,更容易发现产品的好坏。我们还提出了几种自动化评测的方案,提高了评测效率,也提升了评测的量。
第5章是网络篇,重点介绍了我们团队网络优化的两个案例。一个是提升上传速度和成功率的“鱼翅项目”,重点讲解了在移动网络环境下如何根据一次次的实验结果,来一步步改进优化算法,最终提炼出了能应对网络质量瞬息万变的鱼翅算法;另一个是某产品流量优化项目,重点讲解了流量测试方法、自动化测试的经验以及提炼出的流量优化的通用方法。在两个案例中都详细分享了我们解决问题的思路,相信这些思考问题的方法能给大家在网络优化以及其他方面深入开展工作带来一些启发。
第6章是应用安装包瘦身篇,结合一个瘦身实际案例介绍了当前常用的瘦身方法、瘦身工具以及瘦身过程中的技巧。
第7章是工具篇,通过前面章节介绍的测试探索与实践,我们已经积累了比较丰富的测试经验,但在实践时经常发现,市面上很难找到能够满足特点测试需求或提高测试效率的工具来辅助测试活动,所以我们就需要自己动手来实现这样的工具。像我们团队开发的可以公开的工具目前有APT、GT、PowerStats,不同的工具适用于不同的测试场景。各有不同的使用限制,其中以GT的适用性最广。本章将以GT为例,先讨论开发测试工具的初心:即“什么时候是开发一个工具的恰当时机?”“我们需要解决什么样的问题?”“我们如何决定工具的形态?”这三个问题,然后对GT的基础能力在实际调测活动中起到的作用进行简要的论证。
谁适合阅读本书
本书介绍了在移动应用体验中用户关心的几类痛点,如内存、流量、电量、流畅度等,从现象到本质,利用什么工具,发现什么问题,抽丝剥茧,直追代码,找出问题的根因。每章通过一系列的案例描述移动应用的测试及优化的方法,并提供相应问题的解决方案。本书最后一章讲解了测试利器GT,通过GT工具能够让测试更灵活,让开发更透明。
本书可能适合下面这些人:
希望通过代码从本质上解决性能问题的开发人员。通过本书规范开发设计工作,减少性能开销,保证开发高质量的App。
希望提高质量、发现性能问题的测试人员。利用本书提供的方法以及思路,查找负责测试App的性能问题,并提供开发人员相应问题如何解决的参考案例。
希望针对新领域进行专题研究的团队负责人。可以参考我们在成立专题研究时,如何进行问题的剖析、探索和实践。
希望从事测试相关行业的新手。通过本书了解目前在移动App上的专项测试维度有哪些,测试工作是如何开展的。
对腾讯移动品质中心(TMQ)专项测试团队感兴趣的同行。可以通过本书了解我们团队在测试方面的一些思考和尝试。
本书阅读建议
本书中第1章到第6章从移动App各个不同维度进行专题研究、深入分析,因此,没有很明显的顺序关系,读者可以根据需要参考的维度或感兴趣的维度,查找相应的章节,进行阅读。
书中最后一章介绍我们团队自研的一款脱机测试工具GT。对于GT使用的各种问题或内部原理感兴趣的,可以直接阅读第7章。
关于作者
本书的作者是来自腾讯移动品质中心(TMQ)专项测试团队的资深测试工程师们,他们长期负责腾讯公司部分重要的手机应用(手机浏览器、手机管家、应用宝、腾讯地图等)的性能评测与优化工作。在App的内存、电量、流量、流畅度、网络、安装包大小等核心性能维度,积累了相当丰富的评测、优化经验。
主要编著成员有:蒋翠翠、李金涛、廖志、廖海珍、罗家润、马蕾、秦守强、文娟、阳文彬、叶方正、翟翌华、张媛、张志伟(按拼音顺序排列)。
TMQ(腾讯移动品质中心)是腾讯最早专注在移动APP测试的团队。TMQ微信公众号专注于移动测试技术精华,饱含腾讯多款亿级APP的品质秘密,文章皆独家原创,我们不谈虚的,只谈干货!欢迎扫描二维码关注我们。

                                                             TMQ深圳
特别感谢
李金涛致谢:
感谢腾讯MIG应用宝项目组的支持和帮助,让我们的想法得以在应用宝上落地和实现!感谢廖志和叶方正两位Leader的指导,在我们遇到难点时及时帮助和协调!感谢跟我一起做应用宝安装包瘦身的小伙伴王洋、曹荣丽、周茜以及开发和设计同学,大家一起通力合作才达成我们的目标!
廖志致谢:
这辈子最想感谢的人是我的外公陈光煜老先生,他不仅尽力给予了我童年最好的教育,而且用他的言传身教教会了我为人正直。
其次,我要感谢我的外婆赵碧君老太太,她不仅含辛茹苦地帮助我母亲把我抚养成人,也用她自身的言行教会了我善良。当然,我也要感谢生我养我无私奉献她近乎所有给我的母亲陈正伟,希望她能一直健康、快乐的安享晚年。
再次,我自然要感谢全力支持我工作的妻子王维,若不是她在家撑起半边天、用心教育我们的儿子廖紫安,我就没有足够的时间去思考、探索和沉淀我的各项测试技术经验。
最后,我想对五年来一路相伴、并肩战斗的专项测试团队的兄弟姐妹们真心说一句:我爱你们,你们是最棒的!
廖海珍致谢:
作为主编,首先感谢各位章节书写的负责人和领导麦克,廖叔。写书的工作历时很长,近半年了,大家都是靠工作之外的时间来做,而且期间经过几轮思考,又不断的要求调整修改文章布局和细节,感谢各位的支持。通过大家克服各种工作忙,时间不够,文笔如何表达优化思路等困难,才能将整本书完成。致以:写内存篇的张志伟、蒋翠翠,写电量篇的阳文彬、张媛,写流畅度篇的罗家润、叶方正,写导航篇的马蕾、文娟,写网络优化篇的廖志、翟翌华,写应用安装包瘦身篇的李金涛,写工具GT篇的秦守强,在此表示深深的感激。
其次,也要感谢当时周末非工作时间和我一起讨论书的脉络的罗小松,两个小时的碰撞,书的架构原型产生了。众人拾柴火焰高,就是和小松,还有后面麦克,廖叔,不断的讨论交流,才慢慢形成了这本书的主要架构。其实,早期设计中他也有一部分的写作工作,后面为了突出各案例技术点,内容做了调整,将他负责的章节砍掉了。还有张媛,因为我的时间安排不开,让她帮忙修改写了网络优化部分内容,后来因为有更适合的表达方式,将她修改的都作废了,一并感谢。
最后,感谢我的老公王士伟和孩子开开。刚开始启动写书的时候,作为主编,觉得需要这么多人一起协助,还有安排各种组织讨论工作,而且又不是擅长的领域,第一次做,个人表示亚历山大。最初自己也尝试写了网络优化部分的初稿,写了30页快写崩溃了,当时很迷茫,不确定是否能把书写完,感谢老公不断的鼓励和孩子给我带来的快乐,让我更有动力和自信完成写书大业。
罗家润致谢:
首先感谢专项组对我的培养和帮助。其次要感谢麦克,流畅度这块的测试一开始都是麦克带我着做的,教会了我很多东西。最后感谢耿大师和曹老师,流畅度里的案例大部分工作都是和他们一起完成的。
马蕾致谢:
感谢专项组和地图组所有小伙伴们一直以来对我工作的支持和帮助。感谢廖叔和超姐对专项测试方向的指导和建议。感谢家里的两只鹦鹉乖乖和萌萌一直以来的陪伴。
秦守强致谢:
感谢GT用户交流群里的各位业界朋友,正是他们旺盛的好奇心推动了GT这个工具产品的不断演进,这才有了本书中GT的相关内容。
文娟致谢:
首先,感谢专项组和地图组的小伙伴们给予的支持和鼓励,感谢廖叔提供诱导专项优化的机会以及对我的指导,感谢项目建立初期参与调研的小洪同学,还有在整个过程中给我提供各种意见和建议的allison,以及提供工具支持的金涛和明明。
再次,感谢家人的陪伴。
叶方正致谢:
感谢所有有目标、有理想的人。
翟翌华致谢:
首先感谢我的Leader廖叔,在工作中他开阔的思路,追求极致的工作方式,给了我不少帮助,得益于他的指导,我的网络流量优化项目开展得井井有条,做到了极致,得到了项目组的大力认可,个人也得到了快速的成长。
其次也要感谢项目参与者罗家润、王洋、朱明,我们都投入了很多精力在网络流量优化项目上,所有的成果都是属于大家的,也感谢组内所有给与我帮助的同事们,项目组氛围非常融洽,大家和睦得像一家人。
最后感谢我的老婆和孩子,家庭方面老婆付出了很多,才使得我能更专心的投入工作,感谢你们对我工作的理解,最后把这本书送给你们,我最爱的老婆周洋和儿子帅帅。
张媛致谢:
感谢我的同事袁建发。文中提到的PowerStat2.0工具,是在他之前开发的电量分析工具基础之上再次开发并优化完善的。工具对实际项目的电量测试分析起到了很大的作用。
张志伟致谢:
感谢我的家人,有他们的陪伴我才能完成书里的内容。献给乐乐!





Contents 目  录
前言
第1章 越用越卡为哪般—降低待机内存
1.1 新手入门
1.2 规范测试流程及常见等问题        
1.2.1 测试流程
1.2.2 Dalvik Heap的常见问题
1.2.3 示例
1.2.4 新的问题
1.3 新问题的进一步挖掘
1.3.1 Dalvik Heap内部机制
1.3.2 问题所在
1.3.3 优化Dalvik内存碎片
1.4 进阶:内存原理
1.4.1 从物理内存到应用
1.4.2 smaps
1.4.3 zygote共享内存机制
1.4.4 多进程应用
1.5 案例:优化dex相关内存
1.5.1 从class对象说起
1.5.2 一个类的内存消耗
1.5.3 dex mmap
1.5.4 dex文件优化
1.6 本章小结
第2章 手机发烫是为何—降低耗电量
2.1 电量测试方法
2.1.1 硬件测试
2.1.2 软件测试
2.2.1 优化方法一:CPU时间片
2.2.2 优化方法二:wake lock
2.2.3 优化方法三:传感器
2.2.4 优化方法四:云省电策略
2.3 本章小结
第3章 怎样才能如丝般顺滑—流畅度评测
3.1 流畅度评测方法介绍
3.2 流畅度
3.3 真的?用SM就够了吗
3.4 流畅度优化案例
3.4.1 通过SM评估App的流畅度
3.4.2 从最简单的UI层优化入手
3.4.3 Lint扫描,发现代码中的流畅度性能问题
3.4.4 优化App的逻辑层
3.4.5 优化App的IO层
3.4.6 流畅度优化经验
3.5 本章小结
第4章 坑爹的路线如何破—导航评测
4.1 路线规划评测
4.1.1 路测,人工评测,还是自动化
4.1.2 选择测试用例
4.1.3 寻找bad case的判断准则
4.1.4 判断路线是否相似
4.1.5 自动化评测方案—无路况版
4.1.6 自动化评测方案—路况版
4.1.7 特殊情况
4.1.8 展望
4.2 播报诱导评测
4.2.1 播报诱导常用测试方法:路测
4.2.2 室内评测是否能代替路测
4.2.3 耳听为虚,眼见为实
4.2.4 找到更多不好的用例
4.2.5 评测平台的建成
4.2.6 评测用例的优化
4.2.7 让评测更快,更好,更准
4.3 本章小结
第5章 修一条时刻畅通的高速路—网络优化
5.1 上传速度和成功率的优化
5.1.1 任务背景及方案雏形
5.1.2 鱼翅的要点
5.1.3 探索过程中的经验与思考
5.2 流量优化
5.2.1 摸清现状
5.2.2 优化精简
5.2.3 持续监控
5.2.4 优化过程中的经验与思考
5.3 本章小结
第6章 苗条才是美—应用安装包瘦身
6.1 瘦身的方向选择
6.2 案例:瘦成一道闪电
6.2.1 代码部分
6.2.2 资源部分
6.2.3 极限压缩zip
6.3 本章小结
第7章 工欲善其事必先利其器—打造趁手的测试工具GT
7.1 初心
7.1.1 选择恰当的时机
7.1.2 需要解决的问题
7.1.3 决定工具的形态
7.2 在实践中发挥作用
7.2.1 CPU
7.2.2 Jiffies
7.2.3 电量
7.2.4 流畅度和FPS
7.2.5 内存
7.3 工具的获取
7.4 GT使用
7.4.1 GT在场测中
7.4.2 GT在自动化测试中
7.5 本章小结

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接