A. 干貨|做App測試,那些必知必會的Adb常用命令
> 本文節選自霍格沃茲測試學院內部教材
為了讓大家更好的學習Adb常用命令,我們先從安裝android環境搭建開始講解哦。
安裝jdk
### **
**
**
**
### 因為 Android SDK 是依賴於 java 環境的,所以需要先把 java 的環境搭建好。Java
環境可以參考搭建帖子:https://ceshiren.com/t/topic/4001
安裝Android SDK
###
###
### adb 包含在 Android SDK 平台工具軟體包中。具體的 Android SDK
環境搭建步驟請參考帖子:https://ceshiren.com/t/topic/4001
adb簡介
adb 全稱為 Android Debug Bridge(Android 調試橋),是 Android SDK 中提供的用於管理 Android
模擬器或真機的工具。
adb 是一種功能強大的命令行工具,可讓 PC 端與 Android 設備進行通信。adb 命令可執行各種設備操作,例如安裝和調試應用。
adb組成
採用了客戶端-伺服器(C/S)模型,包括三個部分:
* adb client
* adb server
* adb daemon
ADB client:運行在電腦上,可以在命令行中運行 adb 命令來調用該客戶端。Client 本質上就是 Shell,用來發送命令給
Server。發送命令時,首先檢測 PC 上有沒有啟動 Server,如果沒有 Server,則會自動啟動一個,然後將命令發送到 Server。
ADB server:是運行在電腦上的後台進程,用於管理客戶端與運行在模擬器或真機的守護進程通信。
ADB Daemon:守護進程作為一個後台進程在 Android 設備或模擬器系統中運行。它的作用是連接 adb 服務端,並且為運行在主機上的 adb
客戶端提供一些服務。
adb工作原理
當 adb 客戶端啟動時,客戶端會先檢查 adb 服務端是否啟動。如果沒有,會先啟動服務端進程。adb 服務端在啟動後,會與 5037 埠綁定,並監聽
adb 客戶端發出的命令。
然後,服務端會與所有正在運行的 Android 設備建立連接。它通過掃描 5555 到 5585 之間的奇數號埠查找 Android 設備。服務端一旦發現
Android 設備上的 adb 守護進程在運行,便會與相應的埠建立連接。每個 Android 設備都使用一對埠,偶數埠用於控制台連接,奇數埠用於
adb 連接。
例如:服務端與所有 Android 設備建立連接後,就可以使用 adb 命令來訪問這些設備了。服務端會管理已經建立的連接,並處理來自 adb 客戶端的命令。
啟動adb調試
### Android 真機可以通過 USB 連接到 adb,連接時需要在設備的系統設置中啟用 USB 調試(位於開發者選項下),啟動 USB
調試後,設備上的 adb 守護進程就會被啟動,adb 服務端才可以和設備建立連接。除了用 USB 的方式連接之外,也可以通過 WLAN
的方式連接,這種方式不做贅述。
1. 模擬器:不需要手動設置 USB 調試開關,默認是打開的
2. 真機通過 USB 連接
* 安裝 Android 手機驅動
* 設備啟用 USB 調試
adb命令格式
*
adb [-d|-e|-s <serialNumber>] <command>
* -d:指定當前唯一通過 USB 連接的 Android 設備為命令目標
* -e:指定當前唯一運行的模擬器為命令目標
* -s:指定相應 serialNumber 號的設備/模擬器為命令目標
方括弧中的內容是可選的,尖括弧內容的是必填的。方括弧中參數可以指定設備,關於設備的指定有三個參數可以使用。-d、-e 和 -s,其中使用最多的是 -s
參數,在連接多台設備的時候,一般都是使用 -s 加上設備的序列號這種方式去指定具體設備。
adb 可以同時連接多台設備,但是一次只能對一台設備執行命令。所有連接多台設備的時候,是必須要制定設備,命令才可以執行成功的。
查詢設備
把 Android 設備連接到 adb 服務端後,需要確認設備的連接狀態。這時可以使用查詢命令進行查詢。
**連接模擬器** (以 mumu 模擬器為例)
* *
adb connect 127.0.0.1:7555adb devices
* `adb connect` 命令可以通過 WLAN 的方式連接到模擬器,7555 為 mumu 模擬器的埠
* `adb devices` 可以查詢設備連接的狀態
Windows 系統中,連接模擬器需要先執行 connect 命令去連接模擬器,127.0.0.1 是本地的 IP
地址,因為模擬器就是安裝在本地的,所以要使用本地的 IP 地址,加上模擬器本身規定的一個埠號。mumu 的埠號是
7555,如果使用的是其他的模擬器的話,需要先去了解它的埠號是什麼,然後再去連接。MacOS 系統中連接模擬器不需要先執行 connect 命令,直接執行
`adb devices` 命令即可。
**連接真機**
**
**
真機直接用 USB 連接到電腦,不需要執行 connect 命令。
直接用 `adb devices`命令查看已經連接的設備列表即可。
feier@ ~ % adb devices
List of devices attached
emulator-5554 device
直接命令後,如果設備已經成功連接,那麼設備列表中就會展示已連接設備的信息。以圖中的信息為例:
* emualotr-5554:設備序列號
* device:設備連接狀態為成功
安裝卸載應用
測試過程中,如果需要安裝或者卸載應用,可以直接用 adb 命令來操作。
* 普通安裝:`adb install <apk路徑>`
* 覆蓋安裝:`adb install -r <apk路徑>`
* 完全卸載:`adb uninstall <包名>`
* 保留配置文件:`adb uninstall -k <包名> `
設備與電腦傳輸文件
adb 命令支持電腦和 Android 設備之間的文件互傳。比如我們需要提取 Android 設備中的日誌文件到本地,就可以通過 adb 命令的方式來完成。
* 從電腦上傳文件至設備:`adb push <電腦路徑> <設備路徑>`
* 從設備復制文件至電腦:`adb pull <設備路徑> <電腦路徑>`
日誌
列印鏈接設備的 log 信息
* 屏幕輸出日誌:`adb logcat`
* 通過標簽過濾:`adb logcat -s 標簽`
* 顯示時間:`adb logcat -v time`
* 輸出所有信息:`adb logcat -v long`
* 輸出日誌到文件:`adb logcat -v time > log.txt`
* 清除舊日誌信息:`adb logcat -c`
adb shell命令
使用 adb shell 命令相當於遠程登錄了 Android 系統,可以進入 Android 設備的系統內部。進入系統內部既可以執行一些簡單的 linux
命令也支持很多特有的命令。
使用 adb shell 命令有兩種方式。
一種是直接在 adb shell 後面跟上命令。
*
adb [-s serial_number] shell <command>
比如:
* * * * * * * * * * *
feier@ ~ % adb shell .propdevetc...
另一種方式是在設備上啟動互動式 shell
*
adb [-s serial_number] shell
進入 shell 之後,再執行對應的命令。
比如我們進入設備內部,可以查看設備內部的目錄結構和內容
* * * * * * * * * * *
feier@ ~ % adb shellroot@x86:/ # .propdev...
要退出互動式 shell,可以按 Ctrl + D 鍵或輸入 exit。
**Android常用測試命令**
下面整理出了Android常用的一些測試命令及用法。
設備截圖/錄屏
在測試過程中,如果需要截圖或者是錄屏,也可以直接使用 adb 命令來完成。
* 截圖:`adb shell screencap <設備路徑>`
* 錄屏:`adb shell screenrecord <設備路徑>`
調用Activity管理器
在 adb shell 中,可以使用 Activity 管理器 (am) 工具發出命令以執行各種系統操作,如啟動
Activity、強行停止進程、修改設備屏幕屬性,等等。
在測試過程中,如果需要啟動 app 或者強制關閉 app,可以通過 adb 命令來實現。
* 啟動應用:`adb shell am start -n <包名>/<Activity名>`
* 強制停止應用:`adb shell am force-stop <包名>`
調用軟體包管理器
在 adb shell 中,可以使用軟體包管理器 (pm) 工具發出命令,以對設備上安裝的應用軟體包執行操作和查詢。
如果需要查詢設備里都安裝了什麼應用,就可以使用 adb shell pm list 來查看,還可以加上不同的參數去查看不同類型的應用。而且也可以通過 adb
命令來清除應用相關的數據。
* 顯示設備中安裝的所有應用:`adb shell pm list packages`
* 只顯示系統應用:`adb shell pm list packages -s`
* 只顯示第三方應用:`adb shell pm list packages -3`
* 刪除與軟體包關聯的所有數據:`adb shell pm clear <包名>`
adb shell mpsys
mpsys 是一種在 Android 設備上運行的工具,可提供有關系統服務的信息。可以使用 adb 從命令行調用
mpsys,獲取在連接的設備上運行的所有系統服務的診斷輸出。
比如在測試中,如果需要通過 adb 命令啟動 app,則需要知道 app 的包名和入口的 Activity
名。這個時候,就可以通過下面這條命令獲取到這兩個信息。
這個場景,需要先把要獲取信息的應用啟動,讓它在前台運行,然後執行命令
`adb shell mpsys activity | grep mFocusedActivity`
* * *
feier@ ~ % adb shell mpsys activity | grep mFocusedActivity mFocusedActivity: ActivityRecord{9dae968 u0 com.xueqiu.android/.common.MainActivity t139}
下方的日誌中就會展示出來當前的包名和 Activity 名稱。
* 包名:`com.xueqiu.android`
* Activity 名:`.common.MainActivity`
adb shell mpsys
adb 命令還支持直接獲取應用的頁面信息。這個頁面信息包含了頁面中元素的屬性,可以方便做自動化測試的時候去定位元素。獲取到的頁面布局會輸出到一個 xml
文件中。
* 當前窗口的 UI 布局簡化信息:`adb shell uiautomator mp --compressed`
* *
feier@ ~ % adb shell uiautomator mp --compressedUI hierchary mped to: /sdcard/window_mp.xml
不指定輸出文件路徑時,mp 下來的文件默認存儲路徑為 `/sdcard/window_mp.xml`
可以通過 adb pull 命令把文件傳輸到電腦中,然後用 uiautomatorviewer 工具打開查看布局。
* 指定輸出文件路徑:`adb shell uiautomator mp file <設備路徑>`
adb常用命令就先講到這里啦,下期我們分享App常見bug解析。大家還想看什麼內容的文章也可以留言告訴我們哦!
** _
來霍格沃茲測試開發學社,學習更多軟體測試與測試開發的進階技術,知識點涵蓋web自動化測試 app自動化測試、介面自動化測試、測試框架、性能測試、安全測試、持續集成/持續交付/DevOps,測試左移、測試右移、精準測試、測試平台開發、測試管理等內容,課程技術涵蓋bash、pytest、junit、selenium、appium、postman、requests、httprunner、jmeter、jenkins、docker、k8s、elk、sonarqube、jacoco、jvm-sandbox等相關技術,全面提升測試開發工程師的技術實力
QQ交流群:484590337
公眾號 TestingStudio
視頻資料領取:https://qrcode.testing-studio.com/f?from=jianshu&url=https://ceshiren.com/t/topic/15844
點擊查看更多信息
B. 手機上的app性能測試怎麼測
您好,方法
提到APP的性能測試這個概念比較籠統,因為APP的性能測試分為伺服器端的性能和手機端的性能測試。下面,我們先從伺服器端的性能測試開始說起,伺服器端的性能測試可以通過LoadRunner或Jmeter工具進行測試,為方便起見,可以以Jmeter工具為例子說一下App伺服器端的性能測試流程。
首先,確定app的性能測試功能點,一般會選擇使用比較頻繁的功能做性能測試比如查詢,提交數據。
然後,根據該功能點的介面測試需求,或使用fiddler抓包,在jmeter上構造向伺服器發送的請求數據,配置好相關的設置,並做好伺服器的監控。(以我們實際項目為基準,本項目是搭建在linux上的,用的是nmon工具做監控),
最後運行測試,測試完之後,收集CPU,內存等信息,集合聚合報告的內容,分析性能測試結果。
至於手機端的性能測試流程則比較簡單,首先需要在伺服器上提前安裝監控工具(iTest/GT),接著啟動監控工具,監控被測應用.
接著需要清空先前的logcat日誌記錄,清空日誌的命令是:adb logcat -c.
接著來獲取logcat日誌:adb logcat -v time > E:\share\logcat.log.
如何做App的性能測試
再接著使用monkey運行被測應用:
adb shell monkey -p your.package.name -v 500 > E:\share\monkey.log
(獲取app的包名和activity名稱:
adb logcat -v time | findstr START
腳本中,cmp= 後面的值就是 包名)
(ctrl+c 終止命令)
最後根據監控圖,檢查CPU,內存,流量,電量是否符合性能指標。如果不符合,就把不符合指標的報表和對應的logcat發給開發進行定位。
C. 手機上的app性能測試怎麼測
你可以安裝這個軟體,然後打開看看流暢度,各方面的功能,設置以及穩定性等。
D. app測試流程是什麼
移動App的測試流程與傳統軟體的測試流程大體相同,在測試之前分析軟體需求並對需求進行測試,需求測試完成後制訂測試計劃等,但移動App測試的要點與傳統軟體測試要點不同,因此在具體實施細節上也不相同。
移動App測試基本流程如下
(1)接受測試版本:由開發人員提交給測試人員。
(2) App版本測試:主要檢查App開發階段對應的版本是否一致。
(3)UI測試:檢查App界面是否與需求設計的效果-致。
(4)功能測試:核對項目需求文檔,測試App功能是否滿足客戶需求。
(5)專項測試:對移動App進行專項測試。
(6)正式環境測試:模擬實際使用環境進行測試。
(7)上線准備:測試通過後,對測試結果進行總結分析,為App上線做准備。
移動App開發完成後,提交給測試人員。測試人員首先對當前App版本進行檢查,通過後進行基本的UI測試,檢查界面效果是否與需求設計相符合,之後依據需求文檔進行功能測試,完成這些工作後進行專項測試等。最後在實際運行環境中進行測試,測試通過後做上線准備工作。
E. 拿到一個APP後主要的測試項有什麼
我在黑馬程序員學習軟體測試時,當時我們做了APP的測試,主要我主要考慮的有:邏輯測試, 功能測試,界面測試,兼容性測試,弱網測試,壓力測試,中斷測試,漏洞檢測這些東西, 實際操作時根據不同情況和需求調整:
1. 邏輯測試:主要走業務流程,如果是一個電商,就需要把基本的購買,付款,發回收貨,評價等等流程走一下,看一下能不能走通,有沒有功能遺漏
2. 功能測試: 把APP中的主要業務流程中的功能重點覆蓋,甚至能點的所有都點一下, 看一下有沒有問題或者這卡死,閃退
3. 界面測試: 檢查頁面的美觀和同原型的一致性
4. 兼容性測試: 這個是APP測試中最重要的一環, 針對不同機型,和不同系統做適配, 確認APP不會有兼容問題的頁面錯亂和崩潰
5. 弱網測試: 重點觀察不同網路環境下的用戶使用體現和一些提示信息和頁面是否正確
6. 中斷測試: 主要看APP正常使用過程中,強制關閉,斷電斷網,電話(電話/語音電話/視頻電話)等的恢復情況
7. 壓力測試: 密集操作和大量用戶場景下app的流暢度
8. 安裝卸載升級: APP應用的特殊性造成,用戶對其安裝卸載升級操作比較頻繁,所以需要重點驗證不同場景下的正確安裝卸載升級
F. 如何做好app的測試工作測試流程中都包含哪些方面
騰訊有個平台可以實現適配兼容、伺服器壓力、性能測試、弱網路、耗電量測試等等,挺全面的。WeTest騰訊質量開放平台,本人親測過體驗還不錯。
下面說一下測試一個App具體包括哪些方面,以及每個方面的關鍵點。
測試人員常被看作bug尋找者,但你曾想過他們實際是如何開展測試的嗎?你是否好奇他們究竟都做些什麼,以及他們如何在一個典型的技術項目中體現價值?本文將帶你經歷測試人員的思維過程,探討他們測試app時的各種考慮。本文的目的在於揭示測試人員的這一思維過程,並展示他們通常所考慮內容的廣度和深度。
本文是基於我的工作經驗而寫的,作為一名敏捷軟體開發團隊的測試經理,我一心投入測試工作。在與其他app測試專家交流的過程中,我深刻了解到app測試工作的困難。在日常工作的摸索中,我將如何做好app的測試歸結為如下內容。
(1) 非功能測試
app測試的一個重要方面是app的非功能需求。移動app在推出市場或進行進一步開發前,測試人員有一定的職責做該類需求的跟蹤工作。
早期開發階段要進行的第一個測試應該是實用性測試。通常是由alpha用戶或同事進行的。走進一家咖啡館或餐廳,問問裡面的人他們的app使用情況。讓他們看看現階段開發的第一個版本並收集反饋,看看用戶是否能很好地使用新功能,以便得出第一印象。
(2) 功能測試
每項開發的新功能都需要進行測試。app測試中功能測試是一個重要方面。測試人員應該要進行手動測試和後期的自動化測試維護。剛開始測試時,測試員必須把app當做"黑盒"一樣進行手動測試,看看提供的功能是否正確並如設計的一樣正常運作。除了經典軟體測試,像點擊按鈕、提交訂單看看會發生什麼,測試員還必須執行更多功能的app測試。
除了整個手動測試過程,測試自動化對移動app也很重要。每個代碼變化或新功能都可能影響現存功能及它們的狀態。通常手動回歸測試時間不夠,所以測試員不得不找一個工具去進行自動化回歸測試。現在市面上有很多自動化測試工具,有商業的也有開源的,面向各個不同平台,如Android,iPhone,WindowsPhone7,BlackBerry以及移動Webapp。根據開發策略和結構,品質管理測試專家需找出最適合他們環境的自動化工具。
(3) 客戶端性能測試
一個App做的好不好,不僅僅只反應在功能上。被測的app在中低端機上的性能表現也很重要。比如:一個很好玩的游戲或應用,只能在高端機上流暢運行,在中低端機上卡的不行,也不會取得好的口碑。
關於App的性能測試,我們比較關注的參數有:CPU,內存,耗電量,流量,FPS。同時也需關注一下App的安裝耗時和啟動耗時。
目前大家可能比較困惑的一個問題,多高的CPU,內存,耗電量,流量,FPS才算是符合發布的值呢?這里可以告訴大家,可以參考精品游戲的一些數值,將自己研發的app與業內精品的app數據做對比。
(4) 適配兼容測試
市面上目前存在的移動設備五花八門,下圖列出過去12個月的移動設備品牌佔比情況。
(6) 耗電量測試
App在手機上的表現,除了功能外,app是否耗電,也是測試過程中重點要關注的一項。手機設備在滿電的時候,這個App能玩多久;App每小時的耗電是多少;App在某個場景掛機10分鍾耗電量是多少;這些都是我們平時在耗電量測試中比較關注的點。
(7) 協議測試
模擬客戶端直接發送協議包給伺服器,看看伺服器是否有一定的校驗,認不認客戶端發過來的數據。協議測試,主要是為了處理用戶發送惡意協議到伺服器,騙過伺服器的校驗。
(8) 安全測試
App在上線前,都需要做詳細的安全測試。安全測試主要為了檢測應用是否容易被外界破解;是否存在被惡意代碼注入的風險;上線後外掛的風險高不高等。
(9) 伺服器性能測試
伺服器性能測試,主要包含單機容量測試和24小時穩定性測試。單機容量測試,可以檢測到單機伺服器在90%的響應時間和成功率都達標的前提下,能夠承載多少用戶量。使用特定游戲模型壓測24小時,服務無重啟,內存無泄漏,並且各事務成功率達標。
這個可以在WeTest入口預約。
(10) 伺服器容災測試
伺服器容災測試,主要指某個服務進程奔潰掉後,是否具有自行恢復能力。比如游戲邏輯進程消失後,是否會自動拉起;memcached崩潰時,是否會重新啟動,是否會對所有玩家有影響。這些都是app測試過程中需要考慮的因素。
(11) 中斷測試
針對智能終端應用的服務等級劃分方式及實時特性所提出的測試方法,如:App在前台和後台運行狀態時與來電、文件下載、音樂收聽等關鍵運用的交互情況測試等。測試電話,簡訊,彩信,微博或其他通知進來時app的反應。
(12) 上線後期的輿情跟蹤
新的app上線後,用戶對此應用的評價,存在哪些測試期間未察覺的Bug,論壇上對於該應用熱門的帖子有哪些,應用商店中該應用的口碑如何等,都是app在上線後,測試人員需要關注的點。若需要測試期間未發現的Bug,需要新測試服進行確認並根據該問題的修復。
很高興看到騰訊在研發生產資料,而不是產品,好的企業應該積累出自己的工具鏈,並造福生態圈!最後祝大家都能把手下的app測試工作做好!
G. 手機app如何全方位測試
安全性測試,是app專項測試中必須要做的一環,簡單列舉下目前常做的測試類別:
1. 用戶隱私
檢查是否在本地保存用戶密碼,無論加密與否
檢查敏感的隱私信息,如聊天記錄、關系鏈、銀行賬號等是否進行加密
檢查是否將系統文件、配置文件明文保存在外部設備上
部分需要存儲到外部設備的信息,需要每次使用前都判斷信息是否被篡改
2. 文件許可權
檢查App所在的目錄,其許可權必須為不允許其他組成員讀寫
3. 網路通訊
檢查敏感信息在網路傳輸中是否做了加密處理,重要數據要採用TLS或者SSL
4. 運行時解釋保護
對於嵌有解釋器的軟體,檢查是否存在XSS、SQL注入漏洞
使用webiew的App,檢查是否存在URL欺騙漏洞
5. Android組件許可權保護
禁止App內部組件被任意第三方程序調用。
若需要供外部調用的組件,應檢查對調用者是否做了簽名限制
6. 升級
檢查是否對升級包的完整性、合法性進行了校驗,避免升級包被劫持
7. 3rd庫
如果使用了第三方庫,需要跟進第三方庫的更新