一種控件屬性解析系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及自動化測試領(lǐng)域,尤其涉及一種應(yīng)用于自動化測試的控件屬性解析系統(tǒng)及方法。
【背景技術(shù)】
[0002]自動化測試是一種通過自動化工具執(zhí)行定制好的測試腳本的過程,可節(jié)省人力,時間及硬件資源。通常一個簡單的網(wǎng)頁的自動化測試通常包括的步驟有:控件定位;交互操作;頁面操作;檢查操作。第一步控件定位是后續(xù)自動化腳本驅(qū)動頁面動作的前提條件。需要被測頁面的控件如輸入框,按鈕等能夠被自動化工具識別,其識別依賴于頁面控件的屬性及組織關(guān)系。
[0003]現(xiàn)有網(wǎng)頁自動化的測試方法雖然執(zhí)行過程能夠?qū)崿F(xiàn)完全自動化,但是在對頁面控件屬性變量化這個步驟中仍然需要大量的測試人力去實現(xiàn)。目前較好的方法是使用Selenium-1DE的插件來進(jìn)行分析,但這個工具也需要測試人員一步一步點擊操作并且記錄控件屬性值。尤其是當(dāng)頁面和控件較多的時候,需要投入很多人力和時間。另一方面,依靠手工點擊記錄的方式也不利于腳本化的操作,始終不能被集成到自動化的過程中。同時一旦用戶界面開發(fā)團(tuán)隊改變其中幾個控件屬性,如果不進(jìn)行大面積的檢查,由于底層應(yīng)用程序編程接口(Applicat1n Programming Interface,API)失效,原有的自動化用例無法得出正確的結(jié)果,大大降低了測試效率。
[0004]在帶有WEB界面的軟件產(chǎn)品開發(fā)周期中,由于產(chǎn)品的改動導(dǎo)致同一頁面控件的屬性出現(xiàn)微調(diào),而這種變動對于自動化開發(fā)人員來說通常是不可見的,會導(dǎo)致自動化回歸測試出現(xiàn)了不通過的情況,這種不通過的上報會對研發(fā)端產(chǎn)生困擾,而對于自動化測試人員則需要消耗額外的時間和人力的成本,重新手動修改控件定位符,維護(hù)成本很大。
【發(fā)明內(nèi)容】
[0005]針對現(xiàn)有的網(wǎng)頁自動化的測試存在的上述問題,現(xiàn)提供一種旨在實現(xiàn)能夠?qū)δ_本化頁面控件進(jìn)行定位符解析,提高自動化開發(fā)及測試效率的控件屬性解析系統(tǒng)及方法。
[0006]具體技術(shù)方案如下:
[0007]—種控件屬性解析系統(tǒng),應(yīng)用于網(wǎng)頁控件的自動化測試中,包括:
[0008]—第一存儲單元,用以存儲一與所述網(wǎng)頁控件關(guān)聯(lián)的列表,所述列表中包括復(fù)數(shù)個子列表,每個所述子列表包括一個控件的文本標(biāo)識及相應(yīng)的定位符變量名;
[0009]—過濾單元,連接所述第一存儲單元,用以將所述列表中重復(fù)的文本標(biāo)識對應(yīng)的所述子列表濾除,并輸出經(jīng)過濾后的所述列表;
[0010]一第二存儲單元,用以存儲網(wǎng)頁的源代碼;
[0011]—解析單元,分別連接所述過濾單元和所述第二存儲單元,用以將所述列表中的每個所述子列表中的所述文本標(biāo)識與所述源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性,根據(jù)所述控件屬性獲取相應(yīng)的屬性定位文件,并輸出。
[0012]優(yōu)選的,所述子列表包括控件文本標(biāo)識及與所述控件文本標(biāo)識對應(yīng)的控件定位符變量名。
[0013]優(yōu)選的,所述控件定位符變量名包括與所述控件對應(yīng)的頁面標(biāo)識,與所述控件對應(yīng)的控件類型標(biāo)識及與所述控件對應(yīng)的功能標(biāo)識。
[0014]優(yōu)選的,所述解析單元包括:
[0015]—第一判斷模塊,用以判斷每個所述子列表中的所述文本標(biāo)識是否唯一,并輸出判斷結(jié)果;
[0016]—匹配模塊,連接所述第一判斷模塊,當(dāng)所述文本標(biāo)識為唯一時,所述匹配模塊用以根據(jù)預(yù)設(shè)模式將所述列表中的每個所述子列表中的所述文本標(biāo)識與所述源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性,根據(jù)所述控件屬性獲取相應(yīng)的屬性定位文件,并輸出;
[0017]一第二判斷模塊,連接所述第一判斷模塊,當(dāng)所述文本標(biāo)識不是唯一時,所述第二判斷模塊用以判斷所述文本標(biāo)識對應(yīng)的代碼塊是否為JavaScript動態(tài)選擇代碼塊,并輸出判斷結(jié)果;
[0018]—分離模塊,分別連接所述第二判斷模塊和所述匹配模塊,當(dāng)所述文本標(biāo)識對應(yīng)的代碼塊為JavaScript動態(tài)選擇代碼塊時,所述分離模塊用以根據(jù)預(yù)設(shè)解析庫分離所述文本標(biāo)識對應(yīng)的代碼段;
[0019]—模糊匹配模塊,連接所述第二判斷模塊,當(dāng)所述文本標(biāo)識對應(yīng)的代碼塊不是JavaScript動態(tài)選擇代碼塊時,所述模糊匹配模塊用以根據(jù)字符串相似度算法對所述文本標(biāo)識的字符串相似度進(jìn)行比對,將達(dá)到預(yù)設(shè)標(biāo)準(zhǔn)的所述文本標(biāo)識對應(yīng)的控件屬性輸出,并將未達(dá)到預(yù)設(shè)標(biāo)準(zhǔn)的所述文本標(biāo)識進(jìn)行標(biāo)記并保存。
[0020]優(yōu)選的,所述預(yù)設(shè)模式為根據(jù)預(yù)設(shè)的優(yōu)先級匹配模式將所述列表中的每個所述子列表中的所述文本標(biāo)識與所述源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性。
[0021]優(yōu)選的,所述預(yù)設(shè)的優(yōu)先級匹配模式依次遞減的順序依次為:輸入同行匹配模式、輸入多行匹配模式、選擇多行匹配模式、前向同行匹配模式、前向多行匹配模式。
[0022]優(yōu)選的,所述預(yù)設(shè)模式為采用分級匹配模式將所述列表中的每個所述子列表中的所述文本標(biāo)識與所述源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性。
[0023]優(yōu)選的,所述分級匹配模式包括兩個階段:
[0024]第一階段為根據(jù)所述文本標(biāo)識定位出文本段落;
[0025]第二階段為采用次級匹配模式獲取所述文本段落的屬性條目,以獲取相應(yīng)的控件屬性。
[0026]優(yōu)選的,所述預(yù)設(shè)解析庫為采用Java編寫的標(biāo)準(zhǔn)通用標(biāo)記語言解析庫。
[0027]—種控件屬性解析方法,應(yīng)用于上述的控件屬性解析系統(tǒng),包括下述步驟:
[0028]步驟1.將所述列表中重復(fù)的文本標(biāo)識對應(yīng)的所述子列表濾除,并輸出經(jīng)過濾后的所述列表;
[0029]步驟2.將所述列表中的每個所述子列表中的所述文本標(biāo)識與所述源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性,根據(jù)所述控件屬性獲取相應(yīng)的屬性定位文件,并輸出。上述技術(shù)方案的有益效果:
[0030]本技術(shù)方案中,控件屬性解析系統(tǒng)通過把需要控制的控件對象抽象為具體文本標(biāo)識,采用解析單元預(yù)先對網(wǎng)頁面控件解析,從而獲得控件屬性定位文件,提高了自動化開發(fā)及測試效率??丶傩越馕龇椒稍诨貧w測試之前更新底層API的變量,避免回歸測試的誤報,減少了自動化開發(fā)和維護(hù)的成本。
【附圖說明】
[0031]圖1為本發(fā)明所述的控件屬性解析系統(tǒng)的一種實施例的模塊圖;
[0032]圖2為本發(fā)明所述解析單元的內(nèi)部模塊圖;
[0033]圖3為本發(fā)明所述的控件屬性解析系統(tǒng)的一種實施例的控件屬性解析方法流程圖。
【具體實施方式】
[0034]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動的前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0035]需要說明的是,在不沖突的情況下,本發(fā)明中的實施例及實施例中的特征可以相互組合。
[0036]下面結(jié)合附圖和具體實施例對本發(fā)明作進(jìn)一步說明,但不作為本發(fā)明的限定。
[0037]如圖1所示,一種控件屬性解析系統(tǒng),應(yīng)用于網(wǎng)頁控件的自動化測試中,包括:
[0038]—第一存儲單元1,用以存儲一與網(wǎng)頁控件關(guān)聯(lián)的列表,列表中包括復(fù)數(shù)個子列表,每個子列表包括一個控件的文本標(biāo)識及相應(yīng)的定位符變量名;
[0039]—過濾單元2,連接第一存儲單元1,用以將列表中重復(fù)的文本標(biāo)識對應(yīng)的子列表濾除,并輸出經(jīng)過濾后的列表;
[0040]一第二存儲單元3,用以存儲網(wǎng)頁的源代碼;
[0041]—解析單元4,分別連接過濾單元2和第二存儲單元3,用以將列表中的每個子列表中的文本標(biāo)識與源代碼中的文本進(jìn)行匹配,以獲取相應(yīng)的控件屬性,根據(jù)控件屬性獲取相應(yīng)的屬性定位文件,并輸出。
[0042]在本實施例中,列表為嵌套列表??丶傩越馕鱿到y(tǒng)通過把需要控制的控件對象抽象為具體文本標(biāo)識,利用過濾單元2針對多個重復(fù)的文本標(biāo)識符進(jìn)行過濾,將超級文本標(biāo)記語言(HyperText Markup Language,HTML)中無效的文本過濾掉,采用解析單元4可對腳本化頁面控件進(jìn)行定位符解析,提高了自動化開發(fā)的效率。本實施例可應(yīng)用于自動化回歸測試中,在測試的可執(zhí)行(Setup)階段,采用控件屬性解析系統(tǒng)能更新底層API調(diào)用的頁面控件定位符,可避免因頁面控件屬性變化而導(dǎo)致測試用例不通過的情況。
[0043]進(jìn)一步地,子列表包括控件文本標(biāo)識及與控件文本標(biāo)識對應(yīng)的控件定位符變量名。子列表的格式為[控件文本標(biāo)識,控件定位符變量名]。
[0044]在本實施例中,可將網(wǎng)頁用戶界面控件抽象成腳本語言數(shù)據(jù)對象。該數(shù)據(jù)格式為嵌套列表,子列表包含[控件文本標(biāo)識,控件定位符變量名]。這個抽象過程為整個屬性解析的預(yù)備步驟,為解析單元4提供了素材,該抽象的行為只需在整個軟件開發(fā)周期的需求階段一次完成,后續(xù)維護(hù)即可。
[0045]在優(yōu)選的實施例中,控件定位符變量名包括與控件對應(yīng)的頁面標(biāo)識,與控件對應(yīng)的控件類型標(biāo)識及與控件對應(yīng)的功能標(biāo)識??丶ㄎ环兞棵母袷綖?頁面標(biāo)識_控件類型標(biāo)識_功能標(biāo)識。
[0046]在本實施例中,將每個需要自動化的網(wǎng)頁控件抽象為一個列表對象。子列表的具體結(jié)構(gòu)為[控件文本標(biāo)識,控件定位符變量名]??丶谋緲?biāo)識用于表示來源于本身自帶的文本,該文本字符一般會出現(xiàn)在HTML中,使用字符串匹配即可找到控件相關(guān)的屬性。一般情況下,網(wǎng)頁中的一個單獨控件都有唯一的標(biāo)識,如帶有“保存”文本的一個按鈕,其文本標(biāo)識為“保存”,其在