Android移动性能实战
  • 推荐0
  • 收藏7
  • 浏览3.5K

Android移动性能实战

腾讯SNG专项测试团队 (作者)  徐津平 (责任编辑)

  • 书  号:978-7-121-31064-5
  • 出版日期:2017-04-20
  • 页  数:360
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 维护人:付睿
电子书 ¥49.00
购买电子书
纸质版 ¥79.00
本书从资源类性能中的内存、CPU、磁盘、网络、电量和交互类性能中的流畅度、响应时延,多个性能测评和优化的方向出发。每个方向,都会帮助读者深入浅出地学习必须要懂得的原理和概念,区分众多专项工具使用的场景和对应的使用方法;同时提炼总结不同类型的性能缺陷和对应的排查手段、定位方法和解决方案,透过真实的案例,让大家身临其境地快速学习;提供建立专项性能标准的武器与武器的来源,让读者能快速落地项目并产生成效。本书的最后,还会帮助读者从全新的角度学习如何应对专项测评要面对的两个基础问题:UI 自动化测试和竞品测试。
本书适合从事移动 App 性能测评和优化的工程师阅读,内容有一定的技术深度和广度,建议读者在阅读本书的同时扩展阅读其他经典的技术类书籍。
腾讯SNG专项测试团队编著,来自手机QQ、QQ空间、QQ音乐等项目沉淀下来的经典案例,内容丰富全面,是App性能和开发工程师的必备案头手册
本书的作者是来自腾讯 SNG 专项测试团队的工程师们,他们负责手机 QQ、QQ 空间、QQ 音乐等的性能评测与优化工作,在 App 的资源类性能、交互类性能的分析与优化上挖掘很深,累积了不少案例和经验。
前言
为什么会有这本书
记得笔者从微博和 MAC QQ 项目中解放出来后,就开始接手手机 QQ,组建专项测试团队。那时有几个小伙伴,我们一起做手机 QQ 的专项测试,发现推动专项问题解决非常困难。产品的需求压力巨大,性能越来越差,我们开始用更严厉的标准像守护者一样守护手机 QQ,例如安装包的大小。接手后的第一个手机 QQ 版本,涨了 10MB,这使我们看到了风险,顶着各部门的 KPI 需求,我们制定了一系列严厉的指标,超过的需求都不允许通过,从此安装包大小刹住了车。但 KPI 的压力巨大,像是洪水,不排解,堤坝只能越建越高,我们的压力也越来越大。产品经理开始不断地问,为什么安装包不能变大呢?为什么不能占用更多的内存?我提供更多服务,为什么不能消耗更多的流量? Why ? Why not ?
在这些质疑中,我们经历了许多,除了工具、流程之外,更多带给我们的是真实的经验。例如,安装包不能再变大了。这里需要证据,运营同事找到了应用宝的数据,发现有不少用户是通过 3G 网络下载安装包的,另外安装包大小对下载失败率也有影响。在跟老板汇报过数据后,我们拍定了更严厉的标准:0 增长。慢慢地随着我们团队人数的增加,类似这样的故事也越来越多。跟大家想象的一样,其中有跟开发人员的 PK、有不服输自己去解决专项 Bug 的、有跟产品经理 PK 需求、与专项性能平衡的,等等。但是知道故事的人并不多,知道“为什么”的人就更少了。我们觉得这些故事应该被记录下来和分享出去,然后就有了本书。本书中会介绍工具、原理,但更重要的是提供了一个个真实的案例、Bug 解决方案。
谁适合阅读本书
以下职位的小伙伴们适合阅读本书。
• 终端专项测试:这个职位的测试人员,负责产品的性能、安全、稳定性、兼容性等各个方面。我们希望你通过阅读本书,可以有效地归纳总结知识、拓展思路,也可以作为你在专项测试领域的一本“字典”,随时翻查。
• 终端系统测试:这个职位的测试人员,需要全面负责功能测试、专项测试等各个方面,利用合适的测试策略发现和预防风险。而专项测试是测试本身一个空间最广阔、蕴含知识最丰富的分支,学习和了解专项测试,对系统测试人员本身职业生涯的发展有着不可或缺的重要作用,也有利于制定出最合适的测试策略。
• 高级终端开发:终端开发人员必然需要面对许多性能上的难题,本书希望成为你的一部指南书。还有,必须要说,越是高级的终端开发人员,越是需要啃硬骨头,而专项恰巧就是这个硬骨头。
另外,产品经理不能看这本书吗?答案是能。因为不懂测试的开发不是好的产品经理。
如何利用本书
本书力求做到以下三点。
第一,通过结构化的知识体系,让读者在心中建立起性能专项的知识体系。希望做到“授之以渔”,所以我们会从资源类性能和交互类性能入手。
第二,案例均来自手机QQ、QQ空间、QQ音乐等的真实项目案例,结合工具集和原理,希望让读者对其中的技巧和知识使用更加得心应手。
第三,提炼专项标准。在测试行业中,很多测试人员都需要有标准在背后支撑,特别是对于性能这些不黑不白的事情。虽然制定让人信服的标准很难,但我们愿意踏出这一步。
因此大家阅读的时候会发现,为了上面的三点,本书的大部分章节会分为原理、工具集、案例、专项标准四部分来介绍。
原理 主要是为了说明一些不脱离实际的实用的基础知识。因为有好的基础知识,才能 PK 得过开发人员,说服得了产品经理,用“专业知识”武装自己。
工具集 工欲善其事,必先利其器。但工具那么多,该选哪个呢?根据我们的经验,本书中对工具做了不同纬度的分类,助你消灭选择恐惧症。
案例 按照分析专项问题的思路来划分我们的案例,我们力求做到让读者可以举一反三。
专项标准 会从原则、标准、优先级、来源等来描述。原则像是宪法,在没有对应的具体标准的时候,可遵循原则。标准更多是直接从案例中提炼的规则,可直接操作落地。优先级和来源都是为了让大家推动标准的时候更有把握。
在开始性能专项之旅之前
为了坚定你把这本稍微晦涩难懂的书读完的信心,笔者必须让你弄清楚性能的重要性和这本书将会告诉你些什么。下面,先从几个不同的角度来谈谈性能的重要性。
首先,性能是基础功能。这句话不是我说的,是 Pony Ma 在一次大会上说的,即使不算终端性能,也都能印证这句话的正确性。其中最经典的例子就是 PC 的传文件功能。对于这个功能来说,在不同的网络环境下,尽可能地利用好带宽,保证成功率和提升传输速度就是这个功能的描述。而对性能的不断打磨,也让这个功能成为用户使用 QQ 的重要原因之一。所以产品经理要升级,要打怪通关,怎么能忽略性能呢?
其次,性能可以给予更多丰富用户体验的空间,也可以彻底破坏用户体验。这里举两个例子。第一个例子,过年时候,上了一个有强迫症的功能,口令红包。这个功能就相当于一次对于客户端的消息压测,会带来前所未有的性能压力,幸好聊天窗口的性能还不错,才能承载起来。第二个例子,内存中 OOM 会带来 crash,卡顿到了极端会 ANR,这些都会严重破坏用户体验。
最后,性能可以直接跟钱产生关系,可以省钱也可以费钱。关于省钱,例如手机 QQ的部分业务功能切换为使用 WebP 来压缩图片,这不仅节省了用户流量,更重要的是从带宽费用上为公司节省了不少支出。关于费钱,例如 http content length 设置错误带来的重复下载,就会浪费用户流量,甚至可能导致一次让公司损失大量金钱的事故。
移动专项性能是一个完整的体系,如图 1 所示的 Android 性能专项地图,它涉及很多方面知识,作为移动专项的一个重要分支,包括资源类性能、交互类性能两个方面,所以本书将从这两个方面,依据图1中的脉络,讲述这些重要的案例、经验和工具,让你快速成长。
致谢
本书的作者是来自腾讯 SNG 专项测试团队的工程师们,他们负责手机 QQ、QQ 空间、
QQ 音乐等的性能评测与优化工作,在 App 的资源类性能、交互类性能的分析与优化上挖
掘很深,积累了不少案例和经验。
主要编著成员有:黄闻欣、杨阳、丁铎、谭力、付越、付云雷、黄天琳、欧阳霞、唐
志彬、樊林。
感谢吴凯华、肖衡、邱俊、汪斐、石延龙、张金旭、闫石、潘在亮、刘海锋、周文乐、
李昶博和其余专项测试团队成员的鼎力支持。
读者服务
轻松注册成为博文视点社区用户(www.broadview.com.cn),您即可享受以下服务。
• 提交勘误:您对书中内容的修改意见可在【提交勘误】处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
• 与作者交流:在页面下方【读者评论】处留下您的疑问或观点,与作者和其他读者一同学习交流。
页面入口:http://www.broadview.com.cn/31064

