編輯推薦
適讀人群 : 本書適閤從事移動 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 電子書 格式