一種Android設備軟體自動測試方法
2023-06-01 04:27:36 2
專利名稱:一種Android設備軟體自動測試方法
技術領域:
本發明涉及軟體黑盒測試技術,具體涉及一種安卓(Android)設備軟體自動測試方法,尤其應用於智慧型手機。
背景技術:
現有,Android系統軟體自動化測試工具中大致分為三種,其一是由測試開發者為某個程序的某個測試路徑預先設計好測試工具(比如目前流行的Juit (java單元測試)和Robotium ( 一種基於Android的黑盒自動化測試框架),再用來自動化測試,這樣的好處是省去了測試員的工作量,但卻大大地增加了測試開發者的工作量,首先一個程序是存在多條測試路徑的,測試開發者就必須得根據不同的測試路徑來設計測試工具,若不這樣也就做不到程序測試的全面性。所以做不好上述問題也就做不好自動化測試,同時也會導致產品存在嚴重的風險與缺陷。或許你可以說採用人工的方式進行測試!這樣確實可以解決自 動化測試的問題,但傳統的人工測試覆蓋面窄,周期長,人工成本高等問題又是各廠商所不能接受的。其二是採用計算機(pc)連接Android終端的方式,其實現是通過在pc機上裝有Android自帶的安卓驅動(ADB)工具或是通過通用串行總線(USB)實現與外圍設備連接並配置好套接字(Socket)通訊參數,在界面上通過標準小窗口工具箱(swt)/jface工具展示出來,在底層則通過殼(shell)命令來獲取設備被測程序的信息來生成相應測試腳本,這樣雖能解決上述問題,但它脫離不了電腦,做不到隨時隨地自動化測試,工具的便捷性與實用性非常差,比如申請號為:201110446674. O的專利。其三是通過開放設備的最高管理權限,通過獲得該設備的最高使用權限時才能使用的shell命令來獲取設備被測程序的信息來生成相應測試腳本,該方式與Android系統底層連接緊密,不利於Android設備的安全,易成為黑客入侵的工具/技術,比如申請號為201010616361. O的專利的安全問題就令人擔憂。所以說在現行的測試技術亦中都不足以做好Android系統的自動化測試,亟待改進。
發明內容
本發明需要解決的技術問題是,如何提供一種Android設備軟體自動測試方法,無須使用shell命令和高性能pc進行自動化測試,從而提升測試安全、可靠、廣泛和易實施性。本發明的上述技術問題這樣解決構建一種Android設備軟體自動測試方法,包括以下自動腳本錄製步驟101)啟動被測程序,並創建一層透明可視(View)層;所述View層是android.view. View 的子類;102)按測試要求操作屏幕或按鍵;
在操作過程中,所述透明View層截取記錄對應觸控/按鍵事件,再通過向被測程序發送對應一致的模擬觸控/按鍵事件傳遞操作指令;被測程序執行所述操作指令。按照本發明提供的Android設備軟體自動測試方法,步驟102)中通過回調函數HandleEvent和自動測試框架Instrumention向被測程序發送模擬觸控/按鍵事件。按照本發明提供的Android設備軟體自動測試方法,步驟102)中被測程序執行所述操作指令包括更新屏幕界面。按照本發明提供的Android設備軟體 自動測試方法,當透明View監聽到有UP動作時先暫時移除本身並傳遞錄製信息到回調函數HandleEvent中,而回調函數HandleEvent則根據錄製的信息結合自動化測試框架Instrumention發送模擬觸控/按鍵事件來更新被測程序界面,步驟102)中截取記錄包括記錄對應屏幕界面。按照本發明提供的Android設備軟體自動測試方法,所述自動腳本錄製步驟包括跨進程錄製,這在基於shell和pc的方式中無法做到。按照本發明提供的Android設備軟體自動測試方法,所述錄製步驟還包括通過預先定義的交互方式通知透明View層結束錄製,生成錄製腳本,具體是所述錄製步驟還包括當透明View監聽到有結束錄製請求後結束錄製並通知後臺服務RecordService提取錄製信息,生成錄製腳本。按照本發明提供的Android設備軟體自動測試方法,該自動測試方法還包括腳本回放步驟根據錄製腳本向被測程序發送與錄製腳本對應的一系列模擬觸控/按鍵事件。按照本發明提供的Android設備軟體自動測試方法,所述腳本回放步驟多次重複。按照本發明提供的Android設備軟體自動測試方法,所述回放步驟還包括腳本解析和有效性檢測子步驟。按照本發明提供的Android設備軟體自動測試方法,該自動測試方法還包括結果驗證步驟。按照本發明提供的Android設備軟體自動測試方法,結果驗證步驟包括但不限制於以下方式(一 )所述結果驗證步驟包括截取被測程序屏幕輸出和自動/人工圖像比對;( 二)所述結果驗證步驟包括記錄被測程序數據輸出和自動數值比對。本發明提供的Android設備軟體自動測試方法,尤其應用於智慧型手機,較現有技術具有以下優點I、被測程序可以通過本發明來錄製不同測試路徑的測試腳本,並且不需要編寫任何代碼或修改測試腳本,避免手動錄製不同測試路徑的腳本來解決程序測試路徑多樣性與測試工具開發者設計工具困難、工作量大的問題;2、不需要藉助pc機來實現自動錄製,且不需要Android設備的最高管理權限;利用技術完全模擬人機互動功能,可以錄製90%以上的程序測試路徑多樣性的測試腳本,從而減少自動化測試工具的開發量以及人力資本的投入,大大地提高了自動化測試效率;3、通過採集元素坐標進行自動化測試的,由於錄製時只會根據界面的切換而進行錄製測試腳本,故而能進行跨進程的腳本錄製與腳本回放測試;4、可用於回歸測試,冒煙測試以及功能測試,更實用、更安全、更便捷和更可靠。
下面結合附圖和具體實施例進一步對本發明進行詳細說明圖I為本發明優選具體實施例觸控螢幕智慧型手機上的自動化測試軟體的程序流程示意圖。
具體實施例方式首先,說明本發明基礎和關鍵(一)基本思想在錄製過程中,當被測程序啟動時同時創建一層透明的View放置於被測程序上。當有事件發生時,該View所實現的監聽方法會記錄動作被測程序所點觸元素所在的坐標或者該設備的按鍵值並生成測試腳本保存於手機存儲卡上。回放時,再根據對應腳本解析 算法結合Instrumentation (Android平臺的一種自動化測試框架)實現跨進程的回放測試。(二)自定義 View 層該自定義的透明View繼承自android, view. View,通過複寫它的按鍵事件onKeyDown O、onKeyUp O、onKeyLong O 以及觸控事件的 onTouchEvent O 以上的幾個方法來監聽設備動作事件,同時該步驟還會在啟動該被測程序時把被測程序的TargetPackage、Activity Name (被測程序的包名與主類名)與當前設備的信息(自定義代號為0)封裝成一條特殊的字符串(格式為"自定義代號"+"," +" TargetPackage" +","
+ " Activity Name" +" ," +" XX")添加到 StringBuffer (java 中一個類似於 String的字符串緩衝區)中)。第二,結合優選實施例詳細說明本發明具體實現如圖I所示,本發明優選具體實施例觸控螢幕智慧型手機上的自動化測試軟體程序具體包括以下步驟301)啟動程序,選擇開始錄製(該步驟的實現是獲取當前設備的所有可見可操作的程序並羅列出來顯示在屏幕上,單擊選擇某項後會啟動該程序,同時也會創建一層自定義的透明View覆蓋其上;啟動被測程序時把被測程序的Target Package, Activity Name與當前設備的信息封裝成一條特殊的字符串添加到StringBuffer中;302)在錄製中,隨意點觸屏幕(該步驟的實現是通過監聽到當前測試員對該透明View的一些模擬鍵盤/觸屏事件後,規則如下如果是按鍵事件則取事件的代號(自定義代號為I)跟動作類型(類型分為UP (彈起),D0WN(按下),LONG(長按))和按鍵值(比如設備的"返回鍵"的鍵值為4)。如果是觸控事件則取事件代號(自定義代號為2)跟動作類型(類型分為UP (彈起),D0WN(按下),MOVE(移動))以及該界面控制項元素所處的X軸Y軸的坐標(注一個單擊的動作由一個DOWN跟一個UP兩個動作組成;而一個移動的動作由一個DOWN跟多個MOVE及一個UP動作組成)並把其值封裝成一條特殊的字符串(其一格式為"自定義代號"+"," +"動作類型"+"," +" X軸坐標"+"," +" Y軸坐標")分別添加到StringBuffer和List集合(java中一種有序的序列)中,同時對該事件的動作類型進行判斷,規則如下如果動作類型是up類型的話則暫時移除該透明view,然後從List集合中循環取出每條字符串時經轉換成字符串數組後判斷該字符串數組首個元素的值,如果值為「1」,則取其後的所有元素的值並結合Instrumentation的sendKeySync O方法發送模擬鍵盤事件。如果值為「2」,則取其後的所有元素的值並結合Instrumentation的sendPointerSync O方法發送觸控事件。並由此實現了在透明view上的觸摸動作/點按設備按鍵的各種動作事件(比如在透明的view下我們是看得到被測程序界面上的某些控制項的,當你點擊(該動作由down跟up類型組成,也就是說該動作是先按下再鬆開)某個控制項時它是沒反應的,因為點擊的對象是透明的view,當後臺程序監測到剛才點擊動作中包含有UP動作類型時,程序會暫時的移除該透明view,然後取出剛剛保存到List集合中的事件信息,經解析後結合InstrumentationO的sendPointerSync O方法發送點擊動作,故此就實現界面的跳轉或更新),當該動作完後又把該透明view覆蓋其上並清空List類的所有值,故而通過這樣周而復始的方式才實現了腳步的錄製,直至程序監聽到退出命令);303)退出錄製時點擊屏幕下方的X監聽圖標(該步驟的實現是把保存在公用臨時 區信息寫入到本地存儲卡上,經此自動化測試腳本也就錄製好了);304)當步驟303)完成後程序會返回到主界面,這時選擇開始測試(該步驟的機制是通過實現一個簡單的文件管理器,其目的是用來管理本發明錄製的測試腳本);305)找到剛錄製的腳本並點擊,程序自動開始檢測(該步驟的實現是通過找到測試腳本文件後,進而檢測測試腳本是否有效,如果有效則直接進入步驟307);306)若檢測到測試腳本無效時,程序會提示測試員是重新錄製還是取消(該步驟的實現是如果測試員選擇了重新錄製則直接進入步驟302),反之則取消);307)程序進入解析階段,解析完後提示測試員設置測試次數和測試延時或者點擊"取消"(該步驟的實現是若是由步驟305)跳轉的則直接解析該測試腳本文件並把每條解析出來的字符串添加到List集合中);308)設置好後,點擊「確定」後程序會根據設置的信息進行自動化測試(該步驟的實現是取得步驟307)中解析後List類後,通過循環取值的方法來取出每一條帶有事件信息的字符串並通過String的spit (",")方法轉換成一個字符串數組並根據該字符串的首個元素的值來進行判斷,規則如下如果值為「0」,則取其第二個元素跟第三個元素的值來啟動被測程序;如果值為「 I 」,則取其後的所有元素的值並結合Instrumentation的sendKeySync 方法發送模擬鍵盤事件;如果值為「2」,則取其後的所有元素的值並結合Instrumentation的sendPointerSync O方法發送觸控事件;309)在自動化測試時,程序會在屏幕上顯示測試進度,中途也可手動停止測試;310)當測試執行完畢後,程序會彈出對話框詢問測試員是否繼續;311)若點擊繼續,則自動化測試重新開始,若點擊停止,自動化測試則退出;312)結束。最後,以上所述僅為本發明的較佳實施例,凡依本發明權利要求範圍所做的均等變化與修飾,皆應屬本發明權利要求的涵蓋範圍。
權利要求
1.一種Android設備軟體自動測試方法,其特徵在於,包括以下自動腳本錄製步驟 101)啟動被測程序,並創建一層覆蓋在被測程序上的透明View層;所述View層是android, view. View 的子類; 102)按測試要求操作屏幕或按鍵; 在操作過程中,所述透明View層截取記錄對應觸控/按鍵事件,再通過向被測程序發送對應一致的模擬觸控/按鍵事件傳遞操作指令;被測程序執行所述操作指令。
2.根據權利要求I所述Android設備軟體自動測試方法,其特徵在於,步驟102)中通過解析錄製的測試腳本結合自動測試框架向被測程序發送模擬觸控/按鍵事件。
3.根據權利要求2所述Android設備軟體自動測試方法,其特徵在於,當透明View監聽到有UP動作時先暫時移除本身並傳遞錄製信息到回調函數HandleEvent中,而回調函數HandleEvent則根據錄製的信息結合自動化測試框架Instrumention發送模擬觸控/按鍵事件來更新被測程序界面,步驟102)中截取記錄包括記錄對應屏幕界面。
4.根據權利要求3所述Android設備軟體自動測試方法,其特徵在於,自動腳本錄製步驟包括跨進程錄製。
5.根據權利要求1-4任一項所述Android設備軟體自動測試方法,其特徵在於,所述錄製步驟還包括當透明View監聽到有結束錄製請求後結束錄製並通知後臺服務RecordService提取錄製信息,生成錄製腳本。
6.根據權利要求5所述Android設備軟體自動測試方法,其特徵在於,該自動測試方法還包括腳本回放步驟根據錄製腳本向被測程序發送與錄製腳本對應的一系列模擬觸控/按鍵事件。
7.根據權利要求6所述Android設備軟體自動測試方法,其特徵在於,所述回放步驟還包括腳本解析和有效性檢測子步驟。
8.根據權利要求6所述Android設備軟體自動測試方法,其特徵在於,該自動測試方法還包括結果驗證步驟,所述結果驗證步驟包括截取被測程序屏幕輸出和自動/人工圖像比對。
9.根據權利要求6所述Android設備軟體自動測試方法,其特徵在於,該自動測試方法還包括結果驗證步驟,所述結果驗證步驟包括記錄被測程序數據輸出和自動數值比對。
全文摘要
本發明涉及一種Android設備軟體自動測試方法,包括自動腳本錄製、回放和驗證步驟,其中錄製包括101)啟動被測程序,並創建一層覆蓋在被測程序上的透明可視(View)層;所述透明View層是android.view.View的子類;102)按測試要求操作屏幕或按鍵;在操作過程中,所述透明View層截取記錄對應觸控/按鍵事件,再通過向被測程序發送對應一致的模擬觸控/按鍵事件傳遞操作指令;被測程序執行所述操作指令。這種自動測試方法,基於Android系統本身,無須使用shell命令和高性能pc,從而提升測試安全、可靠、廣泛和易實施性。
文檔編號G06F11/36GK102841845SQ20121026596
公開日2012年12月26日 申請日期2012年7月30日 優先權日2012年7月30日
發明者曾元清 申請人:廣東歐珀移動通信有限公司