天天看點

《移動App測試實戰》——導讀

《移動App測試實戰》——導讀

現在已經是移動網際網路的時代,借助手機等移動裝置,人們可以完成資訊的擷取、社交、遊戲,以及日常生活的各種應用,甚至很多工作的開展。有很多新興的移動網際網路公司在崛起,也有很多傳統的it公司在轉型,更有大量傳統行業的企業在借助移動網際網路拓展自己的業務。對it技術人員而言,這是一個非常好的時代,有大量的工作機會,因為有大量的移動網際網路相關系統的研發需求。當然,這也意味着有很多新的技術和方法要去學習。有很多的研發人員快速轉型到移動網際網路領域,有大量的移動網際網路産品被開發出來。在這個過程中,也會面臨一個問題,那就是産品品質的參差不齊。在某種程度上,因為移動裝置的特點,比如螢幕相比pc較小、電量有限、移動網絡狀況複雜,以及裝置性能的問題,移動網際網路産品對品質的要求其實更高。有過相關研發經驗的人應該能體會,快速開發一個可用的移動app并不難,但是做一個高品質的app其實是一件非常有挑戰的事情。

這本書寫作的初衷就是希望給移動網際網路産品的研發團隊,包括測試團隊,一個基于大量一線實踐的比較系統性的參考。

我們畢業後工作的幾家公司都比較重視産品品質,對測試的投入都比較大,對人員的要求也比較高,使得我們有機會比較系統地實踐專業的測試工作。另一方面,近幾年我們接觸了很多規模較小的軟體研發組織,甚至是一些創業公司,他們的團隊和業務在快速發展,有非常強烈的意願去深入了解體系化的測試和品質提升工作是如何開展的,但常常會感到一些迷茫。之前我們寫過一些部落格文章和教育訓練材料,并參加了一些業界的技術交流,得到了非常多的正面回報,讓我們覺得這件事有價值,對同行們可能也有一些幫助。一兩次的技術交流和零散的讨論總覺得不夠系統,說不清楚。那不如寫一本書吧,正好這些都是我們自己做過的事情,有過一些實踐經驗,也踩過一些坑。

基于以上的出發點,我們希望比較系統地介紹整個移動app的測試,其實廣泛一點來講是品質保證的工作,因為這本書裡介紹的不少實踐已經超出了單純的測試的範疇。

首先我們會介紹一下典型的網際網路産品的研發流程。就我們工作過的幾家公司,每家都有一些不同,但是核心的做法其實非常類似。并不是簡單地套用靈活等流程方法,而是經過不斷實踐的摸索和調整,各家都找到一些适合産品特定以及網際網路快速疊代要求的流程做法。這些也是後面讨論一些品質實踐的基礎。在第1章的第二部分我們介紹了功能測試中的一些實踐,包括測試用例的設計和評審,以及測試進度的管理。

第2章介紹了自動化的方法,包括接口層面的自動化,這裡我們重點介紹了一種實踐過的輕量級方案,以及app ui層面的自動化,分布介紹了android和ios用到的一些技術方案。

第3章介紹了性能測試的方法,包括web前端的性能,為了介紹這部分的性能問題,也介紹http協定相關的知識,以及常用的測試方法。第二部分是app端的性能,包括android和ios記憶體相關的問題,以及内嵌web元件的性能分析。最後介紹了背景服務的性能測試,包括了壓力場景的模組化、測試工具的介紹以及測試資料的收集和分析。

第4章重點介紹了幾個針對app的測試方法,包括相容性測試、流量測試、電量測試、弱網絡測試、穩定性測試、安全測試和環境相關測試。這些方法,由于都是針對某個特殊方面或者問題的,是以我們統稱為專項測試。

第5章介紹了代碼靜态掃描、代碼覆寫率分析、接口mock方法和aop測試方法,這些是測試方法中非常有效的補充,我們稱之為輔助測試方法。

第6章介紹了釋出過程中的品質保證活動,包括持續內建的實踐,以及釋出環境的品質包括,包括釋出系統的介紹。另外還專門讨論了内測和灰階這兩個網際網路産品比較常用的方法。

第7章介紹了品質的度量和推動方法。包括我們常用的一些品質分析的次元,qa的角色和所做的工作,并專門讨論跨團隊的品質推動。

第8章介紹了一些釋出之後的品質管理工作,包括繼續進行一些子產品之間的交叉測試,發現一些之前沒有發現的問題。另外,介紹了網際網路産品的一些常見的監控次元,并重點介紹了适合測試團隊開展的接口方面的自動化監控的實踐做法。最後,讨論了關于外部使用者問題回報的收集和跟進的一些常見的做法。

第9章,最後,作為在軟體測試領域工作多年的專業人員,我們也想借這個機會讨論一些我們對于軟體測試、測試人員以及團隊的看法和思考。因為前面介紹的所有實踐,都是這些人做出來的。

關于内容本身,如果隻用一個詞來形容其特點,我想那就是實戰。除了個别知識點補充了一點點介紹性材料,這本書幾乎所有的内容都是我們在真實的項目中實踐過的,有很多材料都是直接來自真實的項目(當然做了一些敏感資訊的過濾)。我們的原則是甯願不全面,也不想誤導。因為工作久了,我們發現有很多的理論似是而非,怎麼說都有道理,比如憑空讨論一個企業應該專注一個領域還是應該多元化經營?這樣的讨論可能會一直繞圈子,給不了真正有價值的參考;還不如介紹幾個真實的企業是做什麼的,處于什麼樣的狀況,有什麼優勢,遇到什麼實際問題,是怎麼處理的。軟體測試,甚至整個軟體研發,都屬于工程實踐的範疇,最終是要有實際的産出,不是憑空的理論,是以我們覺得也應該用實踐的态度來對待知識經驗的分享。

