本發(fā)明涉及軟件測(cè)試技術(shù)領(lǐng)域,特別涉及自動(dòng)生成圖形用戶界面的測(cè)試腳本的技術(shù)領(lǐng)域。
背景技術(shù):現(xiàn)有的自動(dòng)化測(cè)試工具,在對(duì)圖形用戶界面(GUI)進(jìn)行自動(dòng)化測(cè)試時(shí),都需要測(cè)試人員根據(jù)測(cè)試用例的要求,手工的編寫相應(yīng)的測(cè)試腳本,而自動(dòng)化測(cè)試工具本身只能夠自動(dòng)的運(yùn)行這些已經(jīng)編寫好的測(cè)試腳本,比如,基于Windows的自動(dòng)化測(cè)試工具Winrunner和基于Linux的自動(dòng)化測(cè)試工具Xrunner都屬于這種情況。這樣的自動(dòng)化測(cè)試工具存在如下問題:1、人工撰寫測(cè)試腳本有一定困難。不同的自動(dòng)化測(cè)試工具有各自不同的編程風(fēng)格和語法,測(cè)試人員需要熟悉如何編寫合格的測(cè)試腳本,此外,不同的測(cè)試用例需要包含不同的測(cè)試腳本;2、測(cè)試腳本的維護(hù)有一定困難。一旦被測(cè)的圖形用戶界面改變,所有的測(cè)試腳本需要手動(dòng)修改。
技術(shù)實(shí)現(xiàn)要素:本發(fā)明所要解決的技術(shù)問題是提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法及裝置,以解決現(xiàn)有技術(shù)中測(cè)試人員需要手工撰寫測(cè)試腳本,腳本維護(hù)困難的問題。為了解決這個(gè)問題,本發(fā)明的第一方面在于提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法,包括如下步驟:1)定義被測(cè)圖形用戶界面中的每個(gè)構(gòu)件的信息:定義每個(gè)構(gòu)件的屬性和該構(gòu)件與其他構(gòu)件的相互約束關(guān)系;2)撰寫測(cè)試用例文件:將擬向被測(cè)圖形用戶界面中的每個(gè)構(gòu)件寫入的值和測(cè)試檢查點(diǎn)信息存于該文件;3)生成構(gòu)件組合值文件:對(duì)測(cè)試用例文件中的所有構(gòu)件的值進(jìn)行組合,得到若干個(gè)組合值文件,每個(gè)文件包含一種可能的組合;4)對(duì)每個(gè)組合值文件中的每一個(gè)構(gòu)件添加操作類型:根據(jù)構(gòu)件的屬性,確定組合值文件中的每一個(gè)構(gòu)件值的操作類型;5)確定每個(gè)組合值文件中的各個(gè)操作之間的先后順序:根據(jù)構(gòu)件的相互約束關(guān)系,重新排列組合值文件中的每一個(gè)操作的先后順序。6)生成測(cè)試腳本:將測(cè)試檢查點(diǎn)信息加入每個(gè)組合值文件的最后,得到測(cè)試腳本文件。為解決這個(gè)問題,與上述第一方面相結(jié)合,本發(fā)明的第二方面在于提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法,所述的每個(gè)構(gòu)件的屬性的取值范圍是一個(gè)集合,包括對(duì)該構(gòu)件所有可能的操作類型。為了解決這個(gè)問題,與上述第一方面相結(jié)合,本發(fā)明的第三方面在于提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法,所述的每個(gè)構(gòu)件的相互約束關(guān)系的取值范圍是一個(gè)集合,包括該構(gòu)件與其他構(gòu)件之間的所有輸入和輸出關(guān)系。為解決這個(gè)問題,與上述第一方面相結(jié)合,本發(fā)明的第四方面在于提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法,所述的每個(gè)構(gòu)件的信息還包括構(gòu)件的編號(hào)、類型、名稱。為解決這個(gè)問題,本發(fā)明還提供一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的裝置,包括用于定義被測(cè)圖形用戶界面中的每個(gè)構(gòu)件的信息的模塊,其定義每個(gè)構(gòu)件的屬性和該構(gòu)件與其他構(gòu)件的相互約束關(guān)系;用于撰寫測(cè)試用例文件的模塊,其將擬向被測(cè)圖形用戶界面中的每個(gè)構(gòu)件寫入的值和測(cè)試檢查點(diǎn)信息存于該文件;用于生成構(gòu)件值組合文件的模塊,其對(duì)測(cè)試用例文件中的所有構(gòu)件的值進(jìn)行組合,得到若干個(gè)組合值文件,每個(gè)文件包含一種可能的組合;用于對(duì)每個(gè)組合值文件中的每一個(gè)構(gòu)件值添加操作類型的模塊,其根據(jù)構(gòu)件的屬性,確定組合值文件中的每一個(gè)構(gòu)件值的操作類型;用于確定每個(gè)組合值文件中的各個(gè)操作之間的先后順序的模塊,其根據(jù)構(gòu)件的相互約束關(guān)系,重新排列組合值文件中的每一個(gè)操作的先后順序;用于生成測(cè)試腳本的模塊,其將測(cè)試檢查點(diǎn)信息加入每個(gè)組合值文件的最后,得到測(cè)試腳本文件。與現(xiàn)有技術(shù)相比,本發(fā)明提供的一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法及裝置,其有益的技術(shù)效果是:1、減少了測(cè)試人員手動(dòng)編寫測(cè)試腳本的工作量。由于能夠根據(jù)測(cè)試用例文件自動(dòng)的生成測(cè)試腳本文件,因此,不再需要測(cè)試者掌握測(cè)試腳本編程的語法;2、便于測(cè)試腳本的維護(hù):一旦被測(cè)圖形用戶界面發(fā)生變動(dòng),只需要修改測(cè)試用例文件,就能自動(dòng)重新生成新的測(cè)試腳本文件。附圖說明圖1是本發(fā)明提出的一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的方法的總體流程圖;圖2是本發(fā)明提出的一種自動(dòng)生成圖形用戶界面的測(cè)試腳本的裝置的示意性框圖;圖3是本發(fā)明具體實(shí)施方式中的被測(cè)圖形用戶界面的示意圖。具體實(shí)施方式下面結(jié)合附圖和具體實(shí)施方式對(duì)本發(fā)明作進(jìn)一步說明。在本實(shí)施例中,我們對(duì)附圖3所示的一個(gè)圖形用戶界面進(jìn)行測(cè)試。第一步:定義被測(cè)圖形用戶界面中的每個(gè)構(gòu)件的信息,按照如下格式定義每一個(gè)構(gòu)件的信息:W={id,type,name,attribute,constraint}其中,id是該構(gòu)件的編號(hào);type是該構(gòu)件的類型,如:文本框、按鈕、下拉框等;name是該構(gòu)件的名稱;attibute是該構(gòu)件的屬性,其取值范圍是一個(gè)集合,用于描述對(duì)于該構(gòu)件所有可能的操作類型,比如:插入、刪除、點(diǎn)擊、選擇等;constraint是該構(gòu)件與其他構(gòu)件之間的約束關(guān)系,比如:用于描述該構(gòu)件是另一個(gè)構(gòu)件的輸入等。具體到附圖3可以看出,該圖形用戶界面一共包括四個(gè)構(gòu)件,分別是:“Amount”、“Rate”、“Term”和“Calculate”。對(duì)于每一個(gè)構(gòu)件,按照上述格式定義其信息如下:W1={id1,文本框,Amount,插入/刪除,w1->w4}W2={id2,文本框,Rate,插入/刪除,w2->w4}W3={id3,下拉框,Term,選擇,w3->w4}W4={id4,按鈕,Calculate,點(diǎn)擊,w4->W(wǎng)indow2}其中,w1->w4、w2->w4、w3->w4表示w1、w2和w3是w4的輸入,w4->W(wǎng)indow2表示w4的輸出是另一個(gè)窗口Window2以及在Window2中顯示的內(nèi)容。第二步:撰寫測(cè)試用例文件,包含如下信息:W1:21,0,-999W2:1.0,6.48W3:1,2,3W4:?jiǎn)螕?、雙擊檢查Window2該測(cè)試用例文件中,以每一個(gè)構(gòu)件值為一行,包括了測(cè)試過程中擬向被測(cè)圖形用戶界面中的每個(gè)構(gòu)件寫入的值,最后一行還注明了該測(cè)試用例的檢查點(diǎn)信息。第三步:生成構(gòu)件組合值文件。對(duì)第二步的測(cè)試用例文件中的構(gòu)件值進(jìn)行組合,每一種可能的組合就是一個(gè)構(gòu)件值組合文件,下面是其中的幾種組合的示例:組合值文件1:w121w21.0w31w4單擊組合值文件2:w10w21.0w31w4單擊組合值文件3:w1-999w21.0w31w4單擊組合值文件4:w1-999w26.48w33w4雙擊第四步:確定每個(gè)組合值文件中的每一個(gè)構(gòu)件值的操作類型。根據(jù)第一步定義的構(gòu)件的屬性attribute,確定組合值文件中的每一個(gè)構(gòu)件值的操作類型,并將該操作類型添加到組合值文件中。添加操作類型后的組合值文件如下所示:組合值文件1:插入w121插入w21.0選擇w31點(diǎn)擊w4單擊組合值文件2:插入w10插入w21.0選擇w31點(diǎn)擊w4單擊組合值文件3:插入w1-999插入w21.0選擇w31點(diǎn)擊w4單擊組合值文件4:插入w1-999插入w26.48選擇w33點(diǎn)擊w4雙擊第五步:確定每個(gè)組合值文件中的各個(gè)操作之間的先后順序。根據(jù)第一步定義的構(gòu)件的相互約束關(guān)系constraint可知,w1、w2和w3的輸出都是w4所必需的輸入,因此,應(yīng)該先對(duì)w1、w2和w3進(jìn)行相應(yīng)的操作以后,再操作w4,所以,對(duì)第四步得到的組合之文件的每一個(gè)操作進(jìn)行重新排序時(shí),就按照這個(gè)準(zhǔn)則進(jìn)行。本實(shí)施例中,重新排序以前,組合之文件中的操作順序剛好滿足這個(gè)準(zhǔn)則的要求,因此重新排序以后,順序保持不變。第六步:生成測(cè)試腳本。將第二步撰寫的測(cè)試用例文件中的測(cè)試檢查點(diǎn)信息加入第五步得到的每個(gè)組合值文件的最后,得到測(cè)試腳本文件如下:測(cè)試腳本文件1:插入w121插入w21.0選擇w31點(diǎn)擊w4單擊檢查Window2測(cè)試腳本文件2:插入w10插入w21.0選擇w31點(diǎn)擊w4單擊檢查Window2測(cè)試腳本文件3:插入w1-999插入w21.0選擇w31點(diǎn)擊w4單擊檢查Window2測(cè)試腳本文件4:插入w1-999插入w26.48選擇w33點(diǎn)擊w4雙擊檢查Window2從以上描述可以看出,第一步所定義的信息是圖形用戶界面的開發(fā)設(shè)計(jì)者提供的,只有第二步需要圖形用戶界面的測(cè)試人員手動(dòng)撰寫,而這步所涉及的工作量并不大,需要較大工作量的后面幾步,都可以由計(jì)算機(jī)自動(dòng)生成。并且,如果對(duì)被測(cè)的圖形用戶界面做出了修改,需要重新測(cè)試時(shí),只需修改測(cè)試用例文件,然后讓計(jì)算機(jī)自動(dòng)執(zhí)行后面四個(gè)步驟,就可以快速的生成所需要的新測(cè)試腳本。