文/王駿美 吳吉紅
近年來,隨著移動(dòng)互聯(lián)網(wǎng)技術(shù)的飛速發(fā)展,移動(dòng)APP在人們生活中的應(yīng)用越來越廣泛,已經(jīng)成為了企業(yè)和人們溝通的重要渠道。企業(yè)業(yè)務(wù)的拓展往往取決于移動(dòng)APP上業(yè)務(wù)流程的研發(fā)與實(shí)現(xiàn)。一般來說,在整個(gè)軟件開發(fā)中,測(cè)試工作量占30%~40%,甚至≥50%,如何高效地進(jìn)行移動(dòng)APP軟件測(cè)試以縮短其研發(fā)周期,如何在保證移動(dòng)APP的質(zhì)量和用戶體驗(yàn)的前提下,將其快速地發(fā)布給客戶已成為企業(yè)面臨的重要問題。在移動(dòng)APP測(cè)試過程中,運(yùn)用自動(dòng)化測(cè)試技術(shù)以提高效率、節(jié)省時(shí)間勢(shì)在必行。下文討論了兩種主流的移動(dòng)APP的自動(dòng)化測(cè)試技術(shù),并對(duì)它們加以比較。
基于被測(cè)軟件識(shí)別對(duì)象的移動(dòng)APP自動(dòng)化測(cè)試技術(shù)是指通過在被測(cè)軟件中查詢被測(cè)頁面元素的屬性來識(shí)別并驗(yàn)證被測(cè)對(duì)象的自動(dòng)化測(cè)試技術(shù)。測(cè)試人員運(yùn)用編程語言編寫自動(dòng)化測(cè)試腳本,通過程序的執(zhí)行來判定被測(cè)軟件中是否存在含有目標(biāo)屬性的頁面元素以達(dá)到自動(dòng)化測(cè)試的目標(biāo)。
常用的基于被測(cè)軟件識(shí)別對(duì)象的移動(dòng)APP自動(dòng)化測(cè)試工具有APPium等。APPium是目前移動(dòng)應(yīng)用功能測(cè)試領(lǐng)域最流行的開源框架,可以控制原生或混合iOS及Android應(yīng)用來實(shí)現(xiàn)自動(dòng)化測(cè)試。APPium測(cè)試腳本可以用Ruby、Python、Java等多種語言編寫。APPium采用了Client-Server的設(shè)計(jì)模式,Client端是測(cè)試腳本,APPiumServer通過WebDriver協(xié)議接收由Client發(fā)送來的請(qǐng)求。對(duì)于Android端的測(cè)試來說,APPiumServer把收到的請(qǐng)求轉(zhuǎn)發(fā)給安裝在手機(jī)上的Bootstrap.jar,Bootstrap負(fù)責(zé)監(jiān)聽APPium命令并在手機(jī)上通過調(diào)用UiAutomator來實(shí)現(xiàn)操作,最后Bootstrap將執(zhí)行結(jié)果返回給APPium Server,APPium Server再把執(zhí)行結(jié)果返回給Client。對(duì)于iOS端的測(cè)試來說,APPiumiOS封裝了APPle的Instruments框架,主要用了Instruments里的UIAutomation,移動(dòng)設(shè)備端通過注入bootstrap.js進(jìn)行監(jiān)聽,bootstrap.js將執(zhí)行結(jié)果返回給APPium Server, APPium Server再將結(jié)果返回給APPium Client。APPium支持多平臺(tái),包括MAC和Windows,當(dāng)在MAC平臺(tái)上編寫了一個(gè)APPium自動(dòng)化腳本并執(zhí)行,請(qǐng)求會(huì)到達(dá)MAC下的APPium-Server解析,驅(qū)動(dòng)iOS設(shè)備來執(zhí)行APPium自動(dòng)化腳本;當(dāng)在Windows平臺(tái)上編寫了一個(gè)APPium自動(dòng)化腳本并執(zhí)行,請(qǐng)求會(huì)到 Windows下APPium-Server解析,驅(qū)動(dòng)Android虛擬機(jī)或真機(jī)來執(zhí)行APPium腳本。所以,APPium是一個(gè)非常靈活的跨平臺(tái)框架。
APPium是通過id、XPath等屬性來定位元素的。
當(dāng)通過id定位元素時(shí),取的是元素id的值,例如在摩拜單車APP中查找id為reserve的元素,腳本命令為driver.find_element_by_id("com.mobike.mobikeAPP:id/reserve");
當(dāng)通過XPath定位時(shí),APPium會(huì)查詢當(dāng)前頁面元素及子元素中能滿足指定條件的對(duì)象,例如在摩拜單車APP當(dāng)前界面的任何元素及子元素中查找resource-id為com.mobile.mobileAPP:id/reserve的元素,命令為driver.find_element_by_xpath("http://*[@resourceid='com.mobile.mobileAPP:id/reserve']");其中“//*”表示在當(dāng)前界面的所有元素及子元素中查找。“[]”表示滿足一定的條件。再例如在摩拜單車APP當(dāng)前界面的任何元素及子元素中查找文本為“預(yù)約用車”的元素,命令為driver.find_element_by_xpath("http://*[@text='預(yù)約用車']");
基于圖像識(shí)別的移動(dòng)APP測(cè)試技術(shù)是預(yù)先獲得并保存正確的移動(dòng)APP屏幕的基準(zhǔn)圖像,然后在動(dòng)態(tài)的測(cè)試執(zhí)行過程中,通過采用先進(jìn)的圖像識(shí)別技術(shù),將被測(cè)APP頁面圖像與基準(zhǔn)圖像對(duì)比并輸出測(cè)試結(jié)果的自動(dòng)化測(cè)試技術(shù)。圖像識(shí)別的過程主要包括數(shù)據(jù)采集、圖像預(yù)處理、特征提取、模式識(shí)別四個(gè)主要過程。數(shù)據(jù)采集階段的主要任務(wù)是獲取被識(shí)別圖像。由于圖像中含有大量的背景噪聲,如光線及電阻、電磁和元器件干擾等內(nèi)部條件的影響,需要在圖像預(yù)處理階段對(duì)輸入圖像進(jìn)行處理以消除無關(guān)信息,提取有用信息。在特征提取階段,從圖像中提取出有利于識(shí)別目標(biāo)圖像的屬性特征,如顏色、形狀、空間等特征,為下一步識(shí)別打下基礎(chǔ)。在模式識(shí)別階段,對(duì)圖像的特征信息進(jìn)行處理和分析,以對(duì)圖像進(jìn)行描述、辨認(rèn)、分類和解釋。在這個(gè)階段,需要選擇合適的模式識(shí)別算法,將待測(cè)圖像與預(yù)先保存的基準(zhǔn)圖像進(jìn)行對(duì)比,最后輸出識(shí)別結(jié)果。
基于圖像識(shí)別的移動(dòng)APP自動(dòng)化測(cè)試工具如Mobot等,以機(jī)械臂模擬人手,以高清攝像頭拍攝模擬人眼識(shí)別,對(duì)被測(cè)終端進(jìn)行操作。測(cè)試執(zhí)行前,測(cè)試人員需要保存大量基準(zhǔn)圖片,并且根據(jù)手工測(cè)試用例繪制自動(dòng)化測(cè)試圖形化工作流,當(dāng)測(cè)試執(zhí)行時(shí),工具會(huì)根據(jù)工作流中的步驟,用攝像頭拍攝捕捉實(shí)際的屏幕圖像,然后與預(yù)先存儲(chǔ)的基準(zhǔn)圖片對(duì)比驗(yàn)證是否匹配;在測(cè)試過程中,通過圖像識(shí)別技術(shù)驗(yàn)證頁面元素,然后機(jī)器臂對(duì)目標(biāo)元素進(jìn)行點(diǎn)擊或滑屏等操作來推動(dòng)測(cè)試的進(jìn)行。
在實(shí)際移動(dòng)APP項(xiàng)目中應(yīng)該運(yùn)用哪種自動(dòng)化測(cè)試技術(shù)是企業(yè)研發(fā)團(tuán)隊(duì)經(jīng)常遇到的問題,現(xiàn)對(duì)兩種技術(shù)對(duì)比如下。
在頁面文本內(nèi)容的驗(yàn)證方面,基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)是通過被測(cè)軟件獲取到準(zhǔn)確的待測(cè)頁面的文本內(nèi)容,然后和測(cè)試程序腳本中的預(yù)期文本內(nèi)容作比較,從而輸出驗(yàn)證結(jié)果;基于圖像識(shí)別的移動(dòng)APP自動(dòng)化測(cè)試技術(shù)是通過圖像識(shí)別來判定待測(cè)頁面的文本內(nèi)容是否和基準(zhǔn)頁面的文本內(nèi)容一致。由于圖像識(shí)別算法有一定的誤差,基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)能夠方便準(zhǔn)確地獲得頁面元素的文本信息。所以,對(duì)于文本內(nèi)容的驗(yàn)證的效果,基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)優(yōu)于基于圖像識(shí)別的自動(dòng)化測(cè)試技術(shù)。
表1:兩種自動(dòng)化測(cè)試技術(shù)的異同
在移動(dòng)APP頁面元素的外觀圖像以及元素之間的相對(duì)位置的驗(yàn)證方面,基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)是通過從待測(cè)軟件中檢測(cè)是否存在待測(cè)元素的id、XPath等屬性值來判定待測(cè)頁面中是否包含目標(biāo)元素,因此基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)只能驗(yàn)證頁面元素的存在性,而不能驗(yàn)證頁面元素的圖像外觀以及元素之間的相對(duì)位置的正確性;基于圖像識(shí)別的移動(dòng)APP自動(dòng)化測(cè)試技術(shù)是通過圖像識(shí)別技術(shù)來判定待測(cè)頁面的元素是否和基準(zhǔn)頁面的元素一致,可以驗(yàn)證頁面元素的外觀與元素之間的相對(duì)位置。因此頁面元素外觀以及元素之間的相對(duì)位置的驗(yàn)證應(yīng)該選用基于圖像識(shí)別的自動(dòng)化測(cè)試技術(shù),而基于被測(cè)軟件來識(shí)別對(duì)象的自動(dòng)化測(cè)試技術(shù)不能夠覆蓋此類驗(yàn)證。
在對(duì)被測(cè)移動(dòng)終端操作系統(tǒng)的支持方面,在使用基于被測(cè)軟件來識(shí)別對(duì)象自動(dòng)化測(cè)試技術(shù)時(shí),要充分考慮到自動(dòng)化測(cè)試工具是否能夠很好地支持待測(cè)終端的操作系統(tǒng),能否和待測(cè)終端的操作系統(tǒng)很好地協(xié)同,以及在不同的操作系統(tǒng)上的配置等。而基于圖像識(shí)別的自動(dòng)化測(cè)試技術(shù)完全模擬人的操作,不需要考慮移動(dòng)終端所使用的操作系統(tǒng),能夠直接支持各種操作系統(tǒng)的移動(dòng)APP測(cè)試。
在長(zhǎng)時(shí)間的連續(xù)測(cè)試方面,由于基于被測(cè)軟件的自動(dòng)化測(cè)試工具的Server端需要和移動(dòng)終端之間進(jìn)行消息的傳遞,不間斷的測(cè)試可能會(huì)使得移動(dòng)終端溫度過高而最終導(dǎo)致終端狀態(tài)失常,從而影響測(cè)試結(jié)果準(zhǔn)確性和有效性。而基于圖像識(shí)別的自動(dòng)化測(cè)試完全模擬人的行為,不和移動(dòng)終端進(jìn)行內(nèi)部的消息交互。所以,在長(zhǎng)時(shí)間的連續(xù)測(cè)試方面,基于圖像識(shí)別的自動(dòng)化測(cè)試更可靠。
在對(duì)測(cè)試人員的要求方面,從事基于被測(cè)軟件識(shí)別對(duì)象的自動(dòng)化測(cè)試人員需要有較強(qiáng)的編程能力,能夠運(yùn)用編程語言熟練地編寫和調(diào)試程序以自動(dòng)化各種測(cè)試場(chǎng)景,解決自動(dòng)化測(cè)試中遇到的各種問題。基于圖像識(shí)別的自動(dòng)化測(cè)試對(duì)測(cè)試人員的編程能力沒有特別要求,只要能夠根據(jù)手工測(cè)試用例場(chǎng)景繪制工作流程圖即可。
兩種自動(dòng)化測(cè)試技術(shù)的對(duì)比如表1所示。
當(dāng)然,兩種自動(dòng)化測(cè)試技術(shù)也有很多共同之處。無論使用哪種自動(dòng)化測(cè)試技術(shù),被自動(dòng)化的測(cè)試都可以反復(fù)執(zhí)行,執(zhí)行過程中,測(cè)試人員一般不需要干預(yù),可以節(jié)省時(shí)間,提高工作效率。測(cè)試執(zhí)行完后,都需要人工查看和分析測(cè)試報(bào)告。單純的兩種自動(dòng)化測(cè)試技術(shù)還都不能夠滿足需要人體干預(yù)的測(cè)試場(chǎng)景的自動(dòng)化測(cè)試需求,比如和移動(dòng)終端旋轉(zhuǎn)或需要掃描人體指紋的相關(guān)測(cè)試等,對(duì)于這些測(cè)試的自動(dòng)化,可以配合使用機(jī)器臂旋轉(zhuǎn)手機(jī)以及模擬人體指紋技術(shù)來實(shí)現(xiàn)。
綜上所述,在做移動(dòng)APP測(cè)試時(shí),應(yīng)當(dāng)根據(jù)不同測(cè)試場(chǎng)景選擇適當(dāng)?shù)淖詣?dòng)化測(cè)試技術(shù)來實(shí)現(xiàn)測(cè)試的自動(dòng)化,在實(shí)際項(xiàng)目中往往需要綜合運(yùn)用多種自動(dòng)化測(cè)試技術(shù)來滿足測(cè)試的需求。相信隨著自動(dòng)化測(cè)試技術(shù)的不斷發(fā)展以及自動(dòng)化測(cè)試系統(tǒng)的逐步完善,不僅越來越多的移動(dòng)APP的測(cè)試場(chǎng)景可以被自動(dòng)化,而且實(shí)現(xiàn)自動(dòng)化測(cè)試所需要的成本會(huì)越來越低,自動(dòng)化測(cè)試的精準(zhǔn)度會(huì)逐步提高。