天天看點

騰訊Android自動化測試實戰導讀

前  言 preface

為什麼要寫這本書

早在2010年年底,我們團隊就有出一本關于移動網際網路測試書籍的計劃(那時候移動網際網路測試書籍基本沒有),當時計劃的内容涉及面比較廣,涵蓋測試設計、測試用例管理、測試流程、自動化測試、專項測試等領域。不過,由于各種原因被擱淺,确實有點兒可惜,否則移動網際網路測試國内的第一本書當時就面世了。這次終于又有機會整理這些年的測試經驗并形成一本書了,借此可以跟業界的同行一起交流切磋。

tmq(tencent mobile quality)騰訊移動品質中心,是騰訊内部最早專注于移動app測試的團隊,在10餘年的時間内承擔了近10款業界領先産品的測試工作,為騰訊向移動方向轉型提供了多項品質方案和關鍵專利。本書的作者都是tmq平台的核心成員,服務于公司級的手機qq浏覽器、應用寶等項目,經過這幾年在移動測試領域的探索與實踐,摸索出了一些實實在在的實踐經驗。tmq的老闆鼓勵我們把這些知識和經驗編寫成冊,這樣不僅能為公司内部提供好的産品服務,也能為業界同人提供參考,進而将知識更好地擴散出去。我們團隊非常珍惜這次寫書的機會,故組織了團隊内android自動化測試方面經驗豐富的同學一起來編寫。大家都是利用自己的業餘時間總結各自擅長領域的經驗和知識,且初稿經過6輪的内部評審(參加評審的同僚超過30位),前後曆時半年多才最終完成了本書的寫作和修改,希望能給讀者提供一本品質較高的專業書籍。

tmq經過這幾年的積累,在專項測試、精準測試體系及自動化測試方面都有比較多的精辟之作。基于此,我們分小組對這些知識進行了整理,形成了相應的知識庫,完成了本系列叢書,包括《移動網際網路app性能評測調優實踐》《精準化測試白皮書》《騰訊android自動化測試實戰》3本書,其他兩本也在同期編寫出版工作中。希望tmq平台出品的書籍能給予讀者思路上的指導或者是技術上的解惑。

除封面署名外,參加本書編寫的作者還有:陳航特、陳六四、鄧曦、高苡新、林凱傑、劉洋、魯萬林、萬宇、鄭若琳、鐘書成共12位作者(按姓氏拼音排序),都是來自騰訊移動端qq浏覽器及應用寶團隊的骨幹員工。

讀者對象

本書是一本務實的書籍,案例都是作者們的第一手資料,對于軟體品質保證方面的初學者,本書還提供了簡短的案例以幫助其了解,循序漸進,掌握測試核心原理;對于有經驗的同行,本書提供了經典案例幫助其提升與參考。這裡根據行業實際需求給出了相應的使用者群體:

對移動業務測試感興趣的人;

對android自動化測試感興趣的人;

即将開展android自動化測試的團隊;

開設相關課程的院校師生。

本書特色

android自動化測試經過這幾年的發展,官方提供的開源自動化架構已經能非常好地支援終端的測試業務,但是如何利用、如何用好這些資源還是比較現實客觀的問題,尤其是在小公司中,自動化測試方法的摸索及實施還存在一些困難,需要一定的投入才能得以真正應用。業界一些android自動化測試方面的書籍很多都偏原理的介紹,而本書不僅深度解析這些架構的原理,還給出了手機qq浏覽器、應用寶項目中的典型案例,像最常見的app速度、要求較高的視訊播放性能測試等,供需要實踐的讀者學習,這也是本書的重要特色之一。本書前半部分主要介紹業界流行的android自動化架構的基礎知識,聚焦工具架構的原理以及基礎api使用、架構的二次開發改造(根據具體項目做相應修改),以及實踐過程中一些共性問題的分享。如果讀者已經掌握這些架構基礎,那麼對本書内容的了解就會更容易。同時讀者可以重點關注本書中介紹的對架構進行二次開發的内容,并結合自己的實際項目考慮如何應用這些知識提升自己的工作效率;基礎比較高的讀者可跳過這部分直接閱讀後半部分。後半部分通過一些實際案例來講解自動化架構的應用,更強調系統性分析設計能力,包括需求的分析、工具選型、測試方案、代碼覆寫率的應用等,覆寫功能測試、性能測試的具體實戰案例。這部分對讀者的技術能力要求相對更高一些,涉及的知識點的深度和廣度要明顯高于前半部分,需要進行android app應用的性能速度測試的讀者可以深入閱讀,領會書中所提場景的測試設計與思路,進而掌握架構的精髓所在。在經典案例中也給出了很多具體實作思路的介紹與分析,讓讀者知其然、并知其是以然,同時各位作者也把項目測試工程代碼加以整理,打包至tmq背景,供讀者下載下傳,讀者如有需要可以直接導入工程進行調試學習,以大大減少學習成本。讀者可以根據自己的需求閱讀相應章節的内容:如熟悉java語言,又面臨debug未混淆被測app的情況,建議直接學習robotium架構,因為robotium操作簡單、相關資料豐富,還能支援ant、maven打包,與jenkins結合較好;因robotium不支援跨應用,是以對于需要支援跨應用的架構,讀者可以閱讀uiautomator和appium架構,其中appium是借助webdriver json協定實作的,能支援多種語言編寫測試腳本;對于有一定經驗的讀者,在案例選擇時可以結合robotium和uiautomator的優點一起使用,此時可直接閱讀本書中的浏覽器視訊性能測試案例。

