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