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