编辑推荐
适读人群 : 本书适合从事移动 App 性能测评和优化的工程师阅读,内容有一定的技术深度和广度,建议读者在阅读本书的同时扩展阅读其他经典的技术类书籍。 1. 腾讯社交网络质量部吴凯华、《大话移动App测试》系列作者陈晔倾情作序,胡星、梁捷、杨俊峰等业内大牛联袂力荐。
2. 本书来自腾讯SNG专项测试团队多年来手机QQ、QQ空间、QQ音乐等项目沉淀下来的经典案例。
3. 从资源类性能的内存、CPU、磁盘、网络、电量和交互类性能的流畅度、响应时延等多个方向进行介绍,包含核心问题、实用工具、典型案例等,并提炼了移动性能专项的完整体系和标准。
4. 本书是Android APP性能和开发工程师的必备案头手册。
内容简介
本书从资源类性能中的内存、CPU、磁盘、网络、电量和交互类性能中的流畅度、响应时延,多个性能测评和优化的方向出发。每个方向,都会帮助读者深入浅出地学习必须要懂得的原理和概念,区分众多专项工具使用的场景和对应的使用方法;同时提炼总结不同类型的性能缺陷和对应的排查手段、定位方法和解决方案,透过真实的案例,让大家身临其境地快速学习;提供建立专项性能标准的武器与武器的来源,让读者能快速落地项目并产生成效。本书的最后,还会帮助读者从全新的角度学习如何应对专项测评要面对的两个基础问题:UI 自动化测试和竞品测试。
作者简介
本书的作者是来自腾讯 SNG 专项测试团队的工程师们,他们负责手机 QQ、QQ 空间、QQ 音乐等的性能评测与优化工作,在 App 的资源类性能、交互类性能的分析与优化上挖掘很深,累积了不少案例和经验。
精彩书评
这不是一本入门级导论,本书更像是一本AndroidApp性能工程师的一线测评和调优工作手记;对于经历过移动App开发和优化项目,于其中体会过教训经验的读者而言,阅读本书就像重温一条蜿蜒大河的泛舟游记,可以细细领略移动APP性能涉及的各个主要方面的核心问题、实用工具、典型案例,以及落地收益要点指引,一程一景中或能颔首回味,或能于旧景中看到新意。透过波光的折射留心观察,您还能时而发现分析思路、团队习惯、实用资源等点点金块藏于文字河床之中。
——胡星百度主任测试架构师
本书展示的性能调优技术对于想提升自己技术竞争力的开发者来说,是进一步理解Android系统和框架的一条相对清晰的途径。同一时间,本书通过专项技术这条路,让开发者和测试人员之间进行了更深层次的对话。
——梁捷UC联合创始人,神马搜索总裁
移动应用的性能十分重要,很多著名的公司内部都有数据显示性能不佳的应用会降低用户活性。可是众所周知,性能调试难度大,需要时间长。本书详细介绍了Android有关性能的各种系统特性和工具,为广大开发者提供了很好的帮助。
——杨峻峰NimbleDroid首席执行官,哥伦比亚大学教授
目录
第 1 部分 资源类性能
第 1 章 磁盘:最容易被忽略的性能洼地 2
1.1 原理 2
1.2 工具集 6
1.3 案例 A:手机 QQ 启动有 10 次重复读写 /proc/cpuinfo 16
1.4 案例 B:对于系统 API,只知其一造成重复写入 18
1.5 案例 C:手机 QQ 启动场景下主线程写文件 19
1.6 案例 D:Object Output Stream 4000 多次的写操作 20
1.7 案例 E:手机 QQ“健康中心”使用的 Buffer 太小 22
1.8 案例 F:手机 QQ 解压文件使用的 Buffer 太小 24
1.9 案例 G:刚创建好表,就做大量的查询操作 37
1.10 案例 H:重复打开数据库 39
1.11 案例 I:AUTOINCREMENT 可没有你想的那么简单 40
1.12 案例 J:Bitmap 解码,Google 没有告诉你的方面 45
1.13 专项标准:磁盘 48
第 2 章 内存:性能优化的终结者 50
2.1 原理 50
2.2 工具集 57
2.3 案例 A:内类是有危险的编码方式 103
2.4 案例 B:使用统一界面绘制服务的内存问题 106
2.5 案例 C:结构化消息点击通知产生的内存问题 109
2.6 案例 D:为了不卡,所以可能泄漏 110
2.7 案例 E:登录界面有内存问题吗 114
2.8 案例 F:使用 WifiManager 的内存问题 116
2.9 案例 G:把 WebView 类型泄漏装进垃圾桶进程 120
2.10 案例 H:定时器的内存问题 123
2.11 案例 I:FrameLayout.POSTDELAY 触发的内存问题 126
2.12 案例 J:关于图片解码配色设置的建议 129
2.13 案例 K:图片放错资源目录也会有内存问题 134
2.14 案例 L:寻找多余的内存――重复的头像 139
2.15 案例 M:大家伙要怎么才能进入小车库 144
2.16 Android 要纠正内存世界观了 149
2.17 专项标准:内存 152
第 3 章 网络:性能优化中的不可控因素 154
3.1 原理 154
3.2 工具集 157
3.3 案例 A:WebView 缓存使用中的坑 189
3.4 案例 B:离线包下载失败导致重复下载 196
3.5 案例 C:使用压缩策略优化资源流量 197
3.6 案例 D:手机 QQ 发图速度优化 202
3.7 案例 E:手机 QQ 在弱网下 PTT 重复发送 206
3.8 专项标准:网络 208
第 4 章 CPU:速度与负载的博弈 210
4.1 原理 210
4.2 工具集 211
4.3 案例 A:音乐播放后台的卡顿问题 215
4.4 案例 B:要注意 Android Java 中提供的低效 API 216
4.5 案例 C:用神器 renderscript 来减少你图像处理的 CPU 消耗 218
4.6 专项标准:CPU 220
第 5 章 电池:它只是结果不是原因221
5.1 原理 221
5.2 工具集 226
5.3 案例 A:QQWi-Fi 耗电 243
5.4 案例 B:QQ 数据上报逻辑优化 244
5.5 案例 C:动画没有及时释放 245
5.6 案例 D:间接调用 WakeLock 没有及时释放 246
5.7 案例 E:带兼容性属性的 WakeLock 释放的巨坑 251
5.8 专项标准:电池 253
第 2 部分 交互类性能
第 6 章 原理与工具集 255
6.1 原理 255
6.2 工具集 257
6.2.1 Perfbox 自研工具:Scrolltest 257
6.2.2 Systrace(分析) 260
6.2.3 Trace View(分析) 269
6.2.4 gfxinfo(分析) 271
6.2.5 Intel 的性能测试工具:UxTune(测评 + 分析) 273
6.2.6 Hierarchy Viewer(分析) 274
6.2.7 Slickr(测评 + 分析) 277
6.2.8 图形引擎分析神器――Adreno Profiler 工具使用说明 281
6.2.9 Chrome DevTool 286
第 7 章 流畅度:没有最流畅,只有更流畅 295
7.1 案例 A:红米手机 QQ 上的手机消息列表卡顿问题 295
7.2 案例 B:硬件加速中文字体渲染的坑 298
7.3 案例 C:圆角的前世今生 305
7.4 案例 D:让企鹅更优雅地传递火炬 312
7.5 案例 E:H5 页面卡顿,到底是谁闯的祸 314
7.6 专项标准:流畅度 320
第 8 章 响应时延:别让用户等待 322
8.1 案例 A:Android 应用发生黑屏的场景分析 322
8.2 案例 B:“首次打开聊天窗口”之痛 324
8.3 专项标准:响应时延 328
第 3 部分 其他事项
第 9 章 还应该知道的一些事儿 330
9.1 UI 自动化测试 330
9.2 专项竞品测试攻略 335
9.3 未来的未来 344
前言/序言
写在开头,送贾岛《剑客》诗一首:“十年磨一剑,霜刃未曾试。今日把似君,谁为不平事!”我们团队工作重心转到移动互联网领域已经好几年了,团队在移动领域测试技术积累可以说是从零基础开始的,几年来,配套的各类技术攻坚、工具平台建设都具备了很好的沉淀和规模,同时团队在这期间的自我实践提升和转变速度也非常快,如果自我吹捧一下,那么这就是一支优秀团队所具备的核心竞争力。这几年来,看着大家能不断探索攻克一个个难题并填坑,其实是一件很幸福开心的事情!这期间的学习、探索和实践,借用一句典故就是“工欲善其事,必先利其器”,我们都在说“磨刀不误砍柴工”,道理都是一致的,腾讯的专项技术测试团队从 2010 年开始组建,近 7 年来已经不断体现出其强大影响力和价值,成为了研发团队最坚实的战斗伙伴之一,而我们专项技术测试团队这几年也不断夯实了移动测试领域的重点攻坚领域、填补了几乎所有短板,并且也是努力从基础提升做起后到现在带来的结果体现!这好比在练武术时,早期教练会让学员练习扎马步,大家在健身房请私教时,会发现教练要求学员一定练深蹲,这些日久才能发挥威力体现基本功的基础动作,对武术提升和健身起到举足轻重的作用。我们团队过去持续保持平和心态,聚焦在短板上不断学习、钻研和沉淀,也在今天不断体现出了价值和给业务提供着重大支持。这是一支务实、踏实但又保持持续创新的团队,这也是我们团队的宝贵财富和一贯传承的管理思路。
每次看到行业里有新书出来时,我基本都会第一时间来了解获取,首先希望拜读理解作者的思路,然后看书内容里的技术实践深度,我这个人很懒又很挑剔,宁愿花很多时间来提炼内容写个 PPT 给大家做分享,也不愿花很多时间坐在电脑旁边码字、写出一摞看起来厚厚的很有“成就感”的文档来给人读,因此我是真心佩服那些能写出大部头书籍的同仁,过去几年里承蒙同仁抬爱,我给多本书写过序,虽然让我有些“愤愤然”,我是“作序君”嘛,但也总是很欣慰,佩服同仁和我的朋友 / 同事们熬夜码字的毅力,也佩服他们能抽丝剥茧,把自己的经验实践用一本书完整地呈现给读者的魄力。但其实我想说,写书本身是一件严肃的事情,也是把自己扒光了晾给大家看的一个过程,一本书如果东拼西凑,大部分内容要么是截图、纯图片,要么是“腾挪”了很多他人的内容,这种书其实出版出来也是体现了作者典型的“囊中羞涩”,此类书不出也罢,因为会食之无味,让读者读完基本没啥收获,反而浪费时间,误人子弟。
我们 SNG 专项技术测试团队这次要出版的书籍,我不想给予太多的赞美,不然就是在自我吹捧了,但毕竟这本书算是集我们团队之力的实践分享,同时也是团队工作日常点滴积累所得,希望对大家有用。本书所有内容产生的背景是日常工作开展过程中各个维度攻坚实践的过程,本书以看到问题—定位问题—解决问题—找共性—抽象化 / 平台工具化—提炼原理的方式积累呈现出来,每个维度每个领域的案例都是真实的,容不得取巧,更没有很多花哨的架子,放出来的是点滴积累出来的真实工作经验。初期来阅读时,很多行业同仁可能会觉着有点乱甚至晕,我建议先把书籍的目录章节仔细研究,梳理清楚这本书希望传递给大家的思想和体系,然后再有针对性地阅读和学习,这样才能事半功倍。
两年多前,整体回顾我们团队专项测试开展情况时,我勾画了一个所谓的“专项测试战略地图”,不过我们的团队属于有些“不按套路出牌的团队”,并没严格按我规划的在推进,或即使在推进,也并没老实地回头看这个“地图”,但让我们更开心的是团队自身的从下往上创新、创造的意识,使这期间诞生了很多创新型项目/工具,这其实是团队自己的“道”,非常值得鼓励,欣喜看到左冲右突的人在团队中大有人在,幸事!其实,让一个人的思想和行为不得自由的,有两个牢笼:一个是对过去的贪恋和自满,定死了自己的思维和进取;另一个是对未来的恐惧,以及对它的贪婪,定死了自己的勇敢和视野。打破这两个牢笼,会顿悟得“道”。我们在人际交往中,对一个人的评价经常因为生活中的小事情决定,这是因为一个人的秉性很难改变,不管是淳朴务实还是爱慕虚荣的表现,回归到工作上时,不外乎是持之以恒、不断聚焦和专业化,或是昙花一现、只做一时耀眼的流星,而很多人并没悟透这个最基本的道理。“逻辑思维”里说过一个小典故,僧侣得道前的日常作业是挑水、劈柴、做饭,得道后还是挑水、劈柴、做饭,做一行能做到如此才是“大道”。
今天我们走的这条路很不幸,不再有看板可以让我们比对,时代变化太快,过去的经验、经历未必还管用,未来的道路如何也无法预测,但这好比待在一个黑暗的道路上摸索前行,可能有很多弯路,可能不断跌倒,但只要有信念,坚定前行,无论荆棘坎坷,彼岸总会泛出微光指引我们不断前行,相信那也是我们心底最灿烂的光明之火!
腾讯社交网络质量部 吴凯华
推荐序二
现在的移动互联网是一个用户体验为王的时代,你的用户群会决定你的产品的成败。而移动无线测试中的专项测试就变得非常重要,功能和业务测试保证了一个产品的生命,而专项测试则能够延续一个产品的生命。
移动互联网到底是什么?带给老百姓的是生活的便捷,带给程序员的是新鲜的技术和更快的工作节奏。在早期大家都在谈论 Android、iOS 和 WP(Windows Phone),然后则开始谈论物联网。而如今神秘选手横扫全球围棋界,所有人都在讨论这个“选手”,结果AlphaGo 的出现让 2016 年成为了人工智能元年,也掀起了人工智能在人类历史上的第三次浪潮。
? 当我们还在用诺基亚砸核桃的时候,Android 和 iPhone 来了;
? 当我们以为移动支付只有支付宝的时候,微信支付来了;
? 当我们觉得二维码这项发明没有意义的时候,微信和支付宝等 App 狠狠地给了我们响亮的耳光;
? 当我们开始玩朋友圈的时候,公众号出现了;
? 当我们开始熟练使用公众号的时候,小程序来了;
? 当我们觉得 AR 没有什么实际的有黏度的用户场景的时候,Pokémon Go 让所有人都拿着手机扫全世界,甚至在美国的高架上还有专门的路标提示不要玩 PokémonGo;
? 当我们觉得手机只能用来打电话、玩游戏、支付、上网的时候,Google Cardboard让我们知道原来我们可以进入手机的世界;
? 当我们还沉浸在抨击VR还不成熟的时候,Vive、PSVR、Oculus等让我们欲罢不能;
? 当我们以为 Siri 已经能够打败人类的时候,AlphaGo 让我们明白其实人工智能才刚刚向人类发起挑战;
? 当我们在各个演唱会上面看到全息投影,觉得离我们还很遥远的时候,Gatebox 出现了(日本全息投影女管家)。
这一切的一切说明了移动互联网并没有具体的形态,它仅仅代表着一个高速发展的时代已经来了。我们很幸运,能够活着看到时代的发展和变迁,我们也会很累需要不停地去接受和面对挑战。
测试这个行业就如同移动互联网一样发展迅速,我们完全可以去用“当我们还在学习,使用 xxx 的时候,yyy 已经成为了新的宠儿”这样的句式,相信所有的互联网从业人员都会有这样的感受。综合这些年所有人问我的问题,我总结两点在这里给大家分享:
? 在这样一个社会中,不要浪费时间在思考,实践才能够抓住“红利期”。
? 不要纠结于先有鸡,还是先有蛋。很多人纠结于自己没有这个,没有那个,所以不够级别去做一些事情。想做了就去做,我们不应该等到自己达到了一个等级才去做事情,而是要在做事情的过程中让自己达到对应的级别。
专项测试这个概念出现时间其实并不长,但其重要性和普及率都是非常高的。我自己也是最早做专项测试的人员之一,深知其中需要填坑无数。从 2015 年开始很多公司起步做专项,但对于具体的方法和策略以及专项测试基线往往都不是很清楚,导致专项的测试投入产出比不高,大家都期望能够有一种统一的标准和方法出现。
移动专项测试是不是只有大公司才需要做呢?答案肯定是“当然不是”,任何一个关心用户体验的企业都应该关心、重视专项测试。纵览全书,这可以说是至今为止我看到过最详细的专项测试宝典。从书中的内容我能感受到的不仅仅是腾讯 SNG 专项测试团队做专项测试的认真专业的态度,更多的是一种孜孜不倦的探索精神。书中涉及的内存、磁盘I/O、电量、流量等方面的专项测试都会涵盖有案例、总结标准以及原理讲解。
再次感谢腾讯 SNG 专项测试团队能够为国内移动互联网行业产出这样一本专项测试宝典,我相信看到这本书的测试朋友都会像我一样欣喜若狂。在我看来,这本宝典不仅能够帮助更多企业的测试团队变得越来越专业,也对测试行业进步做出了不小的贡献。
书中最后提到,未来是什么?我们不是预言家,我们也不知道未来究竟是什么。但我们知道未来已经到来,你准备好了吗?在这样一个有的人每天在抱怨这个抱怨那个,有的人踏踏实实地在钻研技术,有的人有能力让影响力变现的时代,你是否明白自己要做什么?
你想成为什么样的人?最后奉上我一直很喜欢的一句话,与大家共勉。
“It's not who I am underneath, but it's what I do that defines me”
——黑暗骑士
《大话移动 App 测试》系列作者 陈晔
Android移动性能实战 电子书 下载 mobi epub pdf txt