專利名稱:一種移動終端上應用程序的自動化測試方法及裝置的制作方法
技術領域:
本發(fā)明涉及移動終端測試領域,尤其涉及一種應用程序的自動化測試方法及裝置。
背景技術:
目前,移動互聯(lián)網(wǎng)蓬勃發(fā)展。因為移動互聯(lián)網(wǎng)的快速發(fā)展,移動終端上的應用程序開發(fā)也有巨大的市場。僅就安卓(Android)系統(tǒng)的應用程序來說,其日分發(fā)量已經(jīng)突破了2000萬。移動終端的用戶可以在移動互聯(lián)網(wǎng)上自由下載、安裝多種多樣、功能各異的應用程序,這為移動終端的用戶帶來了豐富的用戶體驗。但是,這些層出不窮的應用被開發(fā)完成后,在投放市場前一定要經(jīng)過測試來驗證它們的有效性、安全性等等。僅僅通過人工來測試這些應用程序的成本過高,因此就產(chǎn)生了應用程序的自動化測試工具?;顒?Activity)對象是安卓(Android)應用程序開發(fā)中十分重要的一類對象。活動對象是能夠提供用戶可以操作的界面的一類應用程序組件。在安卓(Android)軟件環(huán)境中,應用程序是由一組活動對象組成的,而每個活動對象不但是本應用程序的組成部分,而且也對外開放,可以向同一系統(tǒng)內(nèi)任何一個外部應用程序提供服務。因為活動對象在安卓應用程序中的重要性,很多應用程序自動化測試工具以活動對象作為自動化測試的對象。有這樣一些活動對象,在其實現(xiàn)過程中調用了會造成移動終端關機或者重啟的函數(shù)。由于這些調用,對這些活動對象的自動化測試的過程可能因為其所引起的關機或者重啟而中斷。其結果是,應用程序的測試員必須手動重啟自動化測試過程,并手動跳過對這些活動對象的自動化測試。這樣,原本十分方便、快捷的自動化測試過程變得十分麻煩。
發(fā)明內(nèi)容
本發(fā)明的目的在于提出一種移動終端上應用程序的自動化測試方法及裝置,以避免在自動化測試過程中不必要的關機和重啟。為達此目的,本發(fā)明采用以下技術方案:—種移動終端上應用程序的自動化測試方法,所述方法包括:讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表;列出所有待測試對象的名稱的列表,根據(jù)用戶輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,并從對象列表中刪除被選中的對象;啟動自動化測試過程; 加載對象列表中的待測試對象;對對象列表中的待測試對象進行自動化測試。進一步的,所述移動終端的操作系統(tǒng)是安卓(Android)操作系統(tǒng)。進一步的,所述記錄所有待測試對象的名稱的配置文件是安卓清單(AndroidManifest)文件。
進一步的,所述待測試對象是活動(Activity)對象。對應的,本發(fā)明還提供了一種移動終端上應用程序的自動化測試裝置,所述裝置包括:配置文件讀取模塊,用于讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表;測試對象選擇模塊,用于為用戶列出所有待測試對象的名稱的列表,由用戶根據(jù)經(jīng)驗選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,用戶完成選擇后,從對象列表中刪除被選中的對象;測試程序啟動模塊,用于啟動自動化測試過程;待測試對象加載模塊,用于加載對象列表中的待測試對象;自動化測試模塊,用于對對象列表中的待測試對象進行自動化測試。進一步的,所述移動終端的操作系統(tǒng)是安卓(Android)操作系統(tǒng)。進一步的,所述記錄所有待測試對象的名稱的配置文件是安卓清單(AndroidManifest)文件。進一步的,所述待測試對象是活動(Activity)對象。本發(fā)明方法及裝置的有益效果在于,采用本發(fā)明的方法及裝置能有效的避免對一些活動對象進行自動化測試時產(chǎn)生的系統(tǒng)關閉或者測試過程停止的問題,提高測試效率;測試程序運行在個人電腦上,并通過與移動終端的數(shù)據(jù)連接控制對移動終端的測試,有利于用戶按測試需求更改被測試的對象。
圖1是本發(fā)明的第一實施例提供的移動終端上應用程序的自動化測試方法的流程圖。圖2是本發(fā)明的第二實施例提供的移動終端上應用程序的自動化測試裝置的結構示意圖。
具體實施例方式下面結合附圖并通過具體實施方式
來進一步說明本發(fā)明的技術方案。圖1示出了本發(fā)明的第一實施例。圖1是本發(fā)明的第一實施例提供的移動終端上應用程序的自動化測試方法的流程圖。在步驟SlOl中,讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表。在安卓(Android)操作系統(tǒng)下,每個應用程序要在系統(tǒng)中啟動和運行,都必須在其根目錄下有一個名稱為安卓清單(Android Manifest)的使用可擴展標記語言(XML)編寫的配置文件。所述安卓清單配置文件定義了應用程序及其組件的結構和元數(shù)據(jù)。具體的,所述安卓清單配置文件包含了組成應用程序的每一個組件的節(jié)點,并使用意圖過濾器(IntentFilter)和權限(Authority)來確定這些組件之間以及這些組件和其他應用程序是如何交互的。
自動化測試過程開始時,從所述安卓清單配置文件中讀出所有組成所述應用程序的活動對象的名稱,并將所述活動對象的名稱存儲在對象鏈表中,以準備對所述活動對象的自動化測試。讀取活動對象名稱時,應該首先在所述安卓清單配置文件中找到所述的活動(Activity)節(jié)點,然后從所述活動節(jié)點中讀取所述應用程序包括的每一個活動(Activity)對象的名稱,并將讀出的活動對象的名稱存儲在一個鏈表中。所述鏈表被用于存儲要測試的應用程序中所有的活動對象的名稱,為后續(xù)的自動化測試提供測試的目標。在步驟S102中,為用戶列出所有待測試對象的名稱的列表,根據(jù)用戶輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,并從對象列表中刪除被選中的對象。在安卓系統(tǒng)的應用程序中,有一些應用程序的活動對象的運行會引起系統(tǒng)關閉或者自動化測試過程的停止。例如,帶有定時關機功能的應用程序的運行就可能導致系統(tǒng)關閉。對這些應用程序進行自動化測試的過程中,所述的應用程序難免運行至會引起所述問題的程序段,造成移動終端的操作系統(tǒng)關閉,或者所述自動化測試過程的停止。發(fā)生了這樣的情況,測試人員只能手動停止自動化測試的過程,重啟移動終端及所述自動化測試過程,并在所述自動化測試過程被重啟后手動的跳過會引起問題的活動對象的測試。顯然,這樣的操作十分麻煩。因此,我們在獲取應用程序的所有活動對象后,將所有的活動對象用列表的形式列出,讓用戶從中選擇中會引起系統(tǒng)關閉及自動化測試過程的停止的應用程序。用戶的選擇過程主要依據(jù)用戶對應用程序的先驗知識及以往對活動對象進行測試的經(jīng)驗。用戶完成上述選擇步驟后,對自己完成的選擇進行確認。確認完成后,所述自動化測試過程將用戶選擇的應用程序從對象列表中刪除。在步驟S103中,啟動自動化測試過程。完成了待測試的活動對象的準備之后,啟動自動化測試過程。所述自動化測試程序根據(jù)MonkeyRunner框架編寫,屬于功能測試程序。所述MoneyRunner框架是安卓軟件開發(fā)工具包(Android SDK)自帶的自動化測試程序開發(fā)工具,利用MonkeyRunner可以開發(fā)出快捷、易用的移動終端功能測試程序。所述自動化測試程序運行在個人電腦上,通過與所述移動終端之間的數(shù)據(jù)連接來控制所述移動終端,對所述移動終端進行測試。所述自動化測試程序可以由預先編寫好的測試腳本驅動,也可以由用戶在命令行交互窗口輸入命令來實時驅動。在步驟S104中,加載對象列表中的待測試對象。所述自動化測試過程啟動后,便需要加載待測試的活動對象。經(jīng)過步驟SlOl中的讀取和步驟S102中的選擇,已經(jīng)獲取了存儲著待測試的活動對象的對象列表。因此,在所述自動化測試過程啟動后,加載所述的已經(jīng)準備好的對象列表。對所述自動化測試過程來說,加載所述對象列表的過程就是讀入對象列表的過程。在本發(fā)明的第一實施例中,為了提高所述自動化測試過程的效率,對所述對象列表的讀入過程采取一次性讀入整個對象列表的方法,而不采用對列表中的活動對象逐一讀取的方法。
在步驟S105中,對對象列表中的待測試對象進行自動化測試。將作為測試對象的活動對象的列表讀入后,便開始對待測試對象的自動化測試。本發(fā)明方法是對移動終端上的應用程序的功能性測試方法,主要通過對活動對象中定義的各種用于界面交互的對象進行隨機操作來實現(xiàn)。例如,在待測試的活動對象中定義了一個按鈕對象,所述自動化測試程序會隨機的點擊所述按鈕對象。又例如,在待測試的活動對象中定義了一個文本框對象,所述自動化測試程序會隨機的對所述文本框對象輸入文本。自動化測試開始時,所述自動化測試程序首先讀取待測試的活動對象中所有用于界面交互的對象的名稱,然后對所述用于界面交互的對象進行隨機的操作。所述隨機操作是被操作的用于界面交互的對象可以接受的。例如,所述自動化測試程序不會對按鈕對象輸入文本。所述隨機操作是由所述自動化測試程序隨機生成的,并不考慮用戶平時的輸入習慣。這一點主要是出于被測試應用程序的健壯性的考慮,使得通過所述自動化測試程序測試的應用程序能夠應對多種異常的來自用戶的輸入數(shù)據(jù)。所述隨機操作的海量和頻繁的。之所以放棄人工測試而采用自動化測試,正是由于自動化測試的高效性。所述自動化測試程序會在較短的時間段內(nèi)生成大量的隨機操作,以此來測試待測試的活動對象的正確性和健壯性。所述自動化測試程序包括日志記錄器。在所述自動化測試程序運行的同時,所述日志記錄器記錄自動化測試運行的日志。所述日志中記錄自動化測試程序運行的關鍵步驟,自動化測試過程中出現(xiàn)的異常(Exception),自動化測試程序報出的各種警告(Warning)和錯誤(Error)等關鍵信息。本實施例通過在自動化測試程序啟動前,先將待測試的對象的列表顯示給用戶,由用戶從中取消阻礙自動化測試程序順暢運行的待測試對象的方法,實現(xiàn)了自動化測試程序的順暢運行,避免了在對一些待測試對象進行自動化測試的過程中出現(xiàn)系統(tǒng)關閉或者自動化測試過程停止的情況。圖2示出了本發(fā)明的第二實施例。圖2是本發(fā)明的第二實施例提供的移動終端上應用程序的自動化測試裝置的結構示意圖。所述移動終端上應用程序的自動化測試裝置包括配置文件讀取模塊201、測試對象選擇模塊202、測試程序啟動模塊203、待測試對象加載模塊204及自動化測試模塊205。所述配置文件讀取模塊201用于讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表。所述配置文件是安卓清單(Android Manifest)配置文件。所述安卓清單配置文件定義了應用程序及其組件的結構和元數(shù)據(jù)?;顒訉ο笫菓贸绦虻囊环N重要組件,因此每一個活動對象的名稱及其相關屬性都被記錄在所述安卓清單(Android Manifest)配置文件中。所述配置文件讀取模塊201用于從所述安卓清單配置文件中讀取每個待測試的活動對象的名稱,并將讀取到得活動對象的名稱都存儲在對象鏈表中。所述的讀取過程是首先從安卓清單配置文件中找到活動(activity)節(jié)點,再從所述活動節(jié)點中讀取每一個活動對象的名稱,并將所有讀取到的活動對象的名稱存儲在對象鏈表中。
所述測試對象選擇模塊202用于列出所有待測試對象的名稱的列表,根據(jù)用戶輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者自動化測試過程停止的對象,并從對象列表中刪除被選中的對象。所述測試對象選擇模塊202首先在程序界面上為用戶列出由所述配置文件讀取模塊201讀取的待測試的活動對象的名稱。用戶在列出待測試的活動對象的列表中選擇會引起系統(tǒng)關閉和自動化測試過程停止的活動對象。被選中的活動對象被從待測試的活動對象的列表中刪除。所述測試程序啟動模塊203用于啟動自動化測試過程。所述自動化測試過程是執(zhí)行本發(fā)明方法,對移動終端上的應用程序進行功能測試的過程。更具體的,所述自動化測試過程是對所述應用程序的活動對象進行功能測試的過程。由于經(jīng)過所述配置文件讀取模塊201及所述測試對象選擇模塊202的處理,已經(jīng)得到了構成被測試應用程序的,并且其測試不會造成系統(tǒng)關閉或者自動化測試過程停止的活動對象的鏈表,所以可以啟動所述自動化測試過程。所述待測試對象加載模塊204用于加載對象列表中的待測試對象。加載所述對象列表中的待測試對象的過程就是讀取對象列表的過程。為了提高所述自動化測試程序的效率,對所述對象列表的讀入過程采取一次性讀入整個對象列表的方法,而不采用對列表中的活動對象逐一讀取的方法。所述自動化測試模塊205用于對對象列表中的待測試對象進行自動化測試。所述自動化測試模塊模擬用戶的各種輸入操作,對應用程序的活動對象進行功能測試。例如,對活動對象中定義的按鈕對象,所述自動化測試模塊模擬用戶的點擊操作;對活動對象中定義的文本框對象,所述自動化測試模塊模擬用戶的文本輸入操作。所述自動化測試模塊包括一個日志記錄器。在所述自動化測試模塊對所述活動模塊進行測試時,所述日志記錄器記錄所述自動化測試程序運行的日志。所述日志中記錄自動化測試程序運行的關鍵步驟,自動化測試過程中出現(xiàn)的異常(Exception),自動化測試程序報出的各種警告(Warning)和錯誤(Error)等關鍵信息。本實施例通過添加測試對象選擇模塊,使得用戶可以在自動化測試運行前對需要測試的活動對象進行選擇,避免了因為對一些活動對象的功能測試引起的系統(tǒng)關閉或者測試過程停止,有效的提高了自動化測試的效率。顯然,本領域技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,他們可以用計算機裝置可執(zhí)行的程序代碼來實現(xiàn),從而可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件的結合。以上所述僅為本發(fā)明的優(yōu)選實施例,并不用于限制本發(fā)明,對于本領域技術人員而言,本發(fā)明可以有各種改動和變化。凡在本發(fā)明的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種移動終端上應用程序的自動化測試方法,其特征在于,所述方法包括: 讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表; 列出所有待測試對象的名稱的列表,根據(jù)用戶的輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,并從對象列表中刪除被選中的對象; 啟動自動化測試過程; 加載對象列表中的待測試對象; 對對象列表中的待測試對象進行自動化測試。
2.根據(jù)權利要求1所述的移動終端上應用程序的自動化測試方法,其特征在于,所述移動終端的操作系統(tǒng)是安卓(Android)操作系統(tǒng)。
3.根據(jù)權利要求1所述的移動終端上應用程序的自動化測試方法,其特征在于,所述記錄所有待測試對象的名稱的配置文件是安卓清單(Android Manifest)文件。
4.根據(jù)權利要求1所述的移動終端上應用程序的自動化測試方法,其特征在于,所述待測試對象是活動(Activity)對象。
5.一種移動終端上應用程序的自動化測試裝置,其特征在于,所述裝置包括: 配置文件讀取模塊,用于讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表; 測試對象選擇模塊,用于列出所有待測試對象的名稱的列表,根據(jù)用戶輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,并從對象列表中刪除被選中的對象; 測試程序啟動模塊,用于啟動自動化測試過程; 待測試對象加載模塊,用于加載對象列表中的待測試對象; 自動化測試模塊,用于對對象列表中的待測試對象進行自動化測試。
6.根據(jù)權利要求5所述的移動終端上應用程序的自動化測試裝置,其特征在于,所述移動終端的操作系統(tǒng)是安卓(Android)操作系統(tǒng)。
7.根據(jù)權利要求5所述的移動終端上應用程序的自動化測試裝置,其特征在于,所述記錄所有待測試對象的名稱的配置文件是安卓清單(Android Manifest)文件。
8.根據(jù)權利要求5所述的移動終端上應用程序的自動化測試裝置,其特征在于,所述待測試對象是活動(Activity)對象。
全文摘要
本發(fā)明公開了一種移動終端上應用程序的自動化測試方法及裝置。根據(jù)本發(fā)明方法,首先讀取記錄所有待測試對象的名稱的配置文件,并將所有待測試對象的名稱存儲至對象鏈表;列出所有待測試對象的名稱的列表,根據(jù)用戶的輸入選擇待測試對象中其測試會引起系統(tǒng)關閉或者測試過程停止的對象,并從對象列表中刪除被選中的對象;啟動自動化測試過程;加載對象列表中的待測試對象;對對象列表中的待測試對象進行自動化測試。采用本發(fā)明方法及裝置,能有效避免因為對一些活動對象的功能測試引起的系統(tǒng)關閉或者測試過程停止,提高自動化測試的效率。
文檔編號G06F11/36GK103164336SQ20131005755
公開日2013年6月19日 申請日期2013年2月22日 優(yōu)先權日2013年2月22日
發(fā)明者劉文杰 申請人:廣東歐珀移動通信有限公司