王佳明 駱德漢



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