誰适合閱讀本書

說實話,在給這本書起名的時候我們有一些糾結,因為内容是圍繞着一個移動app測試的各個方面來講解的,但是有經驗的讀者會發現,這裡介紹的測試技術和品質流程對于其他網際網路産品同樣适用。比如一些自動化和性能測試的方法,以及代碼靜态分析和覆寫率等技術手段,還有品質度量和推動的實踐,都不局限于移動網際網路方面,我們甚至覺得并不局限在網際網路方面。就我們個人的經曆而言,我們曾經參與過大型電信系統的開發,企業級伺服器軟體的測試,以及pc用戶端的産品,後來轉型到網際網路領域,有很多在之前領域裡好的實踐可以被借鑒和應用,隻不過要考慮實際産品和項目的特點來調整,我想反之也是一樣。是以請大家不要被網際網路或者所謂的網際網路思維束縛,不是觸了網就立即如何。我們仍然需要了解每一個技術的原理和優缺點,對于每一個品質提升的實踐也是一樣,然後結合自己所在項目的實踐,優化和調整,這樣會更加有效果。

前言

<a href="https://yq.aliyun.com/articles/107592">第1章 産品功能測試概述</a>

<a href="https://yq.aliyun.com/articles/107596">1.1 網際網路産品常見的研發流程</a>

<a href="https://yq.aliyun.com/articles/107599">1.2 測試用例設計和評審</a>

<a href="https://yq.aliyun.com/articles/107603">1.3 測試進度管理</a>

1.3.1 測試進度報告

1.3.2 測試完成報告

1.3.3 系統化的方法

<a href="https://yq.aliyun.com/articles/107605">1.4 本章小結</a>

<a href="https://yq.aliyun.com/articles/107606">第2章 功能測試自動化</a>

<a href="https://yq.aliyun.com/articles/107624">2.1 輕量接口自動化測試</a>

2.1.1 jmeter關于自動化方面的特性介紹

2.1.2 基于jmeter的輕量接口自動化實踐

<a href="https://yq.aliyun.com/articles/107642">2.2 app ui層面的自動化</a>

2.2.1 android的ui自動化技術

2.2.2 ios的ui自動化技術

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

第3章 性能測試

3.1 web前端性能測試

3.1.1 http性能相關的技術要點

3.1.2 web前端性能測試方法

3.2 app端性能測試

3.2.1 android記憶體問題分析

3.2.2 ios記憶體問題分析

3.2.3 app内嵌web元件的性能分析

3.3 背景服務性能測試

3.3.1 壓力場景的模組化

3.3.2 測試工具

3.3.3 測試資料的收集

3.3.4 分析和報告

3.4 本章小結

第4章 專 項 測 試

4.1 相容性測試

4.1.1 相容性測試的準備和手工測試

4.1.2 基于ui自動化腳本的雲測試方案

4.2 流量測試

4.2.1 android app特有的流量測試方法

4.2.2 ios app特有的流量測試方法

4.2.3 通用的流量測試方法

4.2.4 常見的流量節省方法

4.3 電量測試

4.3.1 android電量測試方法

4.3.2 ios電量測試方法

4.4 弱網絡測試

4.4.1 借助手機自帶的網絡狀況模拟工具

4.4.2 基于代理的弱網絡的模拟

4.5 穩定性測試

4.5.1 基于monkey的穩定性測試

4.5.2 android 的anr

4.5.3 基于模糊測試思路的穩定性測試方法探索

4.6 安全測試

4.6.1 安裝包測試

4.6.2 敏感資訊測試

4.6.3 軟鍵盤劫持

4.6.4 賬戶安全

4.6.5 資料通信安全

4.6.6 元件安全測試

4.6.7 服務端接口測試

4.7 環境相關的測試

4.7.1 幹擾測試

4.7.2 權限測試

4.7.3 邊界情況

4.7.4 android定位測試

4.8 本章小結

第5章 輔助測試方法

5.1 代碼靜态掃描

5.1.1 針對android的靜态代碼掃描

5.1.2 針對ios的靜态代碼掃描和分析

5.2 代碼覆寫率分析

5.2.1 android代碼覆寫率技術方案

5.2.2 ios代碼覆寫率技術方案

5.2.3 代碼覆寫率的應用實踐

5.3 接口mock方法

5.3.1 常見的接口異常模拟方法

5.3.2 使用fiddler作為mock serve

5.3.3 基于fiddlercore二次開發的mock工具

5.4  aop測試方法

5.4.1  android aop測試實踐

5.4.2  ios aop測試實踐

5.5 本章小結

第6章 釋出過程中的品質管理

6.1 持續內建

6.1.1 持續內建簡介

6.1.2 持續內建實踐

6.2 釋出環節的品質把控

6.2.1 背景服務的釋出

6.2.2 app的釋出

6.3 内測

6.3.1 内測的範圍

6.3.2 内測的實施

6.4 灰階

6.4.1 android app的灰階方法

6.4.2 ios app的灰階方法

6.5 本章小結

第7章 品質的度量和推動

7.1 品質的度量和推動概念

7.1.1 品質資料的度量

7.1.2 品質推動的活動

7.2 qa的角色

7.3 跨團隊的品質推動

7.3.1 開發自測

7.3.2 設計走查

7.3.3 産品走查

7.4 本章小結

第8章  釋出之後的品質管理

8.1 釋出後的交叉測試

8.2 線上監控

8.2.1 監控類型介紹

8.2.2 接口自動化監控

8.3 外部使用者問題回報的收集和跟進

8.4 本章小結

第9章  關于軟體測試和測試團隊

9.1 測試是否必需

9.2 專職測試人員的價值

9.3 測試團隊和發展

9.4 本章小結

繼續閱讀