勘誤和支援

本書作者分别在深圳、北京、成都、合肥四地辦公,是以整個寫作過程中異地溝通比較多,整書從選題至初稿形成,差不多花了5個月的時間,速度超過我們的預期,但由于作者的水準有限、異地交流、編寫時間倉促等,書中難免會出現一些錯誤或者不準确的地方,懇請讀者批評指正。為此,我們特意在tmq的官網建立了一個線上支援:http://tmq.qq.com。你可以将書中的錯誤釋出在新書勘誤表頁面中,我們将盡量線上上為讀者提供最滿意的解答。書中的全部源檔案除可以從華章官方網站(http://www.hzbook.com)下載下傳外,還可以從tmq網站下載下傳,我們也會将相應的錯誤及時更正。如果你有更多的寶貴意見,也歡迎發送郵件至郵箱[email protected],期待能夠得到你們的真摯回報。

緻謝

感謝騰訊科技mig無發研發部總經理冼文佟、助理總經理陳誠,正是他們鼓勵我們多總結、多分享、把知識傳播,我們才有了寫書的想法。

感謝騰訊科技mig無發研發部品質中心的總監廖志、李德廣、張鼎,給我們提供tmq這樣好的一個人才培養平台,讓我們不斷成長和提升,同時也非常感謝他們在百忙之中指導我們寫作。

感謝騰訊科技的同僚們在整個寫作過程中,幫我們多次進行内容及技術層面的稽核指錯,尤其是王琳同學,作為每章内容的第一位讀者,給了很多好的建議和思路,其他同僚也對本書的内容進行了細緻的評審,他們是陸小三、吳景、柳炜、沈東雄等,在此一并謝過。

感謝騰訊科技的浏覽器測試團隊、應用寶測試團隊,在我們編寫過程中他們提供的工作支援,是我們得以這麼快速完成的基礎。

感謝同濟大學朱少民教授給我們的專業指導和鼓勵,讓我們更有信心完成本書的編寫。

感謝機械工業出版社華章公司的編輯楊福川、孫海亮,是他們多次給予我們指導及鼓勵。

感謝我們的親人在我們周末加班寫作時給予的支援與了解,你們的支援是我們最大的動力!

謹以此書獻給我們最親愛的家人,以及熱愛移動業務測試的朋友們!

丁如敏等

contents 目  錄

本書編委

前言

<a href="https://yq.aliyun.com/articles/82904" target="_blank">第1章 概述</a>

<a href="https://yq.aliyun.com/articles/82906" target="_blank">1.1 android自動化測試架構概述</a>

<a href="https://yq.aliyun.com/articles/82908" target="_blank">1.2 本書内容概述</a>

<a href="https://yq.aliyun.com/articles/82912" target="_blank">第2章 自動化測試架構及應用領域綜述</a>

<a href="https://yq.aliyun.com/articles/82915" target="_blank">2.1 自動化測試架構介紹</a>

<a href="https://yq.aliyun.com/articles/82920" target="_blank">2.1.2 自動化測試架構基本原理</a>

<a href="https://yq.aliyun.com/articles/82921" target="_blank">2.2 移動終端自動化測試應用場景</a>

<a href="https://yq.aliyun.com/articles/82924" target="_blank">2.3 本章小結</a>

<a href="https://yq.aliyun.com/articles/82926" target="_blank">第3章 robotium架構工作原理及實踐</a>

<a href="https://yq.aliyun.com/articles/82930" target="_blank">3.1 robotium常用功能</a>

<a href="https://yq.aliyun.com/articles/82930" target="_blank">3.1.1 什麼是robotium</a>

<a href="https://yq.aliyun.com/articles/82931" target="_blank">3.1.2 robotium提供的類</a>

<a href="https://yq.aliyun.com/articles/82934" target="_blank">3.1.3 環境搭建</a>

<a href="https://yq.aliyun.com/articles/82938" target="_blank">3.1.4 robotium的控件擷取、操作及斷言</a>

<a href="https://yq.aliyun.com/articles/82940" target="_blank">3.2 robotium原理簡析</a>

<a href="https://yq.aliyun.com/articles/82944" target="_blank">3.2.1 robotium支援native原理</a>

<a href="https://yq.aliyun.com/articles/82946" target="_blank">3.2.2 robotium支援webview原理</a>

