【摘要】隨著3G手機(jī)等智能終端的普及和移動(dòng)互聯(lián)網(wǎng)速度愈來愈快,移動(dòng)互聯(lián)網(wǎng)用戶數(shù)量不斷攀升,移動(dòng)應(yīng)用發(fā)展迅速,測試需求日漸迫切。本文從移動(dòng)互聯(lián)網(wǎng)、移動(dòng)應(yīng)用的發(fā)展現(xiàn)狀和測試需求談起,著重介紹了Android系統(tǒng)開放的技術(shù)架構(gòu),對Android測試基礎(chǔ)框架進(jìn)行了詳細(xì)的闡述,推薦了基于Android系統(tǒng)的一系列測試工具,介紹其測試功能,并展望了移動(dòng)應(yīng)用的云端測試服務(wù)發(fā)展趨勢。
【關(guān)鍵詞】移動(dòng)應(yīng)用Android測試
一、引言
移動(dòng)互聯(lián)網(wǎng)將移動(dòng)通信和互聯(lián)網(wǎng)二者結(jié)合起來,成為一體,在最近幾年里,移動(dòng)通信和互聯(lián)網(wǎng)成為當(dāng)今世界發(fā)展最快、市場潛力最大、前景最誘人的兩大業(yè)務(wù),隨之而來的移動(dòng)互聯(lián)網(wǎng)應(yīng)用也是繽紛多彩,娛樂、商務(wù)、信息服務(wù)等各種各樣應(yīng)用開始滲入人們的生活?;谝苿?dòng)終端的便攜性,移動(dòng)應(yīng)用呈現(xiàn)出跨平臺、輕量化和Web化等特點(diǎn),移動(dòng)應(yīng)用類型涉及語音類、消息類、視頻類、內(nèi)容類、個(gè)人信息管理類、位置服務(wù)、電子商務(wù)、游戲類等。
隨著3G手機(jī)等智能終端的普及和移動(dòng)互聯(lián)網(wǎng)速度愈來愈快,移動(dòng)互聯(lián)網(wǎng)用戶數(shù)量不斷攀升,3G移動(dòng)互聯(lián)網(wǎng)也催生出了眾多創(chuàng)新型的企業(yè)營銷或業(yè)務(wù)應(yīng)用。隨著移動(dòng)企業(yè)應(yīng)用的普及,各行業(yè)的移動(dòng)應(yīng)用測試需求也將與日俱增,包括移動(dòng)辦公(電子政務(wù)等),銀行、證券業(yè)的移動(dòng)支付以及旅游業(yè)應(yīng)用等,這些需求可以來自運(yùn)營商、移動(dòng)應(yīng)用開發(fā)商、移動(dòng)終端廠商、互聯(lián)網(wǎng)絡(luò)運(yùn)營商、應(yīng)用開發(fā)企業(yè)等。移動(dòng)應(yīng)用的測試類型涉及功能性測試、性能測試、安全性測試、穩(wěn)定性測試、易用性測試、可靠性測試、兼容性測試及非技術(shù)性測試;眾多的移動(dòng)應(yīng)用及其推向市場的快速響應(yīng)需求,以及移動(dòng)終端使用的便利性,對測試的質(zhì)量和響應(yīng)速度提出了更高的要求。
Android是一種以Linux為基礎(chǔ)的開放源代碼操作系統(tǒng),主要競爭對手是蘋果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一?;陂_源的Android系統(tǒng)還提供了一系列的開源測試技術(shù)和工具,使得Android移動(dòng)應(yīng)用的開發(fā)、測試更加易于開展。
二、Android系統(tǒng)架構(gòu)介紹
Android作為一個(gè)基于Linux系統(tǒng)的移動(dòng)設(shè)備平臺,其軟件層次結(jié)構(gòu)包括了一個(gè)操作系統(tǒng)(OS),中間件(MiddleWare)和應(yīng)用程序(Application)。其軟件層次結(jié)構(gòu)自下而上分為以下幾個(gè)層次:
這樣,在啟動(dòng)程序的時(shí)候就會(huì)先啟動(dòng)一個(gè)Application,然后在此Application運(yùn)行過程中根據(jù)情況加載相應(yīng)的Activity,而Activity是需要一個(gè)界面的。但是Instrumentation并不是這樣的,可以將Instrumentation理解為一種沒有圖形界面的,具有啟動(dòng)能力的,用于監(jiān)控其他類(用Target Package聲明)的工具類。任何想成為Instrumentation的類必須繼承android.app.Instrumentation。
對于單元測試,需要認(rèn)真了解的就是android.test.InstrumentationTestRunner類。這是Android單元測試的主入口。它相當(dāng)于JUnit當(dāng)中TestRunner。加載它首先要在manifest文件中加入一行關(guān)于Instrumentation的聲明,比如Android Api Demos中的測試?yán)锏膍anifest是這么寫的:
如果用Eclipse的ADT插件(0.8版本以上),也可以用圖形界面來添加。編輯好manifest,就可以打包,然后安裝到虛擬機(jī)上(用adb install命令)。之后就可以利用命令行的方式來加載單元測試了。在Android Shell中加載一個(gè)Instrumentation的方法是利用以下命令:
adb shell am instrument w XXXXXX
其中-w是指定Instrumentation要測試類的參數(shù)標(biāo)志。
四、Android系列測試支持工具
基于Instrumentaion測試框架,Android形成了一系列的自動(dòng)化測試工具,供開發(fā)者選擇使用:
1.Debug工具Adb
ADB全稱Android Debug Bridge,是Android Sdk自帶的一個(gè)工具,用這個(gè)工具可以直接操作管理android模擬器或者真實(shí)的andriod設(shè)備(如手機(jī))。它的主要功能有:(1)運(yùn)行設(shè)備的shell(命令行);(2)管理模擬器或設(shè)備的端口映射;(3)計(jì)算機(jī)和設(shè)備之間上傳/下載文件;(4)將本地apk軟件安裝至模擬器或android設(shè)備。
2.Android調(diào)試工具DDMS
DDMS的全稱是Dalvik Debug Monitor Service,也是是Android Sdk自帶的一款工具,可以提供例如:為測試設(shè)備截屏,針對特定的進(jìn)程查看正在運(yùn)行的線程以及堆信息、Logcat、廣播狀態(tài)信息、模擬電話呼叫、接收SMS、虛擬地理坐標(biāo)等等。
3.輔助測試工具———Android腳本語言環(huán)境ASE
Android Scripting Environment(ASE)是Google針對Android操作系統(tǒng)發(fā)布的一個(gè)小工具。ASE將腳本語言帶入Android,允許用戶編輯和執(zhí)行腳本,直接在Android設(shè)備上運(yùn)行交互式解釋器。腳本將能大幅度簡化任務(wù)界面,目前支持Python, Perl, JRuby, Lua, BeanShell, JavaScript, Tcl, shell,借助ASE可以直接通過腳本(解釋語言)方便快捷的調(diào)用Android系統(tǒng)中大部分的API,針對手機(jī)功能展開測試。
4.壓力測試工具M(jìn)onkey
Monkey也是Android Sdk中的一個(gè)命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中。它向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(如按鍵輸入、觸摸屏輸入、手勢輸入等),實(shí)現(xiàn)對正在開發(fā)的應(yīng)用程序進(jìn)行壓力測試。Monkey測試是一種為了測試軟件的穩(wěn)定性、健壯性的快速有效的方法。
5.功能測試工具M(jìn)onkey Runner
Monkeyrunner工具提供了一個(gè)API,使用此API寫出的程序可以在Android代碼之外控制Android設(shè)備和模擬器。通過Monkeyrunner,可以寫出一個(gè)Python程序去安裝一個(gè)Android應(yīng)用程序或測試包,運(yùn)行它,向它發(fā)送模擬擊鍵,截取它的用戶界面圖片,并將截圖存儲(chǔ)于工作站上。它與Monkey工具的差別在于:Monkey直接運(yùn)行在設(shè)備或模擬器的adb?shell中,生成用戶或系統(tǒng)的偽隨機(jī)事件流。Monkeyrunner則是在工作站上通過API定義的特定命令和事件控制設(shè)備或模擬器。
6.UI識別測試工具Hierarch viewer
一般的UI自動(dòng)化測試很重要的一點(diǎn)就是元素的獲取,android中提供了一個(gè)叫做hierarchyviewer的工具,可以識別android的控件元素,該工具也在Android SDk中。hierarchyviewer的使用非常簡單,啟動(dòng)模擬器或者連接上真機(jī)后,啟動(dòng)hierarchyviewer.bat即可。
7.功能測試工具Robotium
Robotium是一款測試Android Application的測試框架,它使得編寫黑盒測試代碼更加容易和穩(wěn)定。通過使用Robotium,測試用例開發(fā)人員能夠跨越多個(gè)Activity,開發(fā)出功能、系統(tǒng)以及驗(yàn)收測試用例。Robotium是基于Android測試框架InstrumentationTestCase2進(jìn)行的2次封裝,其在測試過程中,不需要測試程序的源代碼,只要apk文件(需要知道測試程序的package和activity),而且應(yīng)用apk與測試apk的簽名須保持一致。
8.UI自動(dòng)化測試工具NativeDriver
NativeDriver是Google推出的一個(gè)開源的跨平臺的UI自動(dòng)化測試框架。該工具是WebDriver API的一種實(shí)現(xiàn),使用原生UI而不是瀏覽器UI(Selenium)的自動(dòng)化測試框架,用于運(yùn)行Android應(yīng)用程序的功能測試。
五、移動(dòng)應(yīng)用測試云端發(fā)展
移動(dòng)互聯(lián)網(wǎng)開發(fā)者和測試人員在移動(dòng)應(yīng)用的開發(fā)及測試過程中,對移動(dòng)應(yīng)用的質(zhì)量、性能的測試環(huán)節(jié)工作量異常繁重,甚者還要購買大量的移動(dòng)終端設(shè)備。相對原始機(jī)械的測試手段,低效率,高成本,超長的測試周期,已無法滿足移動(dòng)互聯(lián)網(wǎng)應(yīng)用產(chǎn)品的快速迭代要求,這就需要我們借助自動(dòng)化的測試技術(shù)和工具,改良測試服務(wù)模式,提高工作效率,來滿足更多的用戶需求。
大家知道,要想滿足所有測試的需要,單從終端設(shè)備數(shù)量上來說就很龐大,很難要求某一家企業(yè)購置所有類型的終端設(shè)備,這使我們聯(lián)想到了資源整合與共享?;ヂ?lián)網(wǎng)上資源整合的發(fā)展趨勢是云計(jì)算,云計(jì)算系統(tǒng)是以付費(fèi)使用的形式向用戶提供各種服務(wù)的分布式計(jì)算系統(tǒng),其本質(zhì)是對虛擬化的計(jì)算和存儲(chǔ)資源池進(jìn)行動(dòng)態(tài)部署、動(dòng)態(tài)分配/重分配、實(shí)時(shí)監(jiān)控的系統(tǒng),從而向用戶提供滿足QoS要求的計(jì)算服務(wù)、數(shù)據(jù)存儲(chǔ)服務(wù)以及平臺服務(wù)。
為破解移動(dòng)應(yīng)用測試資源需求的諸多難題,人們提出了“云測試”模式。云測試是基于云計(jì)算的一種新型測試方案,一般用戶在本地把自動(dòng)化測試腳本寫好,上傳到服務(wù)平臺網(wǎng)站,然后在平臺上運(yùn)行腳本,得到測試結(jié)果。云測試具有遠(yuǎn)程使用、終端齊備、低成本、高效率等優(yōu)勢,借助日趨成熟的云服務(wù)模式,將測試任務(wù)分發(fā)到互聯(lián)網(wǎng)社區(qū),調(diào)動(dòng)全球互聯(lián)網(wǎng)上廣大公眾的終端設(shè)備參與到測試中來,從而實(shí)現(xiàn)了云端移動(dòng)應(yīng)用的測試服務(wù)模式,這種測試模式已經(jīng)在一些移動(dòng)應(yīng)用服務(wù)平臺開始實(shí)施。