王佳明 駱德漢



摘要:針對Android手機應用軟件測試,提出了基于monkeyrunner框架的自動化測試解決方案。對于Android手機常用的測試場景給出了具體的實現方法,測試結果表明,通過基于monkeyrunner的Python腳本實現測試用例自動化,減少了重復和煩瑣的手工測試,提高了Android手機應用測試的效率,節約了人力成本,縮短了軟件開發周期。
關鍵詞:Android;自動化測試框架;monekyrunner;Python
中圖分類號:TP311.1
文獻標識碼:A
文章編號:1009-3044(2019)34-0234-03
1 背景
自2011年以來,Android -直是全球最暢銷的智能手機操作系統,截至2018年12月,Google Play商店擁有超過260萬個應用程序[1]。隨著手機應用的功能越來越復雜,更新迭代越來越快,傳統的手工測試已經不能滿足要求,Android手機應用自動化測試的需求越來越迫切。自動化測試是把以人為驅動的測試行為轉化為機器執行的一種過程[2],通過所開發的軟件測試工具、腳本等來模擬用戶行為,按照事先設計好的路徑,完成固定的流程和操作,實現替代人工重復性的工作。相對于手工測試,自動化測試具有良好的可操作性、可重復性和高效率等特點。軟件自動化測試是提高測試效率、覆蓋率和可靠性等的重要手段,它是軟件測試不可分割的一部分。常用的Android自動化測試框架有monkey,monkeyrnner,Robotium,UIAutoma-tor等,本文主要介紹基于monkeyrunner框架的Android應用自動化測試。
2 monkeyrunner簡介
monkeyIunner提供了一個API,可以通過這個API在An-droid代碼之外控制Android設備或模擬器,通過monkeyrunner,可以編寫自動化測試腳本程序去安裝一個Android應用程序或測試包并運行它,向它發送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲于工作站[3]。monkeyrunner API可以跨多個設備或模擬器,可以在同一時間接上所有的設備或一次啟動全部模擬器,也可以用程序啟動一個配置好的模擬器,運行一個或多個測試,然后關閉模擬器。由于monkeyrunner是一個API工具包,可以基于PYthon模塊和程序開發一整套系統,以此來控制Android設備。
monkeyrunner API由三個模塊組成,分別為MonkevRunner,MonkeyDevice,Monkeylmage。MonkeyRunner提供了將monkev-runner連接到設備或模擬器的方法,它還提供了為monkeyrunner程序創建UI以及顯示內置幫助的方法;MonkeyDevice提供了安裝和卸載軟件包,啟動Activity以及向應用程序發送鍵盤或觸摸事件的方法,還可以使用它來運行測試包;Monkeylmage提供捕獲屏幕,將位圖圖像轉換為各種格式,比較兩個Monkeylmage對象以及將圖像寫入文件的方法[4]。
3 開發環境搭建
本節主要介紹怎樣在Windowsl0 64位操作系統下搭建Android開發環境,需要提前準備好JDK(Java Development Kit),SDK(Software Development Kit)和Python安裝文件。根據作者的經驗,JDK和SDK安裝過程相對簡單,主要是安裝完成后配置相應的環境變量略顯復雜,因此下面主要介紹JDK和SDK環境變量的配置。由于Python安裝和配置都很簡單,且相關資料很多,在此不再贅述。
3.1 JDK環境變量的配置
JDK是Java語言的軟件開發丁具包,它是整個Java開發的核心,它包含了Java的運行環境,Java工具和Java基礎的類庫[5]。在電腦上安裝好JDK后,按照下面的步驟配置JDK的環境變量。
Step 1:鼠標右鍵點擊“我的電腦”圖標,選擇屬性一高級系統設置一高級一環境變量。
Step 2:新建系統變量,變量名為:JAVA_HOME,變量值為:C:\Program Files\Java\j dkl.8.0_191,也就是安裝JDK的根目錄。這里需要注意的是,每個人JDK安裝路徑可能不一樣,需要根據自己JDK實際安裝路徑填寫,如圖2所示。
3.2 SDK環境變量的配置
Android SDK.即Android軟件開發工具包,是軟件開發工程師用于為特定的軟件包、軟件框架、硬件平臺、操作系統等建立應用軟件的開發工具的集合。為Android提供了必要的API庫和開發工具來構建,測試和調試應用程序[6]。簡單來講,An-droid SDK可以看成用于開發和運行Android應用的一個軟件。SDK不需要安裝,將下載好的SDK壓縮包解壓到本地電腦相應的目錄下即可,然后按照下面的步驟配置SDK的環境變量。
Step 1:鼠標右鍵點擊“我的電腦”圖標,選擇屬性一高級系統設置-高級一環境變量。
Step 2:新建系統變量,變量名為:ANDROID_HOME,變量值為:D:\android-sdk_r24.4.1-windows\android-sdk-windows,也就是前面提到的SDK壓縮包解壓到本地電腦后的路徑。
Step 3:修改系統環境變量Path,在Path中新建%AN-DROID_HOME% \platform-tools和%ANDROID_HOME% \tools,如圖5所示。
4 自動化測試實例
本文測試所用手機為酷派cooll dual,型號為C106-9,手機Android版本為6.0.1。測試電腦為Windowsl0 64位操作系統,所有測試腳本都是基于Python 3.7.0開發。在進行測試之前,請將手機通過數據線連接至測試電腦,確保手機進入開發者選項且允許USB調試,并允許安裝來自未知來源的應用和后臺安裝應用。
4.1 自動化實例一
實例一測試用例:實現自動安裝手機QQ,并卸載手機中已經安裝好的新浪微博。
4.1.1測試腳本代碼
測試腳本代碼如下,將其保存為install_uninstall.py至電腦d:\scripts目錄下。
4.1.2 執行測試
將手機通過數據線連接至電腦后,在電腦cmd中執行:monkevrunner d:\scripts\install_uninstall.py,如圖7所示。
4.2 自動化測試實例二
實例二測試用例:實現手機QQ的自動啟動和登錄,默認用戶名為‘123456,密碼為‘654321。
4.2.1 測試腳本代碼
測試腳本代碼如下,將其保存為login.py至電腦d:\scripts目錄下。
4.2.2 執行測試
將手機通過數據線連接至電腦后,在電腦cmd中執行mon-keyrunner d:\scripts\login.py,如圖9所示。
4.3 自動化測試實例三
實例三測試用例:實現抖音的自動啟動和自動劃屏播放下一個視頻的功能,并將每個視頻截屏后保存至本地電腦。
4.3.1 測試腳本代碼
測試腳本代碼如下,將其保存為douyin.py至電腦d:\scripts目錄下。
4.3.2 執行測試
將手機通過數據線連接至電腦后,在電腦cmd中執行:monkeyrunner d:\scripts\douyin.py.如圖11所示。
5 結束語
本文提出了一種基于monkeyrunner框架的Android應用自動化測試方案,根據Android常用的測試場景給出了具體的實現方法,這些方法可以廣泛適用于Android手機應用的功能測試以及回歸測試等。當然monkeyrunner也有它的不足,例如點擊和拖拽方法需要獲取坐標,但坐標依賴于手機屏幕分辨率,如果手機屏幕分辨率一旦改變,就會使得相應的操作可能無效,因此monkeyrunner腳本代碼的復用率和可移植性比較差,這時就需要尋求其他更好的測試方案。
參考文獻:
[1] Android (operating system)[EB/OLl. https://en.wikipedia.org/wi-ki/Androidjoperating_system).
[2]李龍,李向函,馮海寧,等.軟件測試實用技術與常用模板[Ml.北京:機械工業出版社,2010.
[3] monkeyrunner[EB/OL]. https://developer. android. com/studio/test/monkeyrunner.
[4]許奔.深入理解Android自動化測試[M].北京:機械工業出版社,2016.
[5]支艷強,謝文閣,王麗麗.基于JDK的Java集成開發環境的設計和實現[J]‘大眾科技,2011(9):9.
[6]周宇,尹生強,王冬青,等,基于Eclipse和Android系統的App開發平臺搭建研究[J].青島大學學報:工程技術版,2016,31(3):50.
【通聯編輯:謝媛媛】
收稿日期:2019-10-08
作者簡介:王佳明(1984-),男,湖北洪湖人,碩士研究生,主要研究方向為軟件測試。