<a href="https://yq.aliyun.com/articles/82946" target="_blank">3.3 robotium實踐運用</a>

<a href="https://yq.aliyun.com/articles/82946" target="_blank">3.3.1 控件id相同時擷取控件</a>

<a href="https://yq.aliyun.com/articles/82956" target="_blank">3.3.2 listview清單周遊</a>

<a href="https://yq.aliyun.com/articles/82958" target="_blank">3.3.3 修改robotium以支援x5webview</a>

<a href="https://yq.aliyun.com/articles/82960" target="_blank">3.4 本章小結</a>

第4章 monkey基本原理及擴充應用

4.1 monkey基礎知識

4.1.1 monkey概況

4.1.2 monkey參數

4.1.3 monkey事件

4.1.4 monkey環境搭建

4.1.5 monkey啟動

4.2 monkey測試方法

4.2.1 monkey測試執行個體

4.2.2 monkey日志分析

4.3 monkey的基本原理

4.3.1 monkey代碼架構

4.3.2 monkey代碼邏輯詳解

4.4 monkey擴充應用示例

4.4.1 monkey代碼重編譯執行方法

4.4.2 monkey截圖優化

4.4.3 monkey wi-fi自動重連優化

4.4.4 monkey擴充應用的優點和缺點

4.5 本章小結

第5章 uiautomator架構及實踐

5.1 uiautomator簡介

5.2 uiautomator解讀

5.2.1 uiautomator架構解讀

5.2.2 uiautomator原了解讀

5.2.3 uiautomator api解讀

5.3 uiautomator實戰

5.3.1 uiautomator快速上手

5.3.2 uiautomator設計思想

5.3.3 uiautomator實踐案例

5.4 uiautomator總結

5.4.1 uiautomator代碼規範及建議

5.4.2 uiautomator技巧及封裝

5.5 本章小結

第6章 appium架構解析及實踐

6.1 appium架構概況

6.1.1 appium架構原理

6.1.2 appium架構的優缺點

6.2 appium架構工作解析

6.2.1 appium環境搭建

6.2.2 helloworld測試示例

6.2.3 desired capabilities的說明

6.2.4 appium api的解讀

6.3 appium架構在騰訊地圖中的實踐

6.3.1 appium接口的封裝

6.3.2 測試腳本設計思想

6.3.3 appium在騰訊地圖中的測試實踐

6.3.4 hybrid app的測試方法

6.3.5 appium腳本常見問題及處理方法

6.4 本章小結

第7章 android app速度測試

7.1 速度測試場景

7.2 速度測試的六大方法

7.2.1 掐表計時法

7.2.2 列印日志計時法

7.2.3 圖像分析計時法

7.2.4 hook方案計時法

7.2.5 網絡包分析法

7.2.6 各種速度測試方法的優缺點

7.3 手機qq浏覽器網頁打開速度測試實踐案例

7.3.1 确定關鍵名額

7.3.2 選擇測試方法

7.3.3 整體方案

7.3.4 解決關鍵問題

7.3.5 速度優化效果

7.4 手機qq浏覽器多視窗按鈕速度實踐案例

7.4.1 為什麼要做多視窗按鈕速度測試

7.4.2 什麼是多視窗按鈕速度測試

7.4.3 多視窗按鈕速度測試影響因素和測試方法

7.4.4 如何進行多視窗按鈕速度測試

7.5 本章小結

第8章 視訊性能測試案例

8.1 視訊性能測試需求分析

8.2 視訊首幀性能測試方案的設計思路

8.2.1 視訊播放流程

8.2.2 設計思路

8.3 視訊首幀性能測試方案的具體實作

8.3.1 開發工具準備

8.3.2 測試環境準備

8.3.3 工程部署

8.3.4 關鍵代碼和難點分析

8.3.5 編譯環境配置

8.3.6 工具安裝

8.4 方案優缺點

8.5 本章小結

第9章 應用寶bvt測試案例

9.1 測試工程

9.1.1 測試工程概覽

9.2.1 測試工程簽名

9.2 測試用例

9.2.1 測試用例生命周期

9.2.2 測試用例編寫

9.2.3 測試用例執行

9.2.4 測試用例管理

9.3 測試報告

9.3.1 spoon介紹

9.3.2 結合spoon的出錯重試與截圖

9.3.3 結合spoon生成彙總報告

9.4 robotium跨應用

9.4.1 uiautomator dump方式跨應用

9.4.2 uiautomator結合instrumentation模式

9.5 代碼覆寫率

9.5.1 覆寫率定義

9.5.2 覆寫率工具

9.5.3 jacoco介紹與實踐

9.5.4 bvt測試與覆寫率結合

9.5.5 指導建議

9.6 本章小結

第10章 相容性測試實踐

10.1 相容性測試概述

10.2 相容性測試方法

10.2.1 手動測試

10.2.2 自動化測試

10.2.3 雲平台測試

10.3 相容性測試思考

10.4 本章小結

繼續閱讀