專利名稱:一種圖形用戶界面的測試方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)應(yīng)用領(lǐng)域,尤其涉及一種圖形用戶界面的測試方法和系統(tǒng)。
背景技術(shù):
軟件產(chǎn)品進(jìn)行測試時,一些基本的業(yè)務(wù)功能和流程在每個版本都需要進(jìn)行測試,對于這些重復(fù)的測試工作可采用自動化測試來完成,在自動化測試中,一個重要內(nèi)容就是測試函數(shù)AW(Action Word)的編寫和維護(hù),AW是實(shí)現(xiàn)一項(xiàng)功能的命令腳本,它是測試邏輯的組成元素,在圖形用戶界面(Graphics UserInterface,GUI)應(yīng)用程序的自動化測試中,測試者根據(jù)對測試用例和GUI應(yīng)用程序界面的分析,手工編寫一個AW向界面操作工具(如Robot,WinRunner等)發(fā)出操作指令,由界面操作工具根據(jù)操作指令對界面進(jìn)行操作來完成整個測試,這種方法需要為每一個界面編寫一個AW,所以當(dāng)有些產(chǎn)品的界面眾多并且非常復(fù)雜,編寫AW的工作量就變得非常大。同時,當(dāng)界面變化時,AW的維護(hù)也十分困難。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種圖形用戶界面的測試方法,旨在于解決現(xiàn)有技術(shù)中為每一個界面手工編寫一個AW,工作量大,維護(hù)困難的問題。
本發(fā)明的另一目的在于提供一種圖形用戶界面的測試系統(tǒng)。
本發(fā)明是這樣實(shí)現(xiàn)的,一種圖形用戶界面的測試方法,所述方法包括下述步驟A.根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息;
B.根據(jù)所述界面元素信息向界面操作工具發(fā)送操作指令;C.檢查界面操作工具對界面的測試結(jié)果。
所述步驟A進(jìn)一步包括A1.將所述測試用例數(shù)據(jù)轉(zhuǎn)換為界面標(biāo)識和界面元素標(biāo)識/值對;A2.將所述界面標(biāo)識和界面元素標(biāo)識/值對分離;A3.根據(jù)所述界面標(biāo)識獲取對應(yīng)的界面配置文件,并根據(jù)所述界面元素標(biāo)識/值對從所述界面配置文件中收集相關(guān)的界面元素信息。
所述步驟A進(jìn)一步包括將所述界面配置文件轉(zhuǎn)換成統(tǒng)一格式的步驟。
所述方法進(jìn)一步包括記錄測試結(jié)果日志的步驟。
一種圖形用戶界面的測試系統(tǒng),所述系統(tǒng)包括調(diào)度控制單元,用于對所述系統(tǒng)進(jìn)行控制和調(diào)用,載入測試用例數(shù)據(jù);界面信息收集單元,用于根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息;操作執(zhí)行單元,用于根據(jù)所述界面元素信息向界面操作工具發(fā)送操作指令;結(jié)果檢測單元,用于檢查界面操作工具對界面的測試結(jié)果。
所述界面信息收集單元進(jìn)一步包括用例數(shù)據(jù)轉(zhuǎn)換模塊,用于將測試用例數(shù)據(jù)轉(zhuǎn)換為界面標(biāo)識和界面元素標(biāo)識/值對;用例數(shù)據(jù)分析模塊,用于將所述界面標(biāo)識和界面元素標(biāo)識/值對進(jìn)行分離;界面信息收集模塊,用于根據(jù)所述界面標(biāo)識獲取對應(yīng)的界面配置文件,并根據(jù)所述界面元素標(biāo)識/值對從所述界面配置文件中收集相關(guān)的界面元素信息。
所述界面信息收集單元進(jìn)一步包括文件適配模塊,用于將所述界面配置文件轉(zhuǎn)換成統(tǒng)一格式。
所述系統(tǒng)進(jìn)一步包括日志記錄單元,用于記錄測試結(jié)果日志。
本發(fā)明在GUI應(yīng)用程序有描述界面信息的配置文件時,通過從配置文件中獲取與測試用例數(shù)據(jù)相關(guān)的界面信息,然后向界面操作工具發(fā)送相應(yīng)的操作指令來完成界面測試,從而不需要為每個界面進(jìn)行相應(yīng)的AW編寫和維護(hù),減輕了工作量。
圖1是本發(fā)明提供的GUI測試方法實(shí)現(xiàn)原理圖;圖2是本發(fā)明提供的GUI測試方法實(shí)現(xiàn)流程圖;圖3是本發(fā)明的一個示例圖;圖4是本發(fā)明提供的GUI測試系統(tǒng)結(jié)構(gòu)圖。
具體實(shí)施例方式
為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
本發(fā)明在GUI測試中通過從界面配置文件中獲取與測試用例數(shù)據(jù)相關(guān)的界面信息,然后向界面操作工具發(fā)送相應(yīng)的操作指令來完成對界面的測試操作,從而不需要為每個界面進(jìn)行相應(yīng)的AW編寫和維護(hù),減輕了工作量。
圖1示出了本發(fā)明提供的GUI測試方法的實(shí)現(xiàn)原理,詳述如下首先,根據(jù)測試用例數(shù)據(jù)找到描述對應(yīng)界面信息的配置文件。配置文件必須包含控件標(biāo)識和控件類型。
控件標(biāo)識,可以是名稱(name)也可以是其它的標(biāo)識,測試時可以根據(jù)此信息定位到控件;控件類型,即控件屬性,測試時可以根據(jù)此屬性對控件采取相應(yīng)的操作。
其次,讀取配置文件中的控件信息,根據(jù)控件類型和測試用例數(shù)據(jù)發(fā)出操作指令給界面操作工具。
再次,界面操作工具根據(jù)AW發(fā)出的操作指令操作界面。
最后,檢查執(zhí)行的結(jié)果是否正確,進(jìn)行日志記錄等,完成對界面的自動化測試。
圖2示出了本發(fā)明提供的GUI測試方法的實(shí)現(xiàn)流程,詳述如下在步驟201中,將測試用例數(shù)據(jù)進(jìn)行前期處理,主要是將數(shù)據(jù)轉(zhuǎn)換成如下格式界面標(biāo)識界面元素1標(biāo)識界面元素1值界面元素2標(biāo)識界面元素2值……等;其中,界面標(biāo)識和界面元素標(biāo)識在用例中可以是能夠定位界面和界面元素的任何信息,不必是實(shí)際界面的窗體ID和控件ID。
在步驟202中,將步驟201處理后的“界面標(biāo)識”和“界面元素標(biāo)識/值”對分離出來;在步驟203中,根據(jù)步驟202分離出來的“界面標(biāo)識”找到對應(yīng)的描述界面信息的配置文件,并將文件內(nèi)容轉(zhuǎn)化成一定格式,例如<窗體名>
<控件類型控件名值>
</窗體名>
再根據(jù)步驟202分離出來的“界面元素標(biāo)識/值”對從配置文件中收集實(shí)際的界面信息,并與測試用例數(shù)據(jù)對應(yīng)起來,收集的關(guān)鍵信息如下窗體標(biāo)識(windowID),界面上窗體的唯一標(biāo)識,能夠在實(shí)際界面中定位到此窗體,如窗體的名稱(name);窗體上可操作控件的標(biāo)識(widgetID),窗體上可以被操作的控件的唯一標(biāo)識,如控件的名稱(name)。
窗體上控件的類型(widgetType),例如文本框,選擇框等,界面操作工具能夠根據(jù)控件的類型執(zhí)行相應(yīng)的操作。
窗體上控件所在的容器(widgetTab),在實(shí)際界面中,一個窗體可能有很多容器,控件分布在不同容器內(nèi)(如TAB頁),在對控件操作時需要切換到相應(yīng)的TAB頁,在分析界面時我們需要記錄控件所在的容器,以供定位。
與測試用例數(shù)據(jù)對應(yīng)后的信息格式如下窗體名tab頁1控件1值控件2值……tab頁2控件1值控件2值……等。
在步驟204中,向界面操作工具發(fā)送操作指令,驅(qū)動界面操作工具對界面進(jìn)行實(shí)際操作;例如,給Tab頁1中的控件填入值,接著給Tab頁2中的控件填入值……直到所有傳遞進(jìn)來的測試用例數(shù)據(jù)都填入到界面中;在步驟205中,檢查執(zhí)行的結(jié)果是否正確,在不同的測試應(yīng)用中有不同的檢查方式,例如查詢后臺數(shù)據(jù)庫、從界面讀取等;在步驟206中,記錄測試結(jié)果及測試過程中遇到的錯誤,例如填入數(shù)據(jù)過程中控件未找到、填入數(shù)據(jù)出錯等。
為了更好的說明本發(fā)明,圖3示出了本發(fā)明的一個示例。窗體名為Input,窗體上有兩個靜態(tài)的,不可編輯(static)的文本框,名字為NameStatic和AgeStatic,兩個可編輯的文本框名字為NameText和AgeText,兩個按鈕,名字為OK和Cancel。
窗體對應(yīng)的配置文件如下<pre listing-type="program-listing"><root> <window name="Input"value="Input"> <StaticText name="NameStatic"value="Name"> <StaticText name="AgeStatic"value="Age"> <Text name="NameText"value=""> <Text name="AgeText"value=""> <Button name="OK″value=""> <Button name="Cancle"value=""> </window></root></pre>
可以看出配置文件是以<控件類型控件名字值>比較規(guī)范的形式描述的。在做自動化測試時就可以直接從此配置文件收集與測試用例數(shù)據(jù)相關(guān)的實(shí)際界面信息。例如測試用例為“please InputWindow=Input Name=Cat Age=10;then click the OK;”即測試在Name中填入“Cat”,Age中填入“10”,然后點(diǎn)擊“OK”按鈕,則本發(fā)明提供的GUI測試流程如下1、將測試用例數(shù)據(jù)中的信息轉(zhuǎn)換成如下格式Window=Input Name=Cat Age=10 OK=click;2、將界面標(biāo)識“Window=Input”和界面元素標(biāo)識/值對“Name=Cat Age=10OK=click”分離(在復(fù)雜的界面中可能有多個窗體,都可以在此次處理中分離出來);3、根據(jù)步驟2分離出的“Window=Input”找到對應(yīng)的界面配置文件,并根據(jù)界面元素標(biāo)識/值“Name=Cat Age=10 OK=click”收集界面配置文件中的實(shí)際的界面信息,并將界面元素標(biāo)識/值“Name=Cat Age=10 OK=click”與實(shí)際界面中的控件和值對應(yīng)起來,處理后的信息為“控件類型控件名字值”,如下TextNameText CatTextAgeText 10Button OKClick4、根據(jù)3處理的結(jié)果驅(qū)動界面操作工具執(zhí)行界面操作,對不同類型的控件操作方式不一樣,值表示的意義也不相同。本例中逐條分析數(shù)據(jù),讀取控件信息,如果控件名字為NameText則根據(jù)控件的屬性(Text)驅(qū)動界面操作工具在界面控件中填入“Cat”,如果控件名字為AgeText,則根據(jù)控件的屬性(Text)驅(qū)動界面操作工具在控件中填入10,如果控件名稱為“OK”,則根據(jù)控件的屬性(Button)驅(qū)動界面操作工具調(diào)用單擊函數(shù)對控件操作;5、進(jìn)行結(jié)果查詢,本例中通過查詢數(shù)據(jù)庫是否保存了信息“Cat”和“10”來檢查測試的結(jié)果;6、將測試結(jié)果和測試過程中遇到的錯誤以日志方式記錄下來。
相應(yīng)的,本發(fā)明還提供了一種實(shí)現(xiàn)GUI測試的系統(tǒng),如圖4所示。其中,調(diào)度控制單元401用于對系統(tǒng)進(jìn)行控制和調(diào)用,控制單元間的執(zhí)行順序,傳入測試用例數(shù)據(jù)。
界面信息收集單元402用于根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息。此單元包括用例數(shù)據(jù)轉(zhuǎn)換模塊4021、用例數(shù)據(jù)分析模塊4022以及界面信息收集模塊4023。其中,用例數(shù)據(jù)轉(zhuǎn)換模塊4021用于將測試用例數(shù)據(jù)轉(zhuǎn)換成如下格式界面標(biāo)識界面元素1標(biāo)識界面元素1值界面元素2標(biāo)識界面元素2值……等。
用例數(shù)據(jù)分析模塊4022對用例數(shù)據(jù)轉(zhuǎn)換模塊4021處理過的信息進(jìn)行分析,將界面標(biāo)識和界面元素標(biāo)識/值對分離出來,供界面信息收集模塊4023使用。
界面信息收集模塊4023根據(jù)用例數(shù)據(jù)分析單元4022提供的界面標(biāo)識,獲取對應(yīng)的界面配置文件,并從中收集實(shí)際的界面信息,然后將用例數(shù)據(jù)分析單元4022提供的“界面元素標(biāo)識”和“值”與配置文件中實(shí)際的“控件”和“值”對應(yīng)起來。
在本發(fā)明的一個實(shí)施例中,界面配置文件格式不規(guī)范,界面信息收集單元402還包括文件適配模塊4024,用于將獲取的界面配置文件進(jìn)行格式轉(zhuǎn)換,例如將XML(eXtensible Markup Language,可擴(kuò)展標(biāo)記語言)文件、Res(Resource,資源)文件等進(jìn)行初步的處理,統(tǒng)一成一種格式,供界面信息收集模塊4023處理。例如將信息統(tǒng)一為<窗體ID>
<控件類型控件名值>
</窗體ID>
操作執(zhí)行單元403根據(jù)界面信息收集模塊4023收集的實(shí)際界面信息發(fā)送操作指令給界面操作工具,驅(qū)動界面操作工具操作界面。結(jié)果檢測單元404對界面操作工具操作界面的測試結(jié)果進(jìn)行檢查。
在本發(fā)明的另一個實(shí)施例中,GUI測試系統(tǒng)還包括日志記錄單元405,用于記錄測試結(jié)果和測試過程中發(fā)生的錯誤。
以上所述僅為本發(fā)明的較佳實(shí)施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種圖形用戶界面的測試方法,其特征在于,所述方法包括下述步驟A.根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息;B.根據(jù)所述界面元素信息向界面操作工具發(fā)送操作指令;C.檢查界面操作工具對界面的測試結(jié)果。
2.如權(quán)利要求1所述的圖形用戶界面的測試方法,其特征在于,所述步驟A進(jìn)一步包括A1.將所述測試用例數(shù)據(jù)轉(zhuǎn)換為界面標(biāo)識和界面元素標(biāo)識/值對;A2.將所述界面標(biāo)識和界面元素標(biāo)識/值對分離;A3.根據(jù)所述界面標(biāo)識獲取對應(yīng)的界面配置文件,并根據(jù)所述界面元素標(biāo)識/值對從所述界面配置文件中收集相關(guān)的界面元素信息。
3.如權(quán)利要求1所述的圖形用戶界面的測試方法,其特征在于,所述步驟A進(jìn)一步包括將所述界面配置文件轉(zhuǎn)換成統(tǒng)一格式的步驟。
4.如權(quán)利要求1所述的圖形用戶界面的測試方法,其特征在于,所述方法進(jìn)一步包括記錄測試結(jié)果日志的步驟。
5.一種圖形用戶界面的測試系統(tǒng),其特征在于,所述系統(tǒng)包括調(diào)度控制單元,用于對所述系統(tǒng)進(jìn)行控制和調(diào)用,載入測試用例數(shù)據(jù);界面信息收集單元,用于根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息;操作執(zhí)行單元,用于根據(jù)所述界面元素信息向界面操作工具發(fā)送操作指令;結(jié)果檢測單元,用于檢查界面操作工具對界面的測試結(jié)果。
6.如權(quán)利要求5所述的圖形用戶界面的測試系統(tǒng),其特征在于,所述界面信息收集單元進(jìn)一步包括用例數(shù)據(jù)轉(zhuǎn)換模塊,用于將測試用例數(shù)據(jù)轉(zhuǎn)換為界面標(biāo)識和界面元素標(biāo)識/值對;用例數(shù)據(jù)分析模塊,用于將所述界面標(biāo)識和界面元素標(biāo)識/值對進(jìn)行分離;界面信息收集模塊,用于根據(jù)所述界面標(biāo)識獲取對應(yīng)的界面配置文件,并根據(jù)所述界面元素標(biāo)識/值對從所述界面配置文件中收集相關(guān)的界面元素信息。
7.如權(quán)利要求5所述的圖形用戶界面的測試系統(tǒng),其特征在于,所述界面信息收集單元進(jìn)一步包括文件適配模塊,用于將所述界面配置文件轉(zhuǎn)換成統(tǒng)一格式。
8.如權(quán)利要求5所述的圖形用戶界面的測試系統(tǒng),其特征在于,所述系統(tǒng)進(jìn)一步包括日志記錄單元,用于記錄測試結(jié)果日志。
全文摘要
本發(fā)明適用于計(jì)算機(jī)應(yīng)用領(lǐng)域,提供了一種圖形用戶界面的測試方法和系統(tǒng),所述方法包括下述步驟A.根據(jù)測試用例數(shù)據(jù)從界面配置文件中收集相關(guān)的界面元素信息;B.根據(jù)所述界面元素信息向界面操作工具發(fā)送操作指令;C.檢查界面操作工具對界面的測試結(jié)果。本發(fā)明在GUI應(yīng)用程序有描述界面信息的配置文件時,通過從配置文件中獲取與測試用例數(shù)據(jù)相關(guān)的界面信息,然后向界面操作工具發(fā)送相應(yīng)的操作指令來完成界面測試,從而不需要為每個界面進(jìn)行相應(yīng)的AW編寫和維護(hù),減輕了工作量。
文檔編號G06F11/36GK1851667SQ20061003370
公開日2006年10月25日 申請日期2006年2月15日 優(yōu)先權(quán)日2006年2月15日
發(fā)明者劉書生, 于海天, 黎元慶 申請人:華為技術(shù)有限公司