辛艷雙
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
基于手機(jī)遠(yuǎn)程控制的自動(dòng)化測試技術(shù)
辛艷雙
(中國移動(dòng)(深圳)有限公司,廣東 深圳 518048)
安卓手機(jī)設(shè)備及手機(jī)應(yīng)用的測試工作非常普遍,且非常重要。本文首先簡要分析安卓手機(jī)測試現(xiàn)狀,針對目前存在的各種問題,結(jié)合所在公司的實(shí)際需求,提出基于手機(jī)遠(yuǎn)程控制的自動(dòng)化測試系統(tǒng),接著介紹了該系統(tǒng)的的系統(tǒng)特點(diǎn)、系統(tǒng)架構(gòu)、技術(shù)及自動(dòng)化腳本執(zhí)行流程。實(shí)踐表明該系統(tǒng)可提高測試效率及測試結(jié)果準(zhǔn)確性,降低對測試人員的技術(shù)要求,克服普通手機(jī)自動(dòng)化測試工具的缺陷。
安卓;遠(yuǎn)程手機(jī)控制;手機(jī)自動(dòng)化測試;手機(jī)自動(dòng)化腳本
近年來,隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,各種智能手機(jī)及APP應(yīng)運(yùn)而生,手機(jī)產(chǎn)品和用戶交互非常緊密,手機(jī)軟件質(zhì)量顯得尤其重要。要使最終用戶對手機(jī)軟件感到滿意,必須在手機(jī)軟件發(fā)布之前進(jìn)行充分測試。目前國內(nèi)的手機(jī)測試技術(shù)大多屬于低端級(jí)別的手工操作,缺少自動(dòng)測試工具進(jìn)行功能和性能測試。無論從實(shí)現(xiàn)技術(shù)上,流程的規(guī)范性與合理性,還是從對測試概念的理解上都存在相當(dāng)?shù)牟蛔恪km然市面上存在一些手機(jī)自動(dòng)化測試工具,但這些工具的使用過程中,存在以下缺陷:
(1)測試手機(jī)需租用,多次測試時(shí),需要一定的費(fèi)用投入;
(2)部分機(jī)型始終被占用,影響緊急測試任務(wù)的開展;
(3)自動(dòng)化測試支撐力度不夠,仍需較多手工操作;
(4)測試粒度不夠,無法實(shí)現(xiàn)定制化的測試需求;
(5)測試用例或測試數(shù)據(jù)上傳下載過程,存在安全隱患。
本文首先介紹基于手機(jī)遠(yuǎn)程控制的自動(dòng)化測試系統(tǒng)的特點(diǎn),其次介紹系統(tǒng)架構(gòu),然后分析系統(tǒng)技術(shù)及手機(jī)自動(dòng)化腳本實(shí)現(xiàn)流程,最后對全文進(jìn)行總結(jié),幫助讀者搭建自己的手機(jī)自動(dòng)化測試系統(tǒng)。
基于手機(jī)遠(yuǎn)程控制的自動(dòng)化測試系統(tǒng)不僅具備大部分手機(jī)自動(dòng)化測試工具的功能,即模擬真機(jī)操作,遍歷測試、兼容性測試、性能測試、手機(jī)信息反饋等,還具有以下特點(diǎn):
(1)手機(jī)、服務(wù)器資源充足情況下,部署簡單;
(2)手機(jī)遠(yuǎn)程監(jiān)控及管理,方便維護(hù);
(3)自動(dòng)化測試腳本編寫簡單,無任何編程技術(shù)要求;
(4)提供各種豐富詳實(shí)的測試日志數(shù)據(jù),滿足實(shí)際工作中不同的查詢、統(tǒng)計(jì)、分析需要。
手機(jī)自動(dòng)化測試系統(tǒng),通過手機(jī)遠(yuǎn)程控制,用戶可以直接使用pc的瀏覽器對遠(yuǎn)程Android手機(jī)的系統(tǒng)進(jìn)行各種模擬操作,或編寫腳本進(jìn)行自動(dòng)化測試。
圖1 手機(jī)自動(dòng)化測試系統(tǒng)架構(gòu)
整個(gè)手機(jī)控制系統(tǒng)由用戶端、服務(wù)端、和手機(jī)端三個(gè)部分構(gòu)成。
三個(gè)端之間主要通過websocket和http進(jìn)行數(shù)據(jù)通訊。
(1)用戶端負(fù)責(zé)提供用戶操作的界面,顯示手機(jī)的界面信息。
(2)服務(wù)端用于管理電腦與手機(jī)設(shè)備的連接,為用戶端和手機(jī)端提供數(shù)據(jù)通訊的橋梁。
(3)手機(jī)端提供對手機(jī)系統(tǒng)進(jìn)行控制和對手機(jī)應(yīng)用進(jìn)行控制的功能。
圖2 手機(jī)自動(dòng)化測試系統(tǒng)技術(shù)架構(gòu)
4.1 用戶端
4.1.1 設(shè)備列表模塊
(1)實(shí)時(shí)獲取手機(jī)在線狀態(tài)、操作系統(tǒng)信息
(2)實(shí)時(shí)獲取手機(jī)占用情況
圖3 設(shè)備列表截圖
4.1.2 設(shè)備控制模塊
(1)實(shí)時(shí)獲取手機(jī)設(shè)備當(dāng)前的屏幕,并顯示在用戶端
(2)發(fā)送控制協(xié)議對手機(jī)進(jìn)行操作
(3)上傳安裝APK包
圖4 設(shè)備控制流程圖
4.1.3 應(yīng)用控制模塊
圖5 應(yīng)用控制流程圖
4.1.4 UI組件
(1)基于html5
(2)采用javascript+css開發(fā)
(3)通過瀏覽器即可使用
(4)采用Metro UI風(fēng)格,簡潔易用
(5)提供tab、菜單、表格、常用表單、按鈕、對話框等常用UI組件
4.1.5 通訊模塊
(1)用戶端通過websocket與服務(wù)端通訊
(2)圖片以二進(jìn)制格式傳輸
(3)設(shè)備列表、手機(jī)屏幕顯示、設(shè)備狀態(tài)更新功能,通訊協(xié)議為json格式
(4)設(shè)備列表服務(wù)
(5)從服務(wù)器端獲取手機(jī)設(shè)備列表
(6)自動(dòng)更新手機(jī)列表的狀態(tài)
4.1.6 資源管理
(1)手機(jī)設(shè)備信息管理:手機(jī)基本信息、設(shè)備借用信息管理
(2)遠(yuǎn)程手機(jī)管理:手機(jī)遠(yuǎn)程控制用戶對手機(jī)使用權(quán)限的管理
(3)SIM卡信息管理:SIM卡基本信息及借用信息管理
4.2 服務(wù)端
4.2.1 設(shè)備列表服務(wù)
(1)為用戶端提供所有設(shè)備的數(shù)據(jù)
(2)聚合設(shè)備服務(wù)器的設(shè)備信息
(3)定位設(shè)備
(4)將用戶端/接口端的請求轉(zhuǎn)發(fā)到指定的設(shè)備服務(wù)器
4.2.2 設(shè)備服務(wù)
(1)管理手機(jī)設(shè)備與PC的USB連接
(2)建立虛擬設(shè)備,負(fù)責(zé)與手機(jī)端進(jìn)行數(shù)據(jù)通訊
(3)將當(dāng)前虛擬設(shè)備信息聚合設(shè)備列表服務(wù)
(4)實(shí)時(shí)將虛擬設(shè)備的狀態(tài)變化同步到設(shè)備列表服務(wù)
圖6 設(shè)備服務(wù)過程圖
4.3 手機(jī)端
4.3.1 截圖服務(wù)
(1)實(shí)時(shí)讀取手機(jī)設(shè)備的framebuffer數(shù)據(jù)
(2)使用libjpeg-turbo對framebuffer進(jìn)行處理
4.3.2 手機(jī)控制服務(wù)
(1)使用monkey服務(wù)模擬對手機(jī)的各種操作(觸摸、劃屏、輸入等等)
(2)通過簡單無界面的輸入法實(shí)現(xiàn)中文輸入
4.3.3 服務(wù)接口
(1)使用HTTP協(xié)議
(2)接口使用JSON格式交換數(shù)據(jù)
(3)提供短信收發(fā)、獲取手機(jī)已安裝應(yīng)用等接口
4.3.4 HTTP代理
(1)通過http代理功能分享手機(jī)網(wǎng)絡(luò)
(2)支持cmwap、cmnet及其網(wǎng)絡(luò)
4.3.5 通訊/協(xié)議處理模塊
(1)通訊協(xié)議采用json格式
(2)協(xié)議采用命令模式和工廠模式自動(dòng)化進(jìn)行匹配
4.3.6 WEB服務(wù)器
(1)采用jetty設(shè)計(jì)web服務(wù)器
(2)web服務(wù)器對外提供http及其websocket通訊服務(wù)
系統(tǒng)用戶在pc用戶端編寫腳本,面向用戶腳本語言,測試人員無需任務(wù)編程語言基礎(chǔ)。
圖7 添加手機(jī)腳本截圖
圖8 添加自動(dòng)化操作方法
圖9 審查元素
審查應(yīng)用的元素找到選擇器ID的過程如下:
(1)通過robotium-solo取得當(dāng)前應(yīng)用元素以json格式返回到瀏覽器。
(2)當(dāng)用戶在點(diǎn)擊瀏覽器上的手機(jī)界面時(shí),js會(huì)在畫布上(<canvas>)取得對應(yīng)android元素應(yīng)用的坐標(biāo)點(diǎn),從而匹配返回的json數(shù)據(jù)中的坐標(biāo),這樣就得到了以class+id組成的應(yīng)用(apk)中元素的唯一標(biāo)識(shí)(注:canvas上的手機(jī)圖片是通過websocket生成)。
(3)通過http,post請求傳到Backend服務(wù)器,Backend服務(wù)提供了手機(jī)自動(dòng)化的腳本制作、腳本任務(wù)管理、手機(jī)相關(guān)資源數(shù)據(jù)管理、手機(jī)遠(yuǎn)程控制界面等功能。
(4)Backend服務(wù)器將數(shù)據(jù)保存到oracle數(shù)據(jù)庫。
(5)Job主動(dòng)查詢oracle數(shù)據(jù)庫中是否有需要執(zhí)行的手機(jī)腳本,如果有,Job通過http協(xié)議的方式對linux父服務(wù)器(手機(jī)設(shè)備主服務(wù)器)進(jìn)行調(diào)用。
(6)linux父服務(wù)器接收到調(diào)用時(shí),通過手機(jī)IMEI來確定要執(zhí)行任務(wù)主機(jī)(手機(jī)設(shè)備服務(wù)器)。
(7)任務(wù)主機(jī)利用AndroidScreencast框架,通過usb(adb)數(shù)據(jù)線,對手機(jī)行進(jìn)相關(guān)調(diào)用操作。
(8)手機(jī)通過調(diào)用robotium-solo框架進(jìn)行相應(yīng)測試。
(9)linux服務(wù)器和手機(jī)設(shè)備上,裝有Ard_new服務(wù)程序,用于實(shí)現(xiàn)具體的手機(jī)遠(yuǎn)程控制和自動(dòng)化的相關(guān)邏輯。
圖10 手機(jī)自動(dòng)化測試系統(tǒng)部署圖
本文首先對手機(jī)設(shè)備及手機(jī)應(yīng)用測試工作的現(xiàn)狀進(jìn)行了簡要分析,針對目前存在的各種問題,提出基于手機(jī)遠(yuǎn)程控制的自動(dòng)化測試系統(tǒng)。文中介紹了該系統(tǒng)的系統(tǒng)特點(diǎn)、系統(tǒng)架構(gòu)、技術(shù)及自動(dòng)化腳本執(zhí)行流程。該系統(tǒng)部署簡單,使用方便,希望引起有相關(guān)需求人員的注意,一起探討研究安卓手機(jī)自動(dòng)化測試技術(shù)。
[1]張舜堯.手機(jī)自動(dòng)化測試系統(tǒng)設(shè)計(jì)淺析[J].電腦知識(shí)與技術(shù):學(xué)術(shù)交流,2007,4(20):412-413.
[2]楊怡君,黃大慶.一種基于Android平臺(tái)的手機(jī)自動(dòng)化測試工具的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用,2012,32(2):554-556.
[3]侯菊敏.基于Android的關(guān)鍵字驅(qū)動(dòng)自動(dòng)化測試框架研究[D].中山大學(xué),2012.
[4]蔡增柱.基于Android移動(dòng)平臺(tái)測試相關(guān)技術(shù)研究[D].華南理工大學(xué),2012.
[5]董川.基于Android系統(tǒng)的移動(dòng)終端穩(wěn)定性測試方法的研究與實(shí)踐[D].北京郵電大學(xué),2012.
[6]金鳳,曹愷,張瑞娟,等.Android智能手機(jī)自動(dòng)化測試綜述[J].中國信息化,2013,(12).
[7]李元元,賈璐.基于Android平臺(tái)的手機(jī)終端公交查詢系統(tǒng)設(shè)計(jì)[J].計(jì)算機(jī)與現(xiàn)代化,2013(6):159-161.
[8]黃琦.Android智能手機(jī)應(yīng)用軟件自動(dòng)化測試工具的設(shè)計(jì)和開發(fā)[D].安徽大學(xué),2012.
HandsetAutomatic Testing System Based on Phone Remote Control
Xin Yanshuang
(China Mobile(ShenZhen)Limited,Shenzhen 518048,Guangdong)
Android mobile devices and mobile applications testing are very common and very important.This paper begins with a brief analysis of android mobile phone testing situation,then proposes an automatic testing system based on phone remote control is to solve the current problems.Then it introduces the features,architecture,technology and automated script execution flow of the system.Practice shows that the system can improve test efficiency and accuracy of test results,reduce the technical requirements for testers,overcome the shortcomings of the ordinary phone automation testing tools.
Android;phone remote control;handset automatic test;automated script
TP311.53
A
1008-6609(2016)08-0070-04
辛艷雙,女,河北邯鄲人,碩士,研究方向:自動(dòng)化測試、信息系統(tǒng)建設(shè)與分析、Andriod手機(jī)應(yīng)用測試研究。