MDSA線下公開課帶你解密高性能APP開發
原創隨著人們對移動互聯網需求的碎片化與內容的個性化劇增,APP已經滲透到更多人的生活當中。如何快速開發出一款高性能是每個移動開發者不可回避的問題,也是一項必備的技能。如今云計算應用的落地凸顯出了APP的安全性、依賴性、穩定性等重要問題,導致從底層的開發平臺到各種工具、SDK、API、組件、平臺層出不窮,開發者面臨多種選擇性困擾。51CTO通過自身的影響力以及線上線下資源優勢,在2014年11月21日,在2014 WOT全球軟件技術峰會•深圳站上宣布了移動開發者服務聯盟(MDSA)成立,通過對成熟的第三方產品技術的聚合為移動開發者提供整個開發生命周期服務。而51CTO線下公開課則是在線下為廣大的移動開發者提供了一個與行業內技術大牛面對面交流的機會,解決您在移動開發中遇到的難題。
在2014年1月17日舉辦的***期移動開發者聯盟線下公開課上,51CTO有幸請到了聽云移動研發總監秦杰,百度移動云質量部經理張濤以及云測技術副總裁尹春鵬,為大家帶來一場移動開發的饕餮盛宴。
***場由聽云移動研發總監秦杰老師給大家帶來《打造高性能移動應用的黃金法則》的演講,秦杰老師首先指出了大部分技術人員在APP性能監控中遇到的與移動應用性能提升相關的代碼問題,以此為鋪墊,接下來對幫助開發者打造高性能的移動應用做了更深入的分析。
秦杰老師認為,在大多數的情況下,能夠影響移動應用性能的罪魁禍首分別為,混合應用性能優化技術、Web應用性能優化技術、Native應用性能優化技術、移動應用性能監測技術與指標。因此,通過這五部分內容,秦杰再次分析了在各個階段應該如何去操作才能更好的把性能做到***。
下面,從秦杰老師的PPT中,我們明顯能夠看到之前所指的影響移動應用性能罪魁禍首的10個問題:
接著還分析了目前三種APP的模式的APP優化技術:
混合應用性能的技術優化
Web APP的應用性能優化
秦杰老師還提到,國內接近百分之七十的APP沒有在上線之前進行性能檢測,甚至在上線以后也沒有。他認為,這對于開發者來說是一種非常不好的情況。對于中小公司來說,花了很大的精力來開發一款APP,但是因為本身的性能問題而造成用戶流失,是一件非常可惜的事情。***還詳細分析了移動APP性能檢測的方法—慢交互追蹤,對其中的交互指標、網絡指標、錯誤追蹤、Crashlog追蹤等內容。
第二節課是由自百度云QA部經理張濤老師為大家帶來《移動應用測試—標準先行,平臺助力》的演講。
張濤老師一開始就提出,現在許多APP的性能測試在各種因素的影響下下無法得到一個非常精確的精確的結果。在百度內部通過對上百款以及許多測試的結果,梳理出來一份通用的APP測試標準。他認為,一些小團隊在開發測試階段對穩定性、兼容性、或者線上監控的環節無法花太多精掌控。
張濤老師認為崩潰率不能超過百分之零點一,在兼容性方面因為Android的各個版本,以及不同機型、不同地域之間差異較大所以兼容性是Android性能的的重災區。
緊接著為大家列舉Android開源測試工具,圖中藍色的是測試相關工具,最常用的是MonkeyRunner、UIAutomator。綠色的是代碼檢查工具、橘色是覆蓋率檢查工具、灰色是CI相關工具、紅色是發布相關的工具。這些工具都可以在網上找到相關資料去了解。張濤老師還為大家推薦了APPium這款跨平臺的測試工具。
百度內部主要用MTC平臺來進行測試,其中分析了MTC所提供的云測試、云眾測服務,包括深度性能測試、全面兼容測試、深度遍歷測試這些方法,從AndroidAPP和WEBapp的性能和云調試的能力去如何做好相應的測試階段。他認為,每次團隊發布APP除了進行云測之外,還要有一個內測、灰度發布、之后再邀請注冊用戶做一個測試***才會發布一個版本。在每一個環節都會發現問題,及時修正保證一個高品質的應用上線。
張濤老師還舉了一個FaceBook的工程師的例子、他們的APP在非洲加載慢而且經常崩潰。他們針對各種機型設計不同的功能和版本,高端機型的功能會比較全,低端機就比較簡單。而且可以檢驗到功能點的使用情況,看用戶更喜歡哪些功能。而圖片方面我們通常使用JPG但是這種格式在非洲就顯得比較大所以他們用了一種叫webP格式的圖片。這種圖片的效果與JPG差不多,但是尺寸卻要小百分之三十到百分之五十。在不同的機型上加載的圖片大小也是不一樣的。對于啟動慢的問題,在APP啟動的時候只啟動一些重要的服務,這樣減少了加載時間。
***出場的是來自云測的技術副總裁尹春鵬老師,演講題目是《移動互聯網時代的測試那點事》,在演講的一開始尹春鵬老師就提出了一個測試人員比較關注的問題:測試時間短、人員少、內容多怎么辦?
尹春鵬老師認為,在產品上線后,質量改進工作這時候才剛剛開始。為什么這么說呢?尹老師從三個方面給APP測試人員分析:
1,代碼再***,測試再充分,真實用戶依然會碰到各種崩潰。
2,1%的用戶發現問題會聯系到開發者。
3,用戶反饋的問題,只有5%能夠精確定位。
Testin在2014年推出崩潰大師服務,通過SDK加入到程序后,他們會把里面的堆棧信息,系統日志、以及一些有問題的信息收集起來、然后分析排查,包括崩潰的趨勢都會分析出來。通過收集和分析用戶手機上發生的閃退和異常,及時的發現問題,代碼級的錯誤定位,詳盡的信息分析。
崩潰大師支持的SDK覆蓋面非常廣,其中包含了Android Java、Android NDK、iOS Ojbc、iOS Objc/C++混編、Cocos2d-x Lua/JS、Unity3d C#等平臺。
除了手機APP以外Test in在游戲引擎上也做了一些工作。例如在Cocos2d-x引擎上或者使用lua或者JS來寫遇到的更多的問題是腳本報錯,雖然引擎沒報錯,但是已經玩不下去了,因此Testin做了一個插件來應對這種現象。
尹春鵬老師說:在游戲崩潰的時候代碼堆棧是最有用的東西。我們將代碼堆棧實現了一個符號化的功能。可能代碼的可讀性非常差的,因為所有的應用在發布之初會對java代碼做一個混淆。但是收到的堆棧也是這種混淆過的代碼,我們可以將這個混淆化的代碼還原回去。這樣可以方便開發者更好的解決遇到的問題。
移動開發者服務聯盟(MDSA)線下公開課是51CTO在2014年開始定期組織的移動開發技術人員線下交流活動,目前僅限北京地區,2015年開始周期為每月1次,每期關注一個話題,范圍涉及運維、開發、安全、數據庫等多個移動相關領域。