本申請(qǐng)涉及界面測(cè)試技術(shù)領(lǐng)域,具體涉及一種界面測(cè)試程序的生成方法、裝置及電子設(shè)備。
背景技術(shù):
界面是軟件與用戶交互的最直接的層,界面的好壞決定用戶對(duì)軟件的第一印象。通過(guò)用戶界面(ui,userinterface)測(cè)試能夠核實(shí)用戶與軟件的交互。ui測(cè)試的目標(biāo)在于確保用戶界面向用戶提供了適當(dāng)?shù)脑L問(wèn)和瀏覽測(cè)試對(duì)象功能的操作。除此之外,ui測(cè)試還要確保ui功能內(nèi)部的對(duì)象符合預(yù)期要求,并遵循公司或行業(yè)的標(biāo)準(zhǔn)。
在一個(gè)高度交互性和響應(yīng)的軟件流程時(shí)代,通過(guò)執(zhí)行自動(dòng)測(cè)試工具或者用某種程序設(shè)計(jì)語(yǔ)言編寫(xiě)測(cè)試程序,控制被測(cè)軟件中的各種模塊,模擬手動(dòng)測(cè)試步驟,完成測(cè)試是十分必要的。實(shí)現(xiàn)界面測(cè)試的自動(dòng)化具有很多優(yōu)點(diǎn),例如,可頻繁的進(jìn)行回歸測(cè)試、將測(cè)試結(jié)果快速反饋給開(kāi)發(fā)人員、幾乎無(wú)限的重復(fù)測(cè)試用例的執(zhí)行、不會(huì)錯(cuò)過(guò)人工手動(dòng)測(cè)試可能遺漏的缺陷等。
以web界面測(cè)試為例,目前比較完整的web界面自動(dòng)化測(cè)試的實(shí)踐方式,均基于selenium開(kāi)源解決方案上,主要分為兩種方式:
1)基于seleniumide的頁(yè)面錄制方式。
seleniumide是一個(gè)firefox插件,可以錄制用戶的基本操作,生成測(cè)試用例。隨后可以運(yùn)行這些測(cè)試用例在瀏覽器里回放,可將測(cè)試用例轉(zhuǎn)換為其他語(yǔ)言的自動(dòng)化腳本,即:界面測(cè)試程序。
2)基于selenium2.0api進(jìn)行編程的方式。
該方式首先通過(guò)元素xpath定位建立頁(yè)面元素集合、形成頁(yè)面建模數(shù)據(jù)文件;然后,啟動(dòng)瀏覽器讀取頁(yè)面建模數(shù)據(jù)文件,從中獲取頁(yè)面的受測(cè)對(duì)象和測(cè)試用例;最后,再結(jié)合測(cè)試場(chǎng)景進(jìn)行測(cè)試程序的編寫(xiě)。這種實(shí)現(xiàn)方式需要對(duì)頁(yè)面元素的類型、html標(biāo)簽、selenium2.0都有一定的了解和測(cè)試場(chǎng)景編寫(xiě)能力。
上述現(xiàn)有的界面測(cè)試程序的生成方式,提供了一種通用的自動(dòng)化方案,但在實(shí)際應(yīng)用中缺乏策略指導(dǎo)。具體的,上述第一種方式支持的瀏覽器有限,主要適用于工作在firefox瀏覽器下,而當(dāng)今主流且前端工具豐富的瀏覽器(如googlechrome)卻無(wú)法適用;上述第二種方式的存在如下缺點(diǎn)為:在業(yè)務(wù)快速變化且維護(hù)人員不斷變更的情況下,對(duì)測(cè)試程序的編寫(xiě)及測(cè)試程序的維護(hù)均需較高成本,使得頁(yè)面自動(dòng)化本身的持續(xù)回歸和自動(dòng)化的意義完全體現(xiàn)不出來(lái)。
綜上所述,業(yè)務(wù)的迅速發(fā)展導(dǎo)致界面測(cè)試程序需要頻繁修改,現(xiàn)有技術(shù)需要人工定位測(cè)試程序中的代碼并進(jìn)行維護(hù),從而導(dǎo)致維護(hù)成本較高。因而,現(xiàn)有技術(shù)存在無(wú)法自動(dòng)生成測(cè)試程序的問(wèn)題。
技術(shù)實(shí)現(xiàn)要素:
本申請(qǐng)?zhí)峁┮环N界面測(cè)試程序的生成方法、裝置及電子設(shè)備,以解決現(xiàn)有技術(shù)存在無(wú)法自動(dòng)生成測(cè)試程序的問(wèn)題。
本申請(qǐng)?zhí)峁┮环N界面測(cè)試程序的生成方法,包括:
獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;所述組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)所述測(cè)試用例的業(yè)務(wù)流程的界面文件;所述組件級(jí)元素是指,與所述測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素,所述組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí);
針對(duì)各個(gè)所述組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;
根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述測(cè)試用例的測(cè)試程序。
可選的,所述生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼,包括:
解析所述組件級(jí)元素,獲取所述組件級(jí)元素包括的所述組件標(biāo)簽、及所述組件級(jí)元素的屬性;
根據(jù)所述組件標(biāo)簽及所述預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,獲取與所述組件級(jí)元素對(duì)應(yīng)的程序代碼模板;
根據(jù)所述組件級(jí)元素的屬性和所述程序代碼模板,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼。
可選的,所述組件化模板包括非組件級(jí)元素的程序代碼;
所述對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,采用如下規(guī)則:
所述測(cè)試程序包括所述非組件級(jí)元素的程序代碼、且所述非組件級(jí)元素的程序代碼在所述測(cè)試程序中的位置與在所述組件化模板中的位置相對(duì)應(yīng)。
可選的,所述組件級(jí)元素與預(yù)設(shè)事件綁定,當(dāng)所述預(yù)設(shè)事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法;所述預(yù)設(shè)事件包括對(duì)所述組件級(jí)元素的屬性進(jìn)行增加、修改或刪除的事件。
可選的,還包括:
通過(guò)瀏覽器對(duì)所述預(yù)設(shè)事件進(jìn)行監(jiān)聽(tīng)。
可選的,還包括:
當(dāng)所述測(cè)試用例發(fā)生變更時(shí),修改所述組件化模板;所述發(fā)生變更包括所述業(yè)務(wù)流程發(fā)生變更;
執(zhí)行所述界面測(cè)試程序的生成方法,根據(jù)修改后的組件化模板,生成修改后的測(cè)試用例的測(cè)試程序。
可選的,所述組件化模板與模板變更事件綁定;所述執(zhí)行所述界面測(cè)試程序的生成方法,采用如下方式:
當(dāng)所述模板變更事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法。
可選的,還包括:
通過(guò)瀏覽器對(duì)所述模板變更事件進(jìn)行監(jiān)聽(tīng)。
可選的,在所述獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板之前,還包括:
根據(jù)預(yù)設(shè)的控件標(biāo)簽與組件標(biāo)簽的對(duì)應(yīng)關(guān)系,為所述測(cè)試用例構(gòu)建所述組件化模板。
可選的,所述組件級(jí)元素包括選擇列表元素、文本輸入元素、可選項(xiàng)元素或按鈕元素;所述組件級(jí)元素包括元素定位屬性,所述元素定位屬性包括元素標(biāo)識(shí)屬性或元素名稱屬性。
相應(yīng)的,本身請(qǐng)還提供一種界面測(cè)試程序的生成裝置,包括:
獲取單元,用于獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;所述組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)所述測(cè)試用例的業(yè)務(wù)流程的界面 文件;所述組件級(jí)元素是指,與所述測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素,所述組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí);
生成單元,用于針對(duì)各個(gè)所述組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;
合成單元,用于根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述測(cè)試用例的測(cè)試程序。
可選的,所述生成單元包括生成子單元,用于生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;
所述生成子單元包括:
解析子單元,用于解析所述組件級(jí)元素,獲取所述組件級(jí)元素包括的所述組件標(biāo)簽、及所述組件級(jí)元素的屬性;
獲取子單元,用于根據(jù)所述組件標(biāo)簽及所述預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,獲取與所述組件級(jí)元素對(duì)應(yīng)的程序代碼模板;
第一生成子單元,用于根據(jù)所述組件級(jí)元素的屬性和所述程序代碼模板,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼。
可選的,所述組件級(jí)元素與預(yù)設(shè)事件綁定,當(dāng)所述預(yù)設(shè)事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法;所述預(yù)設(shè)事件包括對(duì)所述組件級(jí)元素的屬性進(jìn)行增加、修改或刪除的事件;所述裝置還包括:
第一監(jiān)聽(tīng)單元,用于通過(guò)瀏覽器對(duì)所述預(yù)設(shè)事件進(jìn)行監(jiān)聽(tīng)。
可選的,所述組件化模板與模板變更事件綁定;所述執(zhí)行所述界面測(cè)試程序的生成方法,采用如下方式:當(dāng)所述模板變更事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法;所述裝置還包括:
第二監(jiān)聽(tīng)單元,用于通過(guò)瀏覽器對(duì)所述模板變更事件進(jìn)行監(jiān)聽(tīng)。
相應(yīng)的,本申請(qǐng)還提供一種電子設(shè)備,包括:
顯示器;
處理器;以及
存儲(chǔ)器,用于存儲(chǔ)界面測(cè)試程序的生成裝置,所述界面測(cè)試程序的生成裝置被所述處理器執(zhí)行時(shí),包括如下步驟:獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;所述組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)所述測(cè)試用 例的業(yè)務(wù)流程的界面文件;所述組件級(jí)元素是指,與所述測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素,所述組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí);針對(duì)各個(gè)所述組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述測(cè)試用例的測(cè)試程序。
與現(xiàn)有技術(shù)相比,本申請(qǐng)具有以下優(yōu)點(diǎn):
本申請(qǐng)?zhí)峁┮环N界面測(cè)試程序的生成方法、裝置和電子設(shè)備,通過(guò)獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;針對(duì)組件化模板包括的各個(gè)組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與組件級(jí)元素對(duì)應(yīng)的程序代碼;根據(jù)組件級(jí)元素在組件化模板中的排列順序,對(duì)與組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為待處理的測(cè)試用例的測(cè)試程序。采用本申請(qǐng)?zhí)峁┑姆椒?,能夠自?dòng)生成待處理的測(cè)試用例的測(cè)試程序,從而達(dá)到降低維護(hù)成本的效果。
附圖說(shuō)明
圖1是本申請(qǐng)的界面測(cè)試程序的生成方法實(shí)施例的流程圖;
圖2是本申請(qǐng)的界面測(cè)試程序的生成方法實(shí)施例生成組件級(jí)元素的程序代碼的具體流程圖;
圖3是本申請(qǐng)的界面測(cè)試程序的生成裝置實(shí)施例的示意圖;
圖4是本申請(qǐng)的界面測(cè)試程序的生成裝置實(shí)施例的具體示意圖;
圖5是本申請(qǐng)的電子設(shè)備實(shí)施例的示意圖。
具體實(shí)施方式
在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本申請(qǐng)。但是本申請(qǐng)能夠以很多不同于在此描述的其它方式來(lái)實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本申請(qǐng)內(nèi)涵的情況下做類似推廣,因此本申請(qǐng)不受下面公開(kāi)的具體實(shí)施的限制。
在本申請(qǐng)中,提供了一種界面測(cè)試程序的生成方法、裝置及電子設(shè)備。在下面的實(shí)施例中逐一進(jìn)行詳細(xì)說(shuō)明。
本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,其核心的基本思想是:根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼的對(duì)應(yīng)關(guān)系,對(duì)待處理的測(cè)試用例的組件化模板進(jìn)行解析,生成待處理的測(cè)試用例的測(cè)試程序。由于能夠自動(dòng)生成待處理的測(cè)試用例的測(cè)試程序,從而達(dá)到降低維護(hù)成本的效果。
請(qǐng)參考圖1,其為本申請(qǐng)的界面測(cè)試程序的生成方法實(shí)施例的流程圖。所述方法包括如下步驟:
步驟s101:獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板。
測(cè)試用例(testcase)是為某個(gè)特殊目標(biāo)而編制的一組測(cè)試輸入、執(zhí)行條件以及預(yù)期結(jié)果,以便測(cè)試某個(gè)程序路徑或核實(shí)是否滿足某個(gè)特定需求。本申請(qǐng)實(shí)施例所述的待處理的測(cè)試用例包括從操作型界面中抽象出的測(cè)試用例。
界面分為操作型界面和查詢型界面。相對(duì)于查詢型界面而言,操作型界面的特點(diǎn)為具有業(yè)務(wù)交互流程。用戶登錄界面是一種典型的操作型界面,用戶首先需要輸入賬號(hào)及密碼等信息,然后點(diǎn)擊提交按鈕啟動(dòng)后臺(tái)進(jìn)行用戶身份的驗(yàn)證。在實(shí)際應(yīng)用中,一個(gè)操作型界面可抽象出至少一個(gè)測(cè)試用例。
本申請(qǐng)實(shí)施例所述的組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)測(cè)試用例的業(yè)務(wù)流程的界面文件。一個(gè)測(cè)試用例對(duì)應(yīng)一個(gè)組件化模板。所述的組件級(jí)元素是指,與測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素。
控件(control)和組件(component)均是對(duì)數(shù)據(jù)和方法的封裝??丶话闶菫榱送瓿商囟ǖ恼故净蛱囟?yè)面/窗體的技術(shù)功能,而組件一般指對(duì)一些小功能點(diǎn)的封裝,封裝后的集合(組件)一般具有較獨(dú)立的功能,可以完成某一項(xiàng)任務(wù)。因此,控件是為了頁(yè)面/窗體級(jí)復(fù)用而出現(xiàn)的,而組件是為了項(xiàng)目級(jí)復(fù)用而出現(xiàn)的,從這個(gè)意義上來(lái)說(shuō),組件的意思更接近于模塊。綜上所述,控件和組件的區(qū)別在于:控件是可視的、而組件是不可視的,即:控件就是可視化的組件。
本申請(qǐng)實(shí)施例所述的控件級(jí)元素是指可視化的界面組成元素,所述的組件級(jí)元素是指不可視的界面組成元素。所述的組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí)。組件級(jí)元素包括但不限于:選擇列表元素、文本輸入元素、可選項(xiàng)元素或按鈕元素等。從元素屬性角度,所述的組件級(jí)元素包括元素定位屬性或值屬性等。所述的元素定位屬性包括元素標(biāo)識(shí)屬性或元素名稱屬性。通過(guò)元素定位屬性能夠?qū)M件級(jí)元素進(jìn)行定位。
需要說(shuō)明的是,現(xiàn)有技術(shù)在對(duì)web頁(yè)面元素進(jìn)行定位時(shí),部分元素可能包括id或name屬性,而另外部分元素則需要用復(fù)雜的xpath來(lái)表達(dá)。本申請(qǐng)實(shí)施例提供的方法,可為復(fù)雜的xpath元素增加元素標(biāo)識(shí)或元素名稱屬性。由于每個(gè)組件級(jí)元素均可具有元素標(biāo)識(shí)或元素名稱屬性,因此,只要該元素不刪除,頁(yè)面的dom結(jié)構(gòu)修改便不會(huì)影響該元素的定位,從而減少業(yè)務(wù)需求變更對(duì)測(cè)試程序的影響。
下面通過(guò)本申請(qǐng)實(shí)施例的一個(gè)組件化模板對(duì)上述概念進(jìn)行具體說(shuō)明。本實(shí)施例的組件化模板代碼如下:
@url(“http://output.wmp.daily.taobao.net/quality/packageq_c.htm”)
@select([name:”desk”,value:”質(zhì)檢臺(tái)1”])
@text([id:”packagecode”,value:”paszc150907000004”])
for(inti=0;i<itemnum;i++)
@text([id:”itemcode”,value:”482031-90”])
@button([id:”completeqc”])
上述代碼中的@url、@select、@text、@button均為組件標(biāo)簽,其中,@url標(biāo)簽表示driver跳轉(zhuǎn)的目標(biāo)頁(yè)面鏈接,@select和@text標(biāo)簽對(duì)應(yīng)的組件級(jí)元素通過(guò)輸入方式完成,@button標(biāo)簽對(duì)應(yīng)的組件級(jí)元素通過(guò)點(diǎn)擊方式完成。上述每一個(gè)組件標(biāo)簽對(duì)應(yīng)的一行代碼表示一個(gè)組件級(jí)元素,例如,@button對(duì)應(yīng)的@button([id:”completeqc”])即表示一個(gè)組件級(jí)元素,@button標(biāo)簽的id屬性為元素標(biāo)識(shí)屬性,”completeqc”表示該元素的元素標(biāo)識(shí)值。@text([id:”itemcode”,value:”482031-90”])元素中的value屬性(即:值屬性)表示實(shí)際操作時(shí)的測(cè)試數(shù)據(jù)。
要實(shí)施本申請(qǐng)實(shí)施例提供的方法,首先需要構(gòu)建待處理的測(cè)試用例的組件化模板。在實(shí)際應(yīng)用中,可根據(jù)預(yù)設(shè)的控件標(biāo)簽與組件標(biāo)簽的對(duì)應(yīng)關(guān)系,為待處理的測(cè)試用例構(gòu)建組件化模板。例如,控件標(biāo)簽與組件標(biāo)簽的對(duì)應(yīng)關(guān)系包括:select對(duì)應(yīng)@select、textarea對(duì)應(yīng)@text等。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,上述控件標(biāo)簽與組件標(biāo)簽的對(duì)應(yīng)關(guān)系可以采用多種具體的形式。該對(duì)應(yīng)關(guān)系的各種形式的變化,都只是具體實(shí)施方式的變更,都不偏離本申請(qǐng)的核心,因此都在本申請(qǐng)的保護(hù)范圍之內(nèi)。
步驟s103:針對(duì)各個(gè)所述組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模 板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼。
本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,將組件級(jí)元素解析為與其對(duì)應(yīng)的測(cè)試程序代碼。本步驟即針對(duì)組件化模板中的各個(gè)組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與各個(gè)組件級(jí)元素分別對(duì)應(yīng)的測(cè)試程序代碼。
本申請(qǐng)實(shí)施例所述的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系實(shí)質(zhì)為一種解析規(guī)則,例如,@url標(biāo)簽對(duì)應(yīng)的java代碼模板為driver.get(…)、@text標(biāo)簽對(duì)應(yīng)的代碼模板為driver.findelement(…).clear().sendkeys(…).sendkeys(keys.enter)、@button對(duì)應(yīng)的java代碼模板為driver.findelement(…).click()。
所述的程序代碼模板是指不包括具體參數(shù)的程序代碼,例如,組件級(jí)元素為@text([id:”packagecode”,value:”paszc150907000004”]),該元素的組件標(biāo)簽為@text,該組件標(biāo)簽對(duì)應(yīng)的程序代碼模板為driver.findelement(by.id(&id)).clear().sendkeys(&value).sendkeys(keys.enter),該組件標(biāo)簽對(duì)應(yīng)的程序代碼如下:
driver.findelement(by.id(”packagecode”)).clear();
driver.findelement(by.id(”packagecode”)).sendkeys(”paszc150907000004”);
driver.findelement(by.id(”packagecode”)).sendkeys(keys.enter);
需要說(shuō)明的是,在實(shí)際應(yīng)用中,上述組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系可以采用多種具體的形式。該對(duì)應(yīng)關(guān)系的各種形式的變化,都只是具體實(shí)施方式的變更,都不偏離本申請(qǐng)的核心,因此都在本申請(qǐng)的保護(hù)范圍之內(nèi)。此外,可為組件標(biāo)簽設(shè)置不同程序語(yǔ)言的程序代碼模板,例如,java語(yǔ)言、c++語(yǔ)言等。
請(qǐng)參考圖2,其為本申請(qǐng)的界面測(cè)試程序的生成方法實(shí)施例生成組件級(jí)元素的程序代碼的具體流程圖。在本實(shí)施例中,生成與組件級(jí)元素對(duì)應(yīng)的程序代碼,包括如下步驟:
步驟s201:解析所述組件級(jí)元素,獲取所述組件級(jí)元素包括的所述組件標(biāo)簽、及所述組件級(jí)元素的屬性。
要生成與組件級(jí)元素對(duì)應(yīng)的程序代碼,首先需要對(duì)組件級(jí)元素進(jìn)行解析,獲取組件級(jí)元素包括的組件標(biāo)簽及屬性,例如,組件級(jí)元素包括的元素定位屬性、值屬性等。解析組件級(jí)元素,可通過(guò)文本比對(duì)的方法進(jìn)行。
步驟s203:根據(jù)所述組件標(biāo)簽及所述預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì) 應(yīng)關(guān)系,獲取與所述組件級(jí)元素對(duì)應(yīng)的程序代碼模板。
獲取到組件級(jí)元素包括的組件標(biāo)簽后,本步驟以組件標(biāo)簽為檢索條件,在預(yù)設(shè)的組件標(biāo)簽與程序代碼的對(duì)應(yīng)關(guān)系中進(jìn)行檢索,以獲取與所述組件級(jí)元素對(duì)應(yīng)的程序代碼模板。
步驟s205:根據(jù)所述組件級(jí)元素的屬性和所述程序代碼模板,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼。
最后,根據(jù)組件級(jí)元素的屬性對(duì)程序代碼模板的可變部分進(jìn)行填充,生成與組件級(jí)元素對(duì)應(yīng)的程序代碼。例如,組件級(jí)元素@text([id:”packagecode”,value:”paszc150907000004”]),該元素的組件標(biāo)簽對(duì)應(yīng)的程序代碼模板包括代碼driver.findelement(by.id(&id)).clear(),因此,需讀取該元素的id屬性,將id屬性值填充到代碼中,形成程序代碼driver.findelement(by.id(”packagecode”)).clear()。
需要說(shuō)明的是,在實(shí)際應(yīng)用中,可以采用多種具體的實(shí)施方式實(shí)現(xiàn)步驟s103。實(shí)現(xiàn)該步驟的各種形式的變化,都只是具體實(shí)施方式的變更,都不偏離本申請(qǐng)的核心,因此都在本申請(qǐng)的保護(hù)范圍之內(nèi)。
步驟s105:根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述待處理的測(cè)試用例的測(cè)試程序。
本申請(qǐng)實(shí)施例所述的組件化模板能夠表達(dá)測(cè)試用例的業(yè)務(wù)流程,業(yè)務(wù)流程是通過(guò)組件級(jí)元素在組件化模板中的排列順序表示的。以步驟s101給出的組件化模板代碼為例,該界面代碼所表達(dá)的業(yè)務(wù)流程為:1)選取質(zhì)檢臺(tái);2)輸入包裹號(hào);3)輸入子項(xiàng)編碼;4)點(diǎn)擊按鈕進(jìn)行提交。
本步驟對(duì)于組件化模板包括的各個(gè)組件化元素,將與組件化元素對(duì)應(yīng)的程序代碼進(jìn)行合成,以生成待處理的測(cè)試用例的測(cè)試程序。合成的規(guī)則為:按照組件級(jí)元素的排列順序,對(duì)組件級(jí)元素的程序代碼進(jìn)行合成,即:與組件級(jí)元素對(duì)應(yīng)的程序代碼在測(cè)試程序中的位置、與組件級(jí)元素在組件化模板中的位置相對(duì)應(yīng)。
需要說(shuō)明的是,本申請(qǐng)實(shí)施例所述的組件化模板可包括非組件級(jí)元素的程序代碼,例如,步驟s101給出的組件化模板代碼中的for(inti=0;i<itemnum;i++)部分即為非組件級(jí)元素的程序代碼。與組件級(jí)元素不同,非組件級(jí)元素的程序 代碼無(wú)需解析。當(dāng)組件化模板包括非組件級(jí)元素的程序代碼時(shí),對(duì)與組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,采用如下規(guī)則:測(cè)試程序包括非組件級(jí)元素的程序代碼、且非組件級(jí)元素的程序代碼在測(cè)試程序中的位置與在組件化模板中的位置相對(duì)應(yīng)。
下面以步驟s101給出的組件化模板代碼為例,給出應(yīng)用本申請(qǐng)實(shí)施例提供的方法生成的測(cè)試程序,以直觀說(shuō)明應(yīng)用本申請(qǐng)實(shí)施例提供的方法所達(dá)到的效果。生成的測(cè)試程序如下:
在實(shí)際應(yīng)用中,當(dāng)待處理的測(cè)試用例發(fā)生變更時(shí),例如,業(yè)務(wù)流程發(fā)生變更(如增加了輸入框)、元素屬性名被修改、測(cè)試數(shù)據(jù)變更等情況下,首先需要修改與測(cè)試用例對(duì)應(yīng)的組件化模板,然后,執(zhí)行本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,即可根據(jù)修改后的組件化模板,自動(dòng)生成新的測(cè)試程序。
作為一種優(yōu)選的實(shí)施方式,本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,可通過(guò)為組件化模板綁定模板變更事件,并對(duì)模板變更事件進(jìn)行監(jiān)聽(tīng),以實(shí)現(xiàn)測(cè)試程序的自動(dòng)更新,即:當(dāng)監(jiān)聽(tīng)到模板變更事件被觸發(fā)時(shí),執(zhí)行本申請(qǐng)實(shí)施例提供的方法。
對(duì)于目前常用的web頁(yè)面的測(cè)試用例,可通過(guò)瀏覽器對(duì)模板變更事件進(jìn)行監(jiān)聽(tīng)。當(dāng)對(duì)組件化模板進(jìn)行修改時(shí),實(shí)時(shí)重新加載(reload)相應(yīng)的測(cè)試程序代 碼,對(duì)web頁(yè)面進(jìn)行回歸測(cè)試時(shí)選取最新版本的測(cè)試程序。
作為又一種優(yōu)選的實(shí)施方式,本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,也可通過(guò)為組件級(jí)元素綁定預(yù)設(shè)事件,并對(duì)預(yù)設(shè)事件進(jìn)行監(jiān)聽(tīng),以實(shí)現(xiàn)測(cè)試程序的自動(dòng)更新,即:當(dāng)監(jiān)聽(tīng)到預(yù)設(shè)事件被觸發(fā)時(shí),執(zhí)行本申請(qǐng)實(shí)施例提供的方法。
本申請(qǐng)實(shí)施例所述的預(yù)設(shè)事件包括但不限于:對(duì)組件級(jí)元素的屬性值進(jìn)行增加、修改或刪除的事件,還可包括對(duì)組件級(jí)元素的屬性名進(jìn)行增加、修改或刪除的事件等。例如,可通過(guò)如下代碼:
@text([id:”packagecode”,value:”paszc150907000004”])
@bind(onchange())
為組件級(jí)元素@text([id:”packagecode”,value:”paszc150907000004”])綁定onchange事件。其中,@bind標(biāo)簽表示為上一個(gè)組件級(jí)元素綁定動(dòng)態(tài)事件,即:為@text標(biāo)簽所標(biāo)識(shí)的元素綁定onchange事件,也就是會(huì)監(jiān)控該元素的所有屬性變更,例如,當(dāng)對(duì)該元素的value屬性的值進(jìn)行修改時(shí),能夠觸發(fā)onchange事件,從而自動(dòng)更新該元素對(duì)應(yīng)的程序代碼。
本申請(qǐng)實(shí)施例提供的界面測(cè)試程序的生成方法,通過(guò)對(duì)組件級(jí)元素或組件化模板綁定監(jiān)聽(tīng)事件,使得對(duì)組件級(jí)元素的屬性進(jìn)行增刪改時(shí)或?qū)I(yè)務(wù)流程進(jìn)行變更時(shí),能夠自動(dòng)觸發(fā)本申請(qǐng)實(shí)施例提供的方法的執(zhí)行,進(jìn)一步簡(jiǎn)化了界面測(cè)試程序的生成操作,從而達(dá)到進(jìn)一步降低維護(hù)成本的效果。
在上述的實(shí)施例中,提供了一種界面測(cè)試程序的生成方法,與之相對(duì)應(yīng)的,本申請(qǐng)還提供一種界面測(cè)試程序的生成裝置。該裝置是與上述方法的實(shí)施例相對(duì)應(yīng)。
請(qǐng)參看圖3,其為本申請(qǐng)的界面測(cè)試程序的生成裝置實(shí)施例的示意圖。由于裝置實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。下述描述的裝置實(shí)施例僅僅是示意性的。
本實(shí)施例的一種界面測(cè)試程序的生成裝置,包括:
獲取單元101,用于獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;所述組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)所述測(cè)試用例的業(yè)務(wù)流程的界面文件;所述組件級(jí)元素是指,與所述測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素,所述組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí);
生成單元103,用于針對(duì)各個(gè)所述組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;
合成單元105,用于根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述測(cè)試用例的測(cè)試程序。
請(qǐng)參看圖4,其為本申請(qǐng)的界面測(cè)試程序的生成裝置實(shí)施例的具體示意圖。可選的,所述生成單元103包括生成子單元,用于生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;
所述生成子單元包括:
解析子單元201,用于解析所述組件級(jí)元素,獲取所述組件級(jí)元素包括的所述組件標(biāo)簽、及所述組件級(jí)元素的屬性;
獲取子單元203,用于根據(jù)所述組件標(biāo)簽及所述預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,獲取與所述組件級(jí)元素對(duì)應(yīng)的程序代碼模板;
第一生成子單元205,用于根據(jù)所述組件級(jí)元素的屬性和所述程序代碼模板,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼。
可選的,所述組件級(jí)元素與預(yù)設(shè)事件綁定,當(dāng)所述預(yù)設(shè)事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法;所述預(yù)設(shè)事件包括對(duì)所述組件級(jí)元素的屬性進(jìn)行增加、修改或刪除的事件;所述裝置還包括:
第一監(jiān)聽(tīng)單元,用于通過(guò)瀏覽器對(duì)所述預(yù)設(shè)事件進(jìn)行監(jiān)聽(tīng)。
可選的,所述組件化模板與模板變更事件綁定;所述執(zhí)行所述界面測(cè)試程序的生成方法,采用如下方式:當(dāng)所述模板變更事件被觸發(fā)時(shí),執(zhí)行所述界面測(cè)試程序的生成方法;所述裝置還包括:
第二監(jiān)聽(tīng)單元,用于通過(guò)瀏覽器對(duì)所述模板變更事件進(jìn)行監(jiān)聽(tīng)。
請(qǐng)參考圖5,其為本申請(qǐng)的電子設(shè)備實(shí)施例的示意圖。由于設(shè)備實(shí)施例基本相似于方法實(shí)施例,所以描述得比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法實(shí)施例的部分說(shuō)明即可。下述描述的設(shè)備實(shí)施例僅僅是示意性的。
本實(shí)施例的一種電子設(shè)備,該電子設(shè)備包括:顯示器1101;處理器1102;以及存儲(chǔ)器1103,獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;所述組件化模板是指,包括組件級(jí)元素的、能夠表達(dá)所述測(cè)試用例的業(yè)務(wù)流程的界面文件;所述組件級(jí)元素是指,與所述測(cè)試用例中控件級(jí)元素相對(duì)應(yīng)的組件化元素,所述組件級(jí)元素采用預(yù)設(shè)的組件標(biāo)簽進(jìn)行標(biāo)識(shí);針對(duì)各個(gè)所述組件級(jí)元素,根 據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與所述組件級(jí)元素對(duì)應(yīng)的程序代碼;根據(jù)所述組件級(jí)元素在所述組件化模板中的排列順序,對(duì)與所述組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為所述測(cè)試用例的測(cè)試程序。
本申請(qǐng)?zhí)峁┮环N界面測(cè)試程序的生成方法、裝置和電子設(shè)備,通過(guò)獲取為待處理的測(cè)試用例預(yù)先生成的組件化模板;針對(duì)組件化模板包括的各個(gè)組件級(jí)元素,根據(jù)預(yù)設(shè)的組件標(biāo)簽與程序代碼模板的對(duì)應(yīng)關(guān)系,生成與組件級(jí)元素對(duì)應(yīng)的程序代碼;根據(jù)組件級(jí)元素在組件化模板中的排列順序,對(duì)與組件級(jí)元素對(duì)應(yīng)的程序代碼進(jìn)行合成,作為待處理的測(cè)試用例的測(cè)試程序。采用本申請(qǐng)?zhí)峁┑姆椒?,能夠自?dòng)生成待處理的測(cè)試用例的測(cè)試程序,從而達(dá)到降低維護(hù)成本的效果。
本申請(qǐng)雖然以較佳實(shí)施例公開(kāi)如上,但其并不是用來(lái)限定本申請(qǐng),任何本領(lǐng)域技術(shù)人員在不脫離本申請(qǐng)的精神和范圍內(nèi),都可以做出可能的變動(dòng)和修改,因此本申請(qǐng)的保護(hù)范圍應(yīng)當(dāng)以本申請(qǐng)權(quán)利要求所界定的范圍為準(zhǔn)。
在一個(gè)典型的配置中,計(jì)算設(shè)備包括一個(gè)或多個(gè)處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計(jì)算機(jī)可讀介質(zhì)中的非永久性存儲(chǔ)器,隨機(jī)存取存儲(chǔ)器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲(chǔ)器(rom)或閃存(flashram)。內(nèi)存是計(jì)算機(jī)可讀介質(zhì)的示例。
1、計(jì)算機(jī)可讀介質(zhì)包括永久性和非永久性、可移動(dòng)和非可移動(dòng)媒體可以由任何方法或技術(shù)來(lái)實(shí)現(xiàn)信息存儲(chǔ)。信息可以是計(jì)算機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計(jì)算機(jī)的存儲(chǔ)介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)、其他類型的隨機(jī)存取存儲(chǔ)器(ram)、只讀存儲(chǔ)器(rom)、電可擦除可編程只讀存儲(chǔ)器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲(chǔ)器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學(xué)存儲(chǔ)、磁盒式磁帶,磁帶磁磁盤存儲(chǔ)或其他磁性存儲(chǔ)設(shè)備或任何其他非傳輸介質(zhì),可用于存儲(chǔ)可以被計(jì)算設(shè)備訪問(wèn)的信息。按照本文中的界定,計(jì)算機(jī)可讀介質(zhì)不包括非暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號(hào)和載波。
2、本領(lǐng)域技術(shù)人員應(yīng)明白,本申請(qǐng)的實(shí)施例可提供為方法、系統(tǒng)或計(jì)算機(jī)程序產(chǎn)品。因此,本申請(qǐng)可采用完全硬件實(shí)施例、完全軟件實(shí)施例或結(jié)合軟件 和硬件方面的實(shí)施例的形式。而且,本申請(qǐng)可采用在一個(gè)或多個(gè)其中包含有計(jì)算機(jī)可用程序代碼的計(jì)算機(jī)可用存儲(chǔ)介質(zhì)(包括但不限于磁盤存儲(chǔ)器、cd-rom、光學(xué)存儲(chǔ)器等)上實(shí)施的計(jì)算機(jī)程序產(chǎn)品的形式。