目录

目录
第 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:圆角的前世今生 304
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 专项竞品测试攻略 334
9.3 未来的未来 344

本书勘误

印次
  • 页码:69  •  行数:1  •  印次: 1  •  修订印次: 3

    在这评论么?书里面的Finder工具在哪可以获得?Eclipse市场上没有发现

    好吧,为了让作者看到我只好找个错误了
    2.1.5图片缓存 拼写错误 WeekReference - > WeakReference

    sgact 提交于 2017/12/14 16:06:27
    付睿 确认于 2018/1/3 11:36:09

读者评论

  • 同问,Finder工具在哪里?

    505175712@qq.com发表于 2020/10/29 10:27:27
  • 纸质书买了,电子书有优惠?

    Jensonss发表于 2017/6/16 17:33:35

电子书版本

  • Epub
  • Mobi

相关博文

  • 磁盘:最容易被忽略的性能洼地

    磁盘:最容易被忽略的性能洼地

    管理员账号 2017-04-25

    小编说:从整个软件的性能来说,资源类性能就像是撑起冰山一角的下面的冰层。构成这部分的,是传统部分的磁盘、CPU、内存和网络以及因为移动网络而显得特别重要的电池(耗电)。本文我们将向您着重介绍磁盘部分。 1 原理 在没有SSD硬盘之前...

    管理员账号 2017-04-25
    979 0 0 0

