利用AM命令制作自己的自動化工具

原創湛騰科技2016-05-02

當我做移動外場入庫測試的時候,使用惠捷朗的自動化測試軟件CMDC tester,心里在想,自己能不能做一個類似的軟件,因為外場某些測試中是不能用自動化軟件或者根本沒有自動化軟件,而一部分用例就是屬于壓力測試,e.g.打CSFB電話N次(真是again and again),心里告誡自己我們是IT行業(假裝是吧)的測試人員,不是流水線的生產工,不能悶頭重復一個工序。把一些低端性,重復量大的任務交給軟件來執行。

Android本身支持原生的自動化測試工具——Monkey,可以它是無序的、用于壓力測試,可惜無法指定執行特定的Action,不是我們想要的結果。 經過大量搜索,終于找到符合初步要求的工具——AM命令,正確來說因該是ADB AM命令,AM的意思是activity manager,你能使用am去模擬各種系統的行為,例如去啟動一個activity,發送廣播進程等等。 輸入AM –help看下命令的參數構成

am命令在系統中的具體應用:

Music 和 Video(音樂和視頻)的啟動方法為:

# am start -n com.android.music/com.android.music.MusicBrowserActivity

Camera(照相機)的啟動方法為:

# am start -n com.android.camera/com.android.camera.Camera

Browser(瀏覽器)的啟動方法為:

# am start -n com.android.browser/com.android.browser.BrowserActivity

啟動瀏覽器 :

am start -a android.intent.action.VIEW -d http://www.google.cn/

撥打電話 :

am start -a android.intent.action.CALL -d tel:xxxxx

以撥打電話為例

沒有返回值,Action是發出去了,究竟執行的結果如何我們無從得知。 需要另外的工具檢查終端的狀態,判斷Action執行與否。 查詢Android的開發文檔得知 PhoneStateListener類中有一個onCallStateChanged方法可以檢測終端的通話狀態 途徑是有了,但ADB無法直接使用,那是提供給application的方法,那只好寫APK。

要使用onCallStateChanged()方法需要繼承PhoneStateListener類并重寫它的方法 ,調用方法TelephonyManager.listen()

這個APK至少要實現PhoneStateListener和TelephonyManager這2個類,而使用TelephonyManager.listen()監聽模式,可以讓電話狀態發生改變的時候,系統通知程序,無需主動查詢。

放干貨——APK代碼實現

清單文件中記得加入READ_PHONE_STATE、WRITE_EXTERNAL_STORAGE、MOUNT_UNMOUNT_FILESYSTEMS權限;ListenerServer類標記為服務。

APK實現方式:

1、ListenerServer.Class繼承Service,好處是后臺可以監聽電話狀態;

2、TM.listen(listener, PhoneStateListener.LISTEN_CALL_STATE)是Start監聽;

TM.listen(listener,PhoneStateListener.LISTEN_NONE)是停止監聽;

3、writeFileSdcardFile()方法用于保存監聽到的結果,下面會用到;

4、MainActivity.Class用于啟動/停止監聽服務,還有接收監聽結果;

說說PC端怎么查詢APK保存的電話狀態,代碼中我將狀態保存在內置存儲中的2個TXT文件:TerminalInfo1.txt和TerminalInfo2.txt 使用下面的命令就可以查看TXT的內容

結合APK和ADB_AM批處理可以做出簡單的自動化腳本

批處理代碼

具體運行情況:

以這樣的方式實現自動撥打/掛斷電話,需要的權限較小,據我所知惠捷朗的CMDC tester要正常運行要么簽名安裝要么系統ROOT,前者無法做到,因為不是系統發布者,后者會破壞系統安全性,誘發不可知的問題,不是我們想要的;但這種腳本缺點比較明顯,功能弱小,無法統計數據,作為一種輔助測試手段,我認為可行。


來自湛騰科技 廣州FT胡嘉權的分享

(本文為湛騰科技員工原創)

利用AM命令制作自己的自動化工具

原創湛騰科技2016-05-02

