1. 程式人生 > >《移動APP測試實戰》學習筆記

《移動APP測試實戰》學習筆記

前言:  很久沒有交學習作業了,上一篇部落格居然在國慶節前。其實最近一直在學習移動APP測試,包括搭建AndroidStudio的開發環境,學習移動APP測試工具,但由於專案變化的原因,一直不能專心地來小結。
總的來說,讀完很有收穫。個人收穫較大的是:1、ch5輔助測試中的介面Mock,AOP,有些新的理念上的觸動,暴露平時接觸測試理論太淺薄,另外工具整合能力差許多;2、ch6的內容,以及ch7的開發自測。這兩個合在一起;3、ch4的一些具體內容。 其他一些零零碎碎的倒是基本有經驗。但是許多工具還需要在實際專案中用。  
下面是每章的內容和收穫:偏Android,關於iOS的暫時不準備涉及。另外,後面對一些工具進行使用和評估,具體的再寫。

第一章:研發流程。
這方面個人經驗比較豐富。移動網際網路的特色是在開發和測試之間,有個體驗階段。
第二章:功能測試自動化。
主要是基於JMeter的介面自動化。配合其中的一些環境設定、指令碼嵌入等。以前主要是用到JMeter做效能測試,不如LR好用。
UIAutomatorViewer,獲取APP中物件的ID。配合自動化測試框架Appium的使用。
第三章:效能測試。
1)Web前端效能測試:web頁面,可以配合HttpWatch及WebPageSpeed,PageSpeed(Google Chrome)等各大瀏覽器自帶的分析器。
2)App端效能測試: 記憶體-.hprof檔案分析;webview渲染效能--通過Logcat分析;其他常見效能如耗電、啟動時間、流量等放在了專項測試。
3)後臺服務效能測試:類似常規的網站的壓力測試,JMeter就可以。AB(ApacheBench)也可以用來測試Http連線數。
第四章:專項測試。


這個貌似重點內容。
1)相容性測試。其實主要是真機平臺的問題,其實用各大雲測平臺(Testin、百度MTC)很不錯。作者推薦自己錄製編寫指令碼(例如robotium),雲平臺測試的方式。其實和UI自動化測試有些關聯。
2)流量測試。a,系統自帶的,讀取檔案解析就可以。  b,編碼,通過系統API來獲取。c,直接外部抓包估計--Fiddler。
3)電量測試。  a,電錶;b,電池監控器 GSam Battery Monitor Pro。
4)弱網路測試。a,iOS自帶的開發者選項“Network link conditioner”;b,基於代理的弱網路模擬。windows下面的Network Delay Simulator; Mac下的Network Link Simulator。內建了3G,2G,Wifi等不同場景,當然也可以設定。 這個是以前沒有怎麼接觸的。

5)穩定性測試。 a,基於Monkey的隨機操作。這個前面有一些瞭解,通過adb命令,可以控制APP,次數,幾類事件的百分比。b,MonkeyRunner的使用。可以通過指令碼來控制事件型別。  c)穩定性測試後讀取ANR日誌檔案。  d)模糊測試的方法。 FuzzingTest。作者使用Sulley框架。通過指令碼對可變異的和不可變異的內容進行設定,這個後面有必要嘗試。可變異的內容進行多次隨機化。
6)安全測試。
6.1)安裝包測試。  dex2jar進行反編譯、簽名、完整性校驗。通過manifest檔案,檢查許可權設定 。
6.2)敏感資訊測試。資料庫、日誌 、配置檔案有沒有敏感詞,明文密碼、cookie資訊等。
6.3)軟鍵盤劫持。-檢查是否支援第三方輸入法。  
6.4)賬戶安全。密碼明文儲存、傳輸;賬戶鎖定策略;同時會話通知;登出機制。  
6.5)資料通訊安全。  
6.6)元件安全。一般是使用drozer。
6.7)伺服器端。 如SQL注入。跨站指令碼攻擊XSS。CSRF跨站請求偽造。越權訪問。 這些都是常規的,可以用滲透測試工具Appscan、Fortify。和專門的工具。
7)環境相關的測試。   a、干擾測試。來電、簡訊、通知、電量低、告警等。 b、許可權測試。一方面檢查授權;一方面檢查不給予授權的情況。 c、邊界情況。 如儲存滿、電量低、飛航模式、系統時間有誤、第三方依賴(呼叫第三方應用失敗)等。
8)定位測試。
第五章:輔助測試方法
1、程式碼靜態掃描。開源的如FindBugs、Lint。以外掛方式工作。 例外工作中用到一些商用的,Klocwork,Coverity等。
2、程式碼覆蓋率分析。例如jacoco(主流),emma。工作中使用商用的Vectorcast,Jtest。
3、介面Mock。  a,直接修改後臺server;b,搭建測試Server; C,在資料返回的途中截獲並修改。Fiddler可以提供AutoResponder來實現。 作者提供基於FiddlerCore二次開發的Mock工具。(改善了加密的響應不能匹配和篡改的問題)
4、AOP測試方法。   Aspect Oriented Programming。 前面基本沒有接觸過。  AspectJ是java下面實現AOP的一個框架。
第6章 釋出過程中的質量管理
1、持續整合。jenkis 。這個久聞大名,沒有接觸過。 持續整合和釋出平臺的一些要求。
2、內測。不同物件應提供不同版本。本部門;其他部門;外部粉絲等應區別。
3、灰度測試。  白名單--比例控制(最簡單就是ID篩選)--根據設定邏輯篩選---基於功能維度的灰度等不同策略。
第7章  質量的度量和推動
這個其實Bug管理系統就搞定。主流的基本都用過了,感覺開源的簡潔的Bugfree就可以滿足一般的需要的。
開發自測,設計走查,產品走查。值得說的,還是開發自測這個。通過提供測試用例集給開發,並對Bug區分:不能發現,使用即應發現,執行提供的自測用例集應發現的不同手段。
第8章  釋出之後的質量管理
交叉測試,線上監控。  監控如何埋點是關鍵。其實也算是一種可測試性設計要求。
問題的收集和反饋,這些都是必須的。