專利名稱:一種基于Android的關鍵字驅動自動化測試框架的制作方法
技術領域:
本發(fā)明涉及一種針對Android的測試框架,具體來說,是涉及一種基于Android關鍵字驅動的測試框架。
背景技術:
目前,全球主流的智能手機操作系統(tǒng)有Nokia公司研發(fā)的SymbiaruGoogle公司研發(fā)的 AndroicUApple 公司研發(fā)的 iOS、Microsoft 公司研發(fā)的 Windows Mobile 以及 ResearchIn Motion公司研發(fā)的Blackberry OS等。上述的智能手機操作系統(tǒng)根據(jù)自身源代碼與內核對用戶所定義的開放程度不同,可以將其分為兩大類,分別為封閉型平臺和開放型平臺。 其中,除了 Google公司研發(fā)的Android操作系統(tǒng)外,其余都屬于封閉型平臺。雖然Symbian在2008年被Nokia全資收購后,開始從封閉型平臺逐步轉向研究開源的開放型平臺,但迄今為止,基于開源Symbian手機操作系統(tǒng)的終端產品還未在市場上正式推出。2007年末,Android憑借其開源、拓展性及可移植性強等特性迅速走紅全球。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2012年2月數(shù)據(jù)表明,Android占據(jù)全球智能手機操作系統(tǒng)市場52. 5%的份額,中國市場占有率為68. 4%,Android Market的App數(shù)量已經超過450000個,每月的下載量到達十億。然而,與Android開發(fā)的飛速發(fā)展相比,其相對滯后的測試技術卻更讓人擔憂。盡管目前國內外已經出現(xiàn)了多款軟件自動化測試工具,然后這些類型的測試框架大都是針對Java或C++、C#開發(fā)人員而設計的,針對Android的自動化測試框架卻相對較少。初始時只能使用JUint對Android應用進行最基本的單元測試,但是JUnit對Android還不能達到完全的支持,且相應的文檔也較少。后來,Google Android SDK通過ActivityInstrumentation框架,提供了自帶的程序插裝代碼。然而,Instrumentation框架使用復雜,對用例編寫人員素質要求較高,需要有一定的Java及Android編程基礎,同時,編寫測試用例將會耗去測試人員較多的時間,加大了軟件測試的成本。除此之外,測試代碼的耦合性較高,一旦被測應用程序經過修改或版本更新,測試代碼也需要進行相應的修改,這樣對項目管理極其不利。若每當發(fā)布一個版本就需要對相應的測試代碼進行修改,將會極大地浪費測試資源,同時增加測試代碼的維護風險。后來,隨著Android測試技術的發(fā)展,逐漸出現(xiàn)針對Android的測試框架。目前主流的Android自動化測試框架包括ActivityInstrumentation、MonkeyRunner> Robotium、Robolectric、TMTS 以及 LessPainful0 但這些框架仍然存在編寫用例困難,測試代碼耦合性高等問題。
發(fā)明內容
針對以上問題,本發(fā)明將選用在Robotium框架的基礎上,設計基于Android的關鍵字驅動自動化測試框架。增強了自動化測試的可開發(fā)性和可維護性,把測試用例的設計與測試數(shù)據(jù)相結合,通過設計測試數(shù)據(jù)和關鍵字來實現(xiàn)測試用例的開發(fā)。本發(fā)明的目的是實現(xiàn)從數(shù)據(jù)文件中直接導入測試用例進行測試,使測試數(shù)據(jù)與測試代碼分離,降低測試數(shù)據(jù)與測試代碼的耦合性。歸納出Android GUI測試的關鍵字,設計出與被測應用交互的關鍵字庫,使得這些關鍵字可重用性高,實現(xiàn)了基于關鍵字驅動的Android⑶I測試框架。通過以下技術手段實現(xiàn)包括數(shù)據(jù)文件(測試配置數(shù)據(jù)、業(yè)務測試數(shù)據(jù))、處理器模塊(數(shù)據(jù)處理器、關鍵字處理器)、驅動模塊、測試腳本模塊、結果分析模塊。所述的數(shù)據(jù)文件中的測試配置數(shù)據(jù)文件,用于保存測試自動運行所需要的信息,是測試自動執(zhí)行的核心。所述的業(yè)務測試數(shù)據(jù)文件包含了測試執(zhí)行過程中所需要的各種業(yè)務數(shù)據(jù)。如測試用例的編碼、對應的操作及輸入輸出數(shù)據(jù) 值等。可通過人工錄入的方式或系統(tǒng)自動錄制的方式來錄入數(shù)據(jù)??丶ο髷?shù)據(jù)是被測試的應用程序控件對象的集合,如Android應用上的一個按鈕、一個列表、一個文本輸入框甚至是一個自定義的控件。所述的驅動模塊通過讀取測試配置數(shù)據(jù)文件中的配置和操作測試數(shù)據(jù),來進一步調用測試腳本代碼。所述的處理器模塊主要用于處理不同的數(shù)據(jù)文件。如從數(shù)據(jù)文件中讀入數(shù)據(jù),并根據(jù)下一級模塊的需要,轉換為相應的格式,以方便讀取。所述的驅動模塊與測試腳本模塊用于根據(jù)配置數(shù)據(jù)驅動測試代碼的運行。所述的結果分析模塊使用改進后的TestRunner生成測試分析報告。上述自動化測試框架的工作流程為一、從業(yè)務數(shù)據(jù)文件中讀入測試人員編寫的測試用例二、讀取測試用例中的控件值、輸入輸出值等信息三、讀取測試用例中所涉及的關鍵字,并根據(jù)關鍵字調用關鍵字庫中的代碼,執(zhí)行相應的操作。四、測試完成后,記錄測試結果,并生成測試報告以及代碼覆蓋率報告。與現(xiàn)有技術相比,本發(fā)明具有的有益效果為I)實現(xiàn)業(yè)務測試數(shù)據(jù)、關鍵字數(shù)據(jù)、測試代碼的分離,降低數(shù)據(jù)、測試邏輯與測試代碼的耦合性,達到了關鍵字驅動設計的目標。2)設計業(yè)務測試數(shù)據(jù)文件的字段以及規(guī)格。測試數(shù)據(jù)使用Excel表格輸入,使得沒有自動化測試經驗、甚至沒有編程經驗的的測試人員,也可以簡易快速地進行自動化測試用例的開發(fā)。3)針對Android⑶I操作設計關鍵字庫。關鍵字可重用性高,當測試步驟修改后,用戶只需修改業(yè)務測試數(shù)據(jù),無需修改底層關鍵字。
圖I為本發(fā)明的基于Android的關鍵字驅動自動化測試框架模塊圖;圖2為本發(fā)明的基于Android的關鍵字驅動自動化測試框架流程圖;圖3為本發(fā)明的基于Android的關鍵字驅動自動化測試框架數(shù)據(jù)文件處理流程圖;圖4為本發(fā)明的基于Android的關鍵字驅動自動化測試框架測試報告生成流程圖。
具體實施例方式以下結合附圖和實施例對本發(fā)明做進一步說明,但并不對本發(fā)明造成任何限制。實施例一、如圖I所示,基于Android的關鍵字驅動自動化測試框架,主要分為5個模塊數(shù)據(jù)文件(包括測試配置數(shù)據(jù)、業(yè)務 測試數(shù)據(jù))、處理器模塊(包括數(shù)據(jù)處理器、關鍵字處理器)、驅動模塊、測試腳本模塊、結果分析模塊。所述的數(shù)據(jù)文件中的測試配置數(shù)據(jù)文件,用于保存測試自動運行所需要的信息,是測試自動執(zhí)行的核心。該文件包括應用程序運行的環(huán)境、被測應用路徑、源數(shù)據(jù)文件的路徑、測試結果保存路徑等。所述的業(yè)務測試數(shù)據(jù)文件包含了測試執(zhí)行過程中所需要的各種業(yè)務數(shù)據(jù)。包括了測試步驟 ID (ID)、當前 Activity 名稱(ActitvityName)Jj^IIlJ View 的 ID (ViewID)、輸入操作(InputAction)、輸入數(shù)據(jù)(InputValue)、期望的輸出操作(OutputAction)、期望的輸出值(OutputValue)、該步驟執(zhí)行標志位(Execute)、執(zhí)行結果(ActualResult)、測試用例ID (Testcase)??赏ㄟ^人工錄入的方式或系統(tǒng)自動錄制的方式來錄入數(shù)據(jù)??丶ο髷?shù)據(jù)是被測試的應用程序控件對象的集合,如Android應用上的一個按鈕、一個列表、一個文本輸入框甚至是一個自定義的控件。每個對象都是唯一的。由于Android應用在編譯時會自動生成資源文件R.java,該文件統(tǒng)一管理工程中所有的資源并為其添加唯一的身份標識ID0我們可以把R. java理解成Android應用中的資源字典。本發(fā)明中便使用該文件中的ID來識別每一個應用程序的控件對象。所述的驅動模塊通過讀取測試配置數(shù)據(jù)文件中的配置和操作測試數(shù)據(jù),來進一步調用測試腳本代碼。所述的處理器模塊主要用于處理不同的數(shù)據(jù)文件。如從數(shù)據(jù)文件中讀入數(shù)據(jù),并根據(jù)下一級模塊的需要,轉換為相應的格式,以方便讀取。其中數(shù)據(jù)處理器為測試腳本代碼提供數(shù)據(jù)。關鍵字處理器主要處理特定的操作關鍵字,包括控件操作(如點擊、長按、拖動、跳轉等)及驗證操作(如驗證是否正確跳轉、驗證輸入是否正確等)。它是測試腳本代碼的核心,決定了每一步的運行步驟,下一步該調用什么的操作等。每一個步驟都需要對應兩個關鍵字數(shù)據(jù),分別為輸入操作及輸出操作。關鍵字處理器則從控件處理模塊中獲取所需信息。關鍵字處理器通過調用一系列的控件對象,來實現(xiàn)關鍵字操作。如編輯文本框的操作EDITTEXT,包含了兩種類型的控件操作,分別是文本框焦點的獲取以及文本框的輸入。所述的驅動模塊與測試腳本模塊用于根據(jù)配置數(shù)據(jù)驅動測試代碼的運行。所述的結果分析模塊使用改進后的TestRunner生成測試分析報告。本設計中以XML格式保存測試報告,以Html格式保存代碼覆蓋率的報告,并在持續(xù)集成引擎Hudson中以可視化的形式呈現(xiàn)。Eclipse中也可以提供測試結果查看,但是無法形成易讀性高的報
生口 ο如圖2所示,上述自動化測試框架的工作流程為I)準備測試開始;2)從業(yè)務數(shù)據(jù)文件中讀入測試人員編寫的測試用例;3)讀取測試用例中的控件值、輸入輸出值等信息4)讀取測試用例中所涉及的關鍵字,并根據(jù)關鍵字調用關鍵字庫中的代碼,執(zhí)行相應的操作。5)測試成功,記錄測試報告,選擇測試用例是否執(zhí)行完畢,測試不成功,直接進入選擇測試用例是否執(zhí)行完畢。6)選擇測試完成,記錄測試結果,并生成測試報告以及代碼覆蓋率報告。選擇測試沒成功完成,則返回步驟2)繼續(xù)進行測試,直到選擇測試完成為止。如圖3所示,上述數(shù)據(jù)文件處理流程圖流程如下I)打開測試文件,如果成功將進入步驟2),不成功則拋出異常;2)讀取數(shù)據(jù)文件;3)定位測試數(shù)據(jù)所在的表單; 4)定義 Morkoookset 相關參數(shù);5)定義用于保存字段信息的布組;6)從文件中讀取數(shù)據(jù);7)若數(shù)據(jù)為空,則拋出異常,數(shù)據(jù)不為空,進入下一步驟8);8)測試步驟定義為Execute,則進入下一步驟9),如測試步驟不定義為Execute,則直接進入步驟10);9)讀取該測試步驟的數(shù)據(jù);10)選擇是否到達文件末端,是則進入步驟11),否則繼續(xù)進行步驟8);11)選擇文件讀取結束。本發(fā)明的基于Android的關鍵字驅動自動化測試框架測試報告生成流程圖如圖4所示I)開始測試,獲取 Text Rumnber ;2)成功建立測試報告則進行下一步,否則拋出異常;3)有新的測試集則進入步驟4,沒有新的測試集則新建測試節(jié)點;4)記錄測試節(jié)點,開始測試;5)測試用例成功,則記錄測試詳情,測試用例失敗則記錄失敗信息;6)進行測試是否結束的選擇,不結束則跳到步驟3)繼續(xù)運行,同意結束則關閉文件,結束測試。通過上述流程的執(zhí)行,得到的有益效果為I)實現(xiàn)業(yè)務測試數(shù)據(jù)、關鍵字數(shù)據(jù)、測試代碼的分離,降低數(shù)據(jù)、測試邏輯與測試代碼的耦合性,達到了關鍵字驅動設計的目標。2)設計業(yè)務測試數(shù)據(jù)文件的字段以及規(guī)格。測試數(shù)據(jù)使用Excel表格輸入,使得沒有自動化測試經驗、甚至沒有編程經驗的的測試人員,也可以簡易快速地進行自動化測試用例的開發(fā)。3)針對Android⑶I操作設計關鍵字庫。關鍵字可重用性高,當測試步驟修改后,用戶只需修改業(yè)務測試數(shù)據(jù),無需修改底層關鍵字。以上內容是結合具體的優(yōu)選實施方式對本發(fā)明所作的進一步詳細說明,不能認定本發(fā)明的具體實施只局限于這些說明。對于本發(fā)明所屬技術領域的普通技術人員來說,在不脫離本發(fā)明構思的前提下,還可以做出若干簡單推演或替換,都應當視為屬于本發(fā)明的保護范圍。
權利要求
1.一種基于Android的關鍵字驅動自動化測試框架,其特征在于它包括了數(shù)據(jù)文件、處理器模塊、驅動模塊、測試腳本模塊、結果分析模塊。
2.根據(jù)權利要求I所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的數(shù)據(jù)文件包含了測試配置數(shù)據(jù)文件與業(yè)務測試數(shù)據(jù)文件。
3.根據(jù)權利要求2所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的測試配置數(shù)據(jù)文件,用于保存測試自動運行所需要的信息,是測試自動執(zhí)行的核心,包含了應用程序運行的環(huán)境、被測應用路徑、源數(shù)據(jù)文件的路徑、測試結果保存路徑。
4.根據(jù)權利要求2所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的業(yè)務測試數(shù)據(jù)文件包含了測試執(zhí)行過程中所需要的各種業(yè)務數(shù)據(jù),包括了測試步驟ID、當前Activity名稱、被測View的ID、輸入操作、輸入數(shù)據(jù)、期望的輸出操作、期望的輸出值、該步驟執(zhí)行標志位、執(zhí)行結果、測試用例ID。
5.根據(jù)權利要求I所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的處理器模塊包括數(shù)據(jù)處理器、關鍵字處理器,其中所述的數(shù)據(jù)處理器主要用于處理不同的數(shù)據(jù)文件,從數(shù)據(jù)文件中讀入數(shù)據(jù),并根據(jù)下一級模塊的需要,轉換為相應的格式,以方便讀取,為測試腳本代碼提供數(shù)據(jù)。
6.根據(jù)權利要求5所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于關鍵字處理器主要處理特定的操作關鍵字,包括控件操作及驗證操作,決定每一步的運行步驟,下一步該調用什么的操作,每一個步驟都需要對應兩個關鍵字數(shù)據(jù),分別為輸入操作及輸出操作。
7.根據(jù)權利要求6所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的關鍵字處理器從控件處理模塊中獲取所需信息,關鍵字處理器通過調用一系列的控件對象,來實現(xiàn)關鍵字操作。
8.根據(jù)權利要求2或3所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的驅動模塊通過讀取測試配置數(shù)據(jù)文件中的配置和操作測試數(shù)據(jù),來進一步調用測試腳本代碼;其中所述的驅動模塊與測試腳本模塊用于根據(jù)配置數(shù)據(jù)驅動測試代碼的運行。
9.根據(jù)權利要求I所述的一種基于Android的關鍵字驅動自動化測試框架,其特征在于所述的結果分析模塊使用TestRunner生成測試分析報告,以XML格式保存測試報告,以Html格式保存代碼覆蓋率的報告。
一種基于Android的關鍵字驅動自動化測試框架,其特征在于自動化測試框架的工作流程為 1)從業(yè)務數(shù)據(jù)文件中讀入測試人員編寫的測試用例; 2)讀取測試用例中的控件值、輸入輸出值等信息; 3)讀取測試用例中所涉及的關鍵字,并根據(jù)關鍵字調用關鍵字庫中的代碼,執(zhí)行相應的操作; 4)測試完成后,記錄測試結果,并生成測試報告以及代碼覆蓋率報告。
全文摘要
一種基于Android關鍵字驅動自動化測試框架,屬于Android自動化測試領域。本發(fā)明的目的是實現(xiàn)從數(shù)據(jù)文件中直接導入測試用例進行測試,使測試數(shù)據(jù)與測試代碼分離,降低測試數(shù)據(jù)與測試代碼的耦合性。歸納出Android GUI測試的關鍵字,設計出與被測應用交互的關鍵字庫,使得這些關鍵字可重用性高,實現(xiàn)了基于關鍵字驅動的Android GUI測試框架。本發(fā)明通過各模塊的協(xié)調工作,克服了現(xiàn)有Android測試框架代碼耦合性高,測試用例編寫效率低下等缺點,使得測試用例的編寫與測試代碼的編寫分離,提高了測試用例的編寫效率。
文檔編號G06F11/36GK102819492SQ20121027437
公開日2012年12月12日 申請日期2012年8月2日 優(yōu)先權日2012年8月2日
發(fā)明者劉寧, 侯菊敏 申請人:中山大學