羅歡
【摘 要】本文首先介紹了軟件測試中黑盒測試的基本概念;然后結(jié)合當(dāng)前Android應(yīng)用軟件開發(fā)過程中,大量的軟件界面和軟件功能方面的測試需求,簡單討論了幾種常用的黑盒測試工具能夠在測試中起到的作用;最后,以Robotium為例,Android官方的ApiDemos作為測試對象,編寫了一個測試程序來說明如何通過測試工具實(shí)現(xiàn)自動化的黑盒測試。
【關(guān)鍵詞】黑盒測試;Robotium;Android應(yīng)用軟件
1. 引言
Android,是一個以Linux為基礎(chǔ),主要用于移動設(shè)備的開源智能系統(tǒng)。和iOS并列為當(dāng)今最為主流的智能終端的操作系統(tǒng),隨著Android設(shè)備用戶群的直線增長,相關(guān)應(yīng)用也隨著迅猛增長。據(jù)谷歌官方預(yù)計(jì),到2013年6月安卓應(yīng)用數(shù)量將有可能突破100萬。如何通過測試保證這些應(yīng)用的質(zhì)量、如何能夠高效的完成測試以保證應(yīng)用的上市時間,是所有開發(fā)團(tuán)隊(duì)面臨的首要問題。顯然,只采用人工逐個功能測試是效率很低的,并且還有諸多限制。所以利用測試工具進(jìn)行自動化測試是必然趨勢。
2.黑盒測試
黑盒測試又稱功能測試、數(shù)據(jù)驅(qū)動測試,是把測試對象當(dāng)作一個黑盒子,只需要根據(jù)軟件產(chǎn)品的需求規(guī)格說明和用戶手冊等進(jìn)行測試。因?yàn)楹诤袦y試不要求測試人員具備較高的軟件開發(fā)能力,所以本文將從黑盒測試方面分析,如何實(shí)現(xiàn)Android應(yīng)用的自動化黑盒測試。
3.黑盒測試在Android系統(tǒng)上的應(yīng)用現(xiàn)狀
Android 平臺黑盒測試比較常用的測試工具有Monkey、MonkeyRunner、Robotium。
Monkey是Android自帶的一個命令行工具,可以運(yùn)行在模擬器里或?qū)嶋H設(shè)備中,主要應(yīng)用在壓力測試和可靠性測試方面。Monkey運(yùn)行時,向系統(tǒng)發(fā)送偽隨機(jī)的用戶事件流(模擬用戶的按鍵輸入、手勢輸入、觸屏輸入等),通過設(shè)置測試對象的測試次數(shù)、頻率、測試類型,實(shí)現(xiàn)對應(yīng)用程序進(jìn)行壓力測試。 Monkey需要測試人員可以使用adb Shell命令,測試使用的事件流是隨機(jī)的,不能進(jìn)行自定義,具有一定的局限性。
MonkeyRunner是Android SDK自帶的一個測試工具,主要應(yīng)用在功能測試和回歸測試。它提供了一個API,使用此API寫出的程序可以在代碼之外控制Android設(shè)備和模擬器。使用者可以寫出一個Python程序去安裝/卸載一個應(yīng)用,運(yùn)行應(yīng)用,截屏,比對圖片來判斷特定命令執(zhí)行后的結(jié)果是否包含預(yù)期信息,以及執(zhí)行應(yīng)用的測試包。上手相對復(fù)雜一些,并且對測試人員要求有Python語言的編程基礎(chǔ)。
Robotium是一個測試框架,能夠很方便的為Android 應(yīng)用程序編寫強(qiáng)大、健壯的自動化黑盒測試用例,可以應(yīng)用在功能測試、系統(tǒng)測試和驗(yàn)收測試,可以橫跨多個Activities。它 支持Activities、Dialogs、Toasts、Menus 、Context Menus。用法很簡單,并且測試功能非常強(qiáng)大,能夠模仿普通用戶行為,可以把一些原來由測試工程師做的手工測試變成自動化實(shí)現(xiàn)。
Robotium工具主要有以下特點(diǎn):
(1)使用非常容易,需要較少的相關(guān)知識就可以設(shè)計(jì)功能強(qiáng)大的測試案例;
(2)有源代碼時,可以對代碼進(jìn)行白盒測試;
(3)沒有源代碼時,可以直接對APK進(jìn)行黑盒測試;
(4)測試用例的開發(fā)設(shè)計(jì)簡單,短時間內(nèi)就可以寫出需求的測試用例;
(5)測試案例容易理解,可讀性高;
(6)測試用例自動執(zhí)行,執(zhí)行速度快,可以自動處理多個Activities;
(7)基于Android默認(rèn)的框架可以回退;
(8)多種控件的支持,多種測試階段的支持;
(9)可以和Maven、Ant平滑集成,易于持續(xù)集成。
基于以上優(yōu)勢,本文著重分析一下如何利用Robotium進(jìn)行自動化黑盒測試。
4. Robotium工具簡介
Robotium的整個框架層次十分清晰,Solo作為對外公開的唯一的類,提供了用戶所要使用的所有方法,主要方法如下:
(1)ActivityUtils類:所有和Activity相關(guān)的方法都包含在該類里面;
(2)Clicker類:包含各種點(diǎn)擊方法 ;
(3)Getter類:主要包含取得view方法;
(4)Scroller類:包含各個方向的滾動事件和拖拽事件;
(5)Searcher類:包含各種檢索方法;
(6)Sender類:發(fā)送按鍵、上下左右鍵和返回;
(7)TextEnterer類:提供文本框輸入內(nèi)容的方法。
5. Robotium應(yīng)用實(shí)踐
針對Android APK,如何使用Robotium進(jìn)行黑盒測試?下面本文將結(jié)合實(shí)際的應(yīng)用進(jìn)行分析。
測試準(zhǔn)備:
官方Api示例工程:ApiDemos
(1)ADT Bundle for Windows
(2)robotium-solo-4.0.jar
5.1測試主要步驟一:創(chuàng)建測試工程
在Eclipse 中新建測試工程,選擇工程[ApiDemos]作為測試目標(biāo)。
將robotium-solo-4.0.jar導(dǎo)入庫,并且在[Order and Expor]中選中。
5.2測試主要步驟二:編寫測試代碼
(1)新建類:ApiDemosTest。
(2)添加測試框架代碼(示例)
5.3測試主要步驟三:執(zhí)行測試
啟動虛擬機(jī),版本建議2.3以上,運(yùn)行JUnit Test,執(zhí)行結(jié)果如下圖:
該測試簡單驗(yàn)證了控件的查找和點(diǎn)擊,畫面之間的遷移。用例使用了一些常用的方法:searchText、clickLongOnText等。
6.總結(jié)
自動化黑盒測試是一種高效、快捷、可靠的軟件測試方法,如何能夠把自動化黑盒測試和Android平臺無縫的結(jié)合起來具有非常重要的現(xiàn)實(shí)意義。通過本文的示例也能看出,基于自動化測試工具,只需要編寫很小量的測試代碼就能實(shí)現(xiàn)較復(fù)雜的UI確認(rèn)和動作確認(rèn)。希望本文能起到拋磚引玉的作用,可以引導(dǎo)開發(fā)和測試人員更加深入的研究、發(fā)掘、完善自動化黑盒測試相關(guān)的技術(shù)和工具,以便能夠大大提高Android應(yīng)用的質(zhì)量。
參考文獻(xiàn):
[1]黎連業(yè),王華,李龍,黎照,李淑春.軟件測試技術(shù)與測試實(shí)訓(xùn)教程.北京:機(jī)械工業(yè)出版社,2012.
[2]徐芳.軟件測試技術(shù).北京:機(jī)械工業(yè)出版社,2012.
[3] 楊怡君,黃大慶. Android手機(jī)自動化性能測試工具的研究與開發(fā). 計(jì)算機(jī)應(yīng)用, 2012 , 32( 2) : 554 - 556.