當我做移動外場入庫測試的時候,使用惠捷朗的自動化測試軟件CMDC tester,心里在想,自己能不能做一個類似的軟件,因為外場某些測試中是不能用自動化軟件或者根本沒有自動化軟件,而一部分用例就是屬于壓力測試,e.g.打CSFB電話N次(真是again and again),心里告誡自己我們是IT行業(假裝是吧)的測試人員,不是流水線的生產工,不能悶頭重復一個工序。把一些低端性,重復量大的任務交給軟件來執行。

Android本身支持原生的自動化測試工具——Monkey,可以它是無序的、用于壓力測試,可惜無法指定執行特定的Action,不是我們想要的結果。 經過大量搜索,終于找到符合初步要求的工具——AM命令,正確來說因該是ADB AM命令,AM的意思是activity manager,你能使用am去模擬各種系統的行為,例如去啟動一個activity,發送廣播進程等等。 輸入AM –help看下命令的參數構成

am命令在系統中的具體應用:

Music 和 Video(音樂和視頻)的啟動方法為:

# am start -n com.android.music/com.android.music.MusicBrowserActivity

Camera(照相機)的啟動方法為:

# am start -n com.android.camera/com.android.camera.Camera

Browser(瀏覽器)的啟動方法為:

# am start -n com.android.browser/com.android.browser.BrowserActivity

啟動瀏覽器 :

am start -a android.intent.action.VIEW -d http://www.google.cn/

撥打電話 :

am start -a android.intent.action.CALL -d tel:xxxxx

以撥打電話為例

沒有返回值,Action是發出去了,究竟執行的結果如何我們無從得知。 需要另外的工具檢查終端的狀態,判斷Action執行與否。 查詢Android的開發文檔得知 PhoneStateListener類中有一個onCallStateChanged方法可以檢測終端的通話狀態 途徑是有了,但ADB無法直接使用,那是提供給application的方法,那只好寫APK。

要使用onCallStateChanged()方法需要繼承PhoneStateListener類并重寫它的方法 ,調用方法TelephonyManager.listen()

這個APK至少要實現PhoneStateListener和TelephonyManager這2個類,而使用TelephonyManager.listen()監聽模式,可以讓電話狀態發生改變的時候,系統通知程序,無需主動查詢。

放干貨——APK代碼實現

清單文件中記得加入READ_PHONE_STATE、WRITE_EXTERNAL_STORAGE、MOUNT_UNMOUNT_FILESYSTEMS權限;ListenerServer類標記為服務。

APK實現方式:

1、ListenerServer.Class繼承Service,好處是后臺可以監聽電話狀態;

2、TM.listen(listener, PhoneStateListener.LISTEN_CALL_STATE)是Start監聽;

TM.listen(listener,PhoneStateListener.LISTEN_NONE)是停止監聽;

3、writeFileSdcardFile()方法用于保存監聽到的結果,下面會用到;

4、MainActivity.Class用于啟動/停止監聽服務,還有接收監聽結果;

說說PC端怎么查詢APK保存的電話狀態,代碼中我將狀態保存在內置存儲中的2個TXT文件:TerminalInfo1.txt和TerminalInfo2.txt 使用下面的命令就可以查看TXT的內容

結合APK和ADB_AM批處理可以做出簡單的自動化腳本

批處理代碼

具體運行情況:

以這樣的方式實現自動撥打/掛斷電話,需要的權限較小,據我所知惠捷朗的CMDC tester要正常運行要么簽名安裝要么系統ROOT,前者無法做到,因為不是系統發布者,后者會破壞系統安全性,誘發不可知的問題,不是我們想要的;但這種腳本缺點比較明顯,功能弱小,無法統計數據,作為一種輔助測試手段,我認為可行。


來自湛騰科技 廣州FT胡嘉權的分享

(本文為湛騰科技員工原創)
安微快3技巧 体彩幸运赛车走势图 北京快3路线 11选5任三 青海十一选五走势图2胆拖4 002456股票分析 茅台股票今日股价 广西快乐双彩最牛网 加拿大28输得一无所有 好运彩彩票平台免费下载 河南22选5福彩专家预测 pk10赛车计划软件 香港正版马会精选资料大全 河北福利彩票排列七 七乐彩选号的独门技巧 哪里有股票配资 黑龙江省体育彩票