相关图书

写给大忙人的现代JavaScript

(德国)HORSTMANN, CAY S. (作者) 浙江阿里巴巴聚橙技术发展有限公司 (译者)

本书是一本简明的现代 JavaScript 教程,不仅涵盖函数式编程、JS 语法、JS 库等基础性内容,还介绍了国际化、异步编程、标准模块系统、元编程等较为复杂...

¥109.00

JavaScript 二十年

王译锋 (作者)

本书主要讲述了从 1995 年到 2015 年这20年间,JavaScript在创建、设计和演变方面所经历的过程。全书分为4个部分,每个部分都涵盖了 JavaS...

¥79.00

Android进阶之光(第2版)

刘望舒 (作者)

本书是一本Android进阶类图书,书中各知识点由浅入深、环环相扣,最终这些知识点形成了一个体系结构。本书共分为11章。第1章介绍从Android 5.0到An...

 

JavaScript语言精髓与编程实践(第3版)

周爱民 (作者)

本书详细讲述JavaScript作为一种混合式语言的各方面特性,包括过程式、面向对象、函数式和动态语言特性等,在动态函数式语言特性方面有着尤为细致的讲述。本书主...

¥144.00

狼书(卷2):Node.js Web应用开发

桑世龙 (作者)

目前市面的nodejs书籍基于0.10的为多,而基于最新4.X的非常少,本书是唯一一本基于node.js 4.0以上版本的书。而Koa是下一代node web的...

¥69.30

狼书(卷1):更了不起的Node.js

狼叔 桑世龙 (作者)

Node.js开发简单,性能极好,一经发布便成了明星级项目。随着大前端领域的蓬勃发展,跨平台开发、API构建、Web应用开发等场景愈加常见,Node.js也成为...

¥55.30