手機軟體測試 批處理自動識別多裝置(手機)技術

2021-09-28 17:51:55 字數 3482 閱讀 3775

手機軟體測試工作,很多時候都需要adb 連線手機執行一些操作,只連線一台手機還好,但是要連線多個手機同時執行一些操作,比如monkey,壓力操作時,就比較麻煩

目前實現多裝置的連線方法有,但是操作都比較麻煩,操作方法如下:

1、先輸入adb devices 獲取裝置號:

adb devices
終端視窗會顯示已經連線的裝置

2、使用adb -s [裝置號] *** 指定裝置進行操作

這樣確實可以進行指定裝置連線後,進行操作,但是比較麻煩,而且當處理事件比較多的時候,這得操作到啥時候,比如:進行5臺手機logcat日誌記錄

例如:我需要獲取5臺裝置上安裝的第三方包名,那該怎麼操作呢?

如下:

@echo off 

adb devices

set /p dev1=

"請輸入裝置號1:"

set /p dev2=

"請輸入裝置號2:"

set /p dev3=

"請輸入裝置號3:"

set /p dev4=

"請輸入裝置號4:"

set /p dev5=

"請輸入裝置號5:"

adb -s %devl% shell pm list package -3 >d:\package.txt

adb -s %dev2% shell pm list package -3 >>d:\package.txt

adb -s %dev3% shell pm list package -3 >>d:\package.txt

adb -s %dev4% shell pm list package -3 >>d:\package.txt

adb -s %dev5% shell pm list package -3 >>d:\package.txt

echo

done

pause

實際使用會發現,**冗餘,不實用我們是否可以考慮,自動識別到連線到電腦的手機有多少臺?然後自動分配裝置號到乙個變數,然後每次呼叫adb -s [裝置號]時,自動換成對應的裝置號?

1、獲取連線上的裝置個數

使用adb devices 可以得到每台裝置的連線狀態,那麼就可以從返回值中獲取到裝置個數

例如:現在已經連線兩台裝置,使用adb devices讀取,並輸出到文字,就能得到以下文字內容:

list of devices attached

3fb371d3 device

7bd3c84d device

**實現:

adb devices >devices.txt

#將連線上的裝置輸出到乙個文字

for /f "tokens=2 delims=:" %%a in

('find /c /v "" devices.txt'

)do set/a result=%%a

#從文字中讀取行數,並賦值給result

set /a num =%result%-1

#由於會把 list of devices attached 也存入文件中,所以行數應該-1

最後num的值就是裝置的個數

2、繼續從devices文件中獲取裝置號

當知道裝置個數後,我們需要將每個裝置的序列號,都取出來,設想有多少裝置,就執行賦值裝置多少次,可以用乙個for 迴圈進行讀取每一行的第乙個字段,首次讀取,需要跳過文字中的首行,也就是「list of devices attached」 這一行,而且每次讀取一行後,第二次讀取都需要跳過已經讀取過的的那一行

設想始終是設想,時間才是檢驗真理的唯一標準,開始幹!!

**實現:

set /a n=1

#首先跳過第一行,設定跳過首行

for /l %%i in

(1,1,%num%)do(

#有多少裝置就迴圈多少次(%num%值是上面**取到的裝置個數)

for /f "skip=%n%" %%j in

(devices.txt)

do(set devices=%%j)

echo %devices%

#每次迴圈看下讀取到的devices是什麼

set /a n +=1

#每次讀取後都跳過+1行

)

執行後發現,終端顯示 『echo 處於關閉狀態。』,這是為什麼呢,我們把%%j都顯示出來看看

for /l %%i in

(1,1,%num%)do(

for /f "skip=%n%" %%j in

(devices.txt)do(

set devices=%%j

echo %%devices

)echo %devices%

set /a n +=1

)

終端顯示:

這是什麼鬼?這不是我們想要的結果,翻閱了很多資料,終於找到了原因所在:

批處理讀取命令時是按行讀取的(另外例如 for 命令等,其後用一對圓括號閉合的所有語句也當作一行),在處理之前要完成必要的預處理工作,這其中就包括對該行命令中的變數賦值。在不啟用變數延遲,也不對變數動態捕獲其擴充套件變化時,變數在預處理階段不作改變

setlocal enabledelayedexpansion ,就是啟用變數延遲,我們可以形象的認為是啟用了「對變數動態捕獲擴充套件變化」。而 ! 括起來的變數,就是要動態捕獲擴充套件的目標變數,如果不需要,可以繼續使用 % 括變數。

再嘗試使用了變數延遲後的效果:

發現只能讀取到最後乙個裝置的序列號,檢查下,還是變數延時的問題,skip=%n%,如果不啟動延時,那麼n只能取到最新的乙個值,需要將n也啟用延時

skip不支援將n啟用延時????,搜尋了下,果然如此。。。(在此感嘆批處理的鬼斧神工~~~~)

不過黃天不負有心人,還是找到了辦法

使用call語句,呼叫返回值

完美得到每台裝置的序列號!!

**實際不複雜,但是可以在後續使用中增加很大的方便,我目前可以使用這套方法,同時給多個手機進行壓力測試和monkey測試,更多技巧等待各路大神指教!

手機軟體測試

手機作為專用的消費類電子產品需要進行以下測試 可靠性測試 對於硬體則是rqt 對於軟體則是field trial 標準符合性測試 fta 互操作性測試 iot 安全 性測試 安規測試 強度測試等。其中,有些種類的測試,例如fta,有嚴格的標準 gsm 3gpp等 來明確被測的功能點,測試人員 所要做...

軟體測試 手機軟體測試

測試計畫 測試方案 測試用例 執行 功能測試 流程測試 功能點測試 相容性測試 交叉測試 安裝解除安裝測試 包括應用的公升級 壓力測試 介面壓力測試 功能測試 對具體功能點一一測試,確保每個點都能正確實現相應功能 相容性測試 對市場上主流的裝置安裝應用執行測試,確保都能正常執行 交叉測試 對於正在執...

手機軟體測試總結

乙個合格的手機軟體測試工程師要掌握的東西是很多很多的。在我個人理解中,乙個合格的高階手機軟體測試工程師應該具有最基本的兩點知識 軟體測試理論知識和一定的開發技能。1.軟體測試理論知識 這個不用多說,軟體測試工程師必須要掌握的,軟體測試如何融入整個開發的流程,什麼時候介入,什麼時候結束,如何搭建測試環...