APP測試技術:ADB——安卓手機測試一座神奇的“橋”

博為峰網校發表於2022-12-20

前言:

近年移動網際網路好比IT界的一條浩瀚銀河,安卓手機測試可謂其中最璀璨的一顆明珠,這裡有一座你不得不熟悉的橋--ADB

曾見過不少相關的文章或培訓,不乏空談多,實戰少;期望大,效果差。也見過很多測試同仁,預成大牛,卻不得其法。今日我們秉承單點極致的精神。聚焦實用的技能,也思考下測試這條路,該如何走的深遠。 進入》                軟體測試社群學習交流     加我VX:atstudy-js 回覆“測試”,進入 自動化測試學習交流群~~

安卓測試,乃如今移動測試領域中舉足輕重的部分,相信也有不少同仁奮戰在這片戰場。工作中聽聞最多的幾個關鍵詞"效能","自動化","穩定性"……掌握這些測試技能,或可成為高階測試工程師。也達到很多同仁眼中的成功,至少是成就感。那麼這條路遠嘛?難嘛?我說,不遠,也不難,你和成功其實只隔一座橋--ADB。

ADB,或許很多人並不陌生,何謂ADB,簡言之:"adb的全稱為Android Debug Bridge"就是起到除錯橋的作用。最基本的安裝,環境變數配置,相信大家也能查到諸多資料,而一些入門級的介紹更是猶如滔滔江水,連綿不絕。相信如下幾個場景,或者命令大家都嘗試過:

  1. 安裝一個安卓APP: adb install

  2. 解除安裝一個安卓APP: adb uninstall

  3. 檢視裝置連線: adb devices

  4. 推送/拉去一個檔案: adb push/pull

  5. 重啟手機: adb reboot

入門級命令十多個,相信大家看到這裡很親切。不錯!這也是常考的一些筆試題。

但是問題來了,又有多少人,到此就淺嘗輒止了?!恐怕也是猶如黃河氾濫吧……

ADB 是一個非常實用的工具,尤其是對我們測試人員。什麼才是進階實踐呢?您是否基於 ADB 做過“效能測試”,“自動化測試”,“穩定性測試”?姑且讓我們從這三個場景看看這座橋(ADB)有多少神奇的潛力。

注:

  1. 以下截圖中程式碼,都來真實測試專案中的程式碼片段,必要地方我會加以解釋。

  2. h 是 Java 封裝的一個類,主要作用是把 adb 命令傳送到控制檯執行。

很多高階語言都有相似方法,比如 php,或者 python

一、效能測試場景

安卓測試中,啟動速度,安裝包大小,記憶體佔用,CPU 佔用,耗電等是我們公認的重要效能指標。透過這座橋,這些都能實現。

例 1:測試 app 的啟動速度:

【專案實戰程式碼】:

【核心命令】:

【效果分析】:

其中的 ThisTime,和 TotalTime 就是我們關注的啟動時間,單位是毫秒。

知道這個,結合你已經掌握的安裝解除安裝命令,再加上任何一門高階程式語言的基本語法就可以完成貴公司 app 啟動速度專項測試。

提供思路如下(趕快動手試試吧):

  1. 設定安裝包路徑,如果有實力可以指令碼完成定期去 FTP 伺服器拉去最新可用安裝包。

  2. 安裝

  3. 啟動並記錄時間

  4. 解析結果併入資料庫。

  5. 完成分析資料,橫向對比,量化的把控啟動速度的變化趨勢。

例 2:獲取 app,安裝後大小:

【專案實戰程式碼】

【核心命令】:

【效果分析】

其中 system 後面就是大小(單位是 B)順便連安裝時間也有了^_^。

租後面無疑是包名字,想針對具體的應用來看,自然也是可以的。

很簡單,也很神奇。應用場景,你懂得。

例 3:記憶體的獲取:

【專案實戰程式碼】

【核心命令】:

【效果分析】

遠比你想想的要詳細,驚呆了,有木有。其中前兩項是我們要獲取的總記憶體,和剩餘記憶體,至於其他,按需獲取。

【核心命令】:

【效果分析】

不難看出吧 58753KB,就是清理大師當前的記憶體佔用。

至於您想獲取哪個應用,多久獲取一次?合適獲取。可以自己定義。總之記憶體這個常提到效能指標就透過一座“橋”實現了。

例 4:電量測試

【專案實戰程式碼】

【核心命令】:

【效果分析】

不難看出,很容易解析到,我們要的電量,電壓,溫度。除此之外,你甚至會發現,連充電方式,電池的健康程度,電池型別等都有。

想新到此,您已對 ADB 這座橋有了新的認知。

其實遠遠不僅如此。讓我們繼續領略一二。

二、功能自動化測試場景

一提到安卓安卓手機的自動化測試。恐怕就會想到,monkeyrunner,robotium,Athrun 等一系列的框架。其實根據專案的情況選擇合適的測試技術也是一項很有學問的事情。在此不展開討論。

說個具體場景。要檢驗清理大師的建議清理效果(該刪除的檔案被刪除)

核心步驟:

安裝,啟動,跳過協議頁,規避彈窗: adb install(安裝) adb shell am start(啟動) adb shell input keyevent 4(點選 back 鍵)

進入垃圾清理,等待掃描完成,點選清理 adb shell input tap X Y(點選某點,橫座標 X,縱坐 Y 標)

檢查手機檔案系統,完成效果比對。

這無疑是一個典型的自動化測試場景。 核心的 ADB 命令如上,大家可以小試牛刀。

三、基本穩定性測試場景

提到穩定性,大家第一時間想到,monkey。不錯,確實有一條命令:

adb shell monkey –n XX (包名) 1000(偽隨機時事件數)

這無疑算是一種穩定性測試方法,但是常用的同學也不難發現它的缺點!

>隨機性強,不容易復現。

>盲目性大,很容易點到別的應用。

>可控性差,執行很久未必重點測試預期的模組。

今天我們有這樣一個測試場景,測試手機主要的模組,能正正常進入,並且沒有崩潰。

核心點有三個:

驅動手機進入指定模組; 

ADB 的座標點選,你懂得,就不贅述

獲取當前系統最上層的 ActivITy 名稱。 

【專案實戰程式碼】

【核心命令】:

【效果分析】

結果比實際最上層 ActivITy 名稱,和預期比較,判斷穩定性,記錄結果。

字串比較,留給大家自己發揮。

至此,我們多少重新認識了下,似曾相識的 ADB。其實安卓測試,認真的走過這座“橋”漠然回首的時候,你會發現,自己經找到晉身高階測試工程師的門路了。當然由於時間和字數的限制。今日只能帶大家走馬觀花的領略下,這座神器的“橋”。工作中如果有疑難的測試場景,不妨想起 ADB,或許一些問題就迎刃而解,修行在個人,希望大家一起更上一層樓。

最後再次如何在測試這條路上走的更深,更遠。雖說命題有些寬泛,但是有些方法論可以參考

>在某個領域鑽的夠深,你就是專家。

>簡單的事情做出新意,你就是大牛。

>茫然的領域探出條道路,你就是領袖。

和大家共勉。

最後:

可以到我的個人V:atstudy-js,可以免費領取一份10G軟體測試工程師面試寶典文件資料。以及相對應的影片學習教程免費分享!其中包括了有基礎知識、Linux必備、Mysql資料庫、抓包工具、介面測試工具、測試進階-Python程式設計、Web自動化測試、APP自動化測試、介面自動化測試、測試高階持續整合、測試架構開發測試框架、效能測試等。

這些測試資料,對於做【軟體測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2928769/,如需轉載,請註明出處,否則將追究法律責任。

相關文章