劉文峰, 方濱興, 張文佳
(哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 哈爾濱 150001 )
在互聯(lián)網(wǎng)中,通用頂級(jí)域名(global top level domain,gTLD)的分配由互聯(lián)網(wǎng)名稱與數(shù)字地址分配機(jī)構(gòu)(The Internet Corporation for Assigned Names and Numbers,ICANN)負(fù)責(zé)。為滿足互聯(lián)網(wǎng)空間進(jìn)一步發(fā)展的需要,2011年ICANN通過了新通用頂級(jí)域名(New gTLD)批案,宣布放開通用頂級(jí)域名的注冊(cè)限制[1],蘊(yùn)含著巨大的商業(yè)價(jià)值;同時(shí),對(duì)非ASCII字符的國際化域名(Internationalized Domain Names, IDN)的開放注冊(cè)也推動(dòng)了域名服務(wù)機(jī)構(gòu)向國際化發(fā)展。
2012~2015年,Halvorson等人[2-4]通過DNS區(qū)文件、DNS查詢、WHOIS注冊(cè)記錄和網(wǎng)頁內(nèi)容等多種數(shù)據(jù)源,分析了新頂級(jí)域的域名注冊(cè)行為。2016年,ICANN第58次會(huì)議發(fā)布了“中文域名普遍接受性測試報(bào)告”[5],對(duì)中國大陸地區(qū)互聯(lián)網(wǎng)環(huán)境下的中文普遍適用性情況進(jìn)行了測試。
不同瀏覽器對(duì)新頂級(jí)域名的識(shí)別情況可能不同,然而至今沒有相關(guān)工作給出針對(duì)新頂級(jí)域名在多個(gè)Web瀏覽器中的測量結(jié)果。本文的工作是從識(shí)別、解析和正確顯示3個(gè)測量指標(biāo)出發(fā),測量根據(jù)百度統(tǒng)計(jì)的瀏覽器市場份額[6]排名前十的Web瀏覽器對(duì)新頂級(jí)域名的支持程度,從而刻畫出新頂級(jí)域名在Web瀏覽器中的表現(xiàn)。
針對(duì)新頂級(jí)域名在Web瀏覽器中的行為研究面臨如下3個(gè)挑戰(zhàn):
(1)高覆蓋率:測試頂級(jí)域覆蓋了虛擬新頂級(jí)域和真實(shí)新頂級(jí)域兩種類型。
(2)多Web瀏覽器通用的自動(dòng)化技術(shù):由于測試對(duì)象為多個(gè)瀏覽器,需要設(shè)計(jì)一種不局限于特定瀏覽器的通用自動(dòng)化技術(shù)。
(3)全面的IDN正確顯示統(tǒng)計(jì):根據(jù)IDNA 2008規(guī)范,瀏覽器地址欄應(yīng)自動(dòng)識(shí)別IDN域名,并將其轉(zhuǎn)化為可被用戶識(shí)別的文字[5]。至今仍沒有相關(guān)工作對(duì)IDN顯示的情況進(jìn)行全面的測量。
本文結(jié)合測試域名形式、瀏覽器行為模式等因素,設(shè)計(jì)和實(shí)現(xiàn)了基于GUI自動(dòng)化技術(shù)的瀏覽器自動(dòng)化測試系統(tǒng),在10個(gè)瀏覽器上測試了1.1節(jié)中的虛擬頂級(jí)域和真實(shí)頂級(jí)域。應(yīng)用2.1節(jié)中的測試結(jié)果分類方法,從捕獲的訪問信息中提取瀏覽器對(duì)新頂級(jí)域名的識(shí)別、解析和顯示情況。結(jié)合在虛擬頂級(jí)域和真實(shí)頂級(jí)域中的測試結(jié)果,得到3種瀏覽器行為特征。本文還設(shè)計(jì)了衡量瀏覽器解析能力的評(píng)分模型,并給出對(duì)測試瀏覽器的評(píng)分結(jié)果。
測試域名包含2部分,均為不添加http://協(xié)議名的二級(jí)域名。對(duì)此可得闡釋論述如下。
(1)虛擬頂級(jí)域:在實(shí)驗(yàn)DNS根服務(wù)器中配置的實(shí)驗(yàn)域名www.hitnis,info.hitnis,info.root,www.hit。這部分測試域名的頂級(jí)域在原根中均不存在,僅存在于實(shí)驗(yàn)DNS服務(wù)器。
(2)真實(shí)頂級(jí)域:ICANN公開的全部1 563個(gè)頂級(jí)域[7],對(duì)其添加“nic”前綴構(gòu)造二級(jí)域名進(jìn)行測試。
本工作使用Microsoft .NET框架提供的自動(dòng)化測試工具UI Automation(UIA)實(shí)現(xiàn)GUI自動(dòng)化測試,并將UIA中常用控制模式的調(diào)用封裝進(jìn)自動(dòng)化測試類UI Control中,步驟流程詳見如下:
(1)在屏幕閱讀器UI Spy中讀取子節(jié)點(diǎn)屬性值。
(2)根據(jù)查詢屬性類型和(1)中獲取的屬性值生成子節(jié)點(diǎn)查詢條件。
(3)結(jié)合查詢條件和查詢方式,在UI Tree中進(jìn)行查詢。
(4)調(diào)用子節(jié)點(diǎn)相關(guān)控制模式實(shí)現(xiàn)目標(biāo)功能。
UI Control提取出這些公共操作并做二次封裝,如圖1所示。
自動(dòng)化測試類UI Control主要實(shí)現(xiàn)了對(duì)以下內(nèi)容的二次封裝:針對(duì)具有特定值的特定屬性的節(jié)點(diǎn)進(jìn)行特定pattern調(diào)用的封裝;查詢子節(jié)點(diǎn)的條件生成的封裝和查詢過程的封裝。
圖1 封裝流程圖
自動(dòng)化測試類UI Control實(shí)現(xiàn)了超時(shí)檢測功能,檢測因系統(tǒng)阻塞或網(wǎng)絡(luò)異常造成控件獲取失敗的問題。在每一步自動(dòng)化執(zhí)行操作結(jié)束時(shí),設(shè)置定時(shí)器檢測一定時(shí)間范圍內(nèi)控件獲取是否成功;成功則執(zhí)行下一步,否則延遲一段時(shí)間再重新嘗試獲取。超時(shí)檢測功能偽代碼具體如下。
Begin
輸入 AutomationElementhandle, intmaxtime
i→0
whilehandle==null
do重新獲取handle,掛起線程maxtime/10毫秒
i→i+1
IFi>10 則退出循環(huán)
end
IFi>10 則returnfalse
否則returntrue
End
本工作提出針對(duì)發(fā)送域名過程的優(yōu)化方法:調(diào)用.NET框架下的Sendkeys類向當(dāng)前窗口發(fā)送測試域名。發(fā)送域名前需要使瀏覽器窗口成為頂層活動(dòng)窗口,針對(duì)不同瀏覽器實(shí)現(xiàn)了2種設(shè)置焦點(diǎn)的方式。一種是發(fā)送WM_SETFOCUS消息到接受鍵盤焦點(diǎn)的窗口;另一種是基于Windows API的焦點(diǎn)獲取方法,計(jì)算控件中心點(diǎn)坐標(biāo)并調(diào)用mouse_event方法模擬鼠標(biāo)點(diǎn)擊操作。
本工作還實(shí)現(xiàn)了對(duì)測試域名進(jìn)行檢測的功能,檢測到輸入域名中的分隔符時(shí),調(diào)用ToUpper()方法單獨(dú)發(fā)送,保證了發(fā)送URL中分隔符的正確性。
1.4.1 瀏覽器自動(dòng)化測試系統(tǒng)設(shè)計(jì)
應(yīng)用1.2節(jié)和1.3節(jié)中的GUI自動(dòng)化技術(shù),設(shè)計(jì)和實(shí)現(xiàn)了針對(duì)新頂級(jí)域名在瀏覽器中的行為的自動(dòng)化測試系統(tǒng)。系統(tǒng)架構(gòu)圖如圖2所示。
圖2 系統(tǒng)架構(gòu)圖
由圖2可知,本次研發(fā)系統(tǒng)包含5個(gè)模塊,對(duì)此可做解析分述如下。
(1)交互模塊:實(shí)現(xiàn)用戶交互服務(wù),包含測試瀏覽器選擇、測試域名輸入和測試數(shù)據(jù)展示。
(2)訪問信息捕獲模塊:使用UI Control自動(dòng)化捕獲瀏覽器地址欄內(nèi)容和訪問過程中的數(shù)據(jù)包。
(3)瀏覽器自動(dòng)訪問模塊:使用UI Control在瀏覽器隱私模式下對(duì)測試新頂級(jí)域名進(jìn)行自動(dòng)化測試。
(4)訪問信息提取和分析模塊:從捕獲到的數(shù)據(jù)包中提取瀏覽器對(duì)測試域名的DNS解析情況;對(duì)捕獲到的瀏覽器地址欄內(nèi)容進(jìn)行分析,從中提取瀏覽器訪問特征,如是否進(jìn)行搜索。
(5)運(yùn)行檢測模塊:設(shè)定完成自動(dòng)化訪問流程的時(shí)間限制,保障測試系統(tǒng)可持續(xù)運(yùn)行。
1.4.2 系統(tǒng)工作流程
瀏覽器自動(dòng)化測試系統(tǒng)工作流程如下:
(1)測試前準(zhǔn)備:選擇測試域名和測試瀏覽器;啟動(dòng)cmd進(jìn)程,輸入ipconfig/flushdns命令清除系統(tǒng)緩存;啟動(dòng)新線程,在線程中執(zhí)行自動(dòng)化訪問操作。
(2)啟動(dòng)訪問:啟動(dòng)wireshark進(jìn)程捕獲訪問數(shù)據(jù);啟動(dòng)測試瀏覽器進(jìn)程,開啟隱私窗口訪問。
(3)信息提?。翰东@訪問過程中的瀏覽器地址欄內(nèi)容,檢測捕獲數(shù)據(jù)包的重復(fù)域名和錯(cuò)誤格式,提取出瀏覽器對(duì)頂級(jí)域進(jìn)行解析的數(shù)據(jù)和瀏覽器進(jìn)行搜索的數(shù)據(jù)。
(4)運(yùn)行檢測:每間隔一段時(shí)間檢測自動(dòng)化訪問線程是否執(zhí)行結(jié)束,若超時(shí)仍未結(jié)束,則關(guān)閉相關(guān)的瀏覽器及wireshark進(jìn)程,重新測試。
對(duì)10個(gè)測試瀏覽器進(jìn)行了匿名化處理,其詳細(xì)信息見表1。
表1 瀏覽器版本信息
從瀏覽器的地址欄內(nèi)容可以提取出瀏覽器對(duì)測試域名是否跳轉(zhuǎn)搜索。經(jīng)測試發(fā)現(xiàn),10個(gè)瀏覽器表現(xiàn)出如下2種行為模式,詳述如下。
(1)模式1。該模式有如下特征:
① 進(jìn)行域名查詢的情況下,地址欄內(nèi)容即為測試域名,部分瀏覽器會(huì)自動(dòng)對(duì)輸入域名進(jìn)行調(diào)整,例如:域名補(bǔ)充、協(xié)議名補(bǔ)充、將域名轉(zhuǎn)成punycode編碼等。
② 在跳轉(zhuǎn)搜索的情況下,瀏覽器地址欄則顯示為搜索引擎和域名的組合。
(2)模式2。該模式有如下特征:
① 在跳轉(zhuǎn)搜索的情況下,地址欄內(nèi)容與測試域名一致,某些國際域名還會(huì)出現(xiàn)地址欄顯示亂碼的情形。
② 瀏覽器對(duì)輸入域名進(jìn)行查詢時(shí),地址欄內(nèi)容會(huì)帶有Http前綴,某些國際域名會(huì)顯示為轉(zhuǎn)碼成punycode編碼的結(jié)果。
針對(duì)每種模式設(shè)計(jì)不同分類方法,記為分類方法1、2,用于提取瀏覽器行為。
對(duì)于匹配模式1的瀏覽器,采取圖3的分類方法1,從捕獲的地址欄內(nèi)容中提取瀏覽器行為。
圖3 分類方法1
將分類結(jié)果按照其對(duì)應(yīng)瀏覽器行為的特征重新歸類,可統(tǒng)計(jì)出3種行為特征,分別為:search、addHTTP、normal。其中,search代表進(jìn)行搜索,包含分類2;addHTTP代表進(jìn)行訪問且地址欄自動(dòng)補(bǔ)充協(xié)議名,包含分類3;normal代表進(jìn)行了訪問且地址欄未自動(dòng)補(bǔ)充協(xié)議名,包含分類1、4。
特別地,由于瀏覽器C未能正確識(shí)別阿拉伯語域名,在測試時(shí)會(huì)彈出提示窗口拒絕訪問。error統(tǒng)計(jì)了這部分異常域名。
對(duì)于匹配模式2的瀏覽器,采取圖4的分類方法2從捕獲的地址欄內(nèi)容中提取瀏覽器行為。
圖4 分類方法2
同理,將分類結(jié)果按照其行為特征重新歸類得到3種行為特征:search包含分類2、5,addHTTP包含分類1、4,error代表地址欄編碼格式為亂碼,包含分類3。
測試瀏覽器中除瀏覽器J外的測試瀏覽器均適用于分類方法1。
針對(duì)4個(gè)測試頂級(jí)域在10個(gè)瀏覽器中的測試結(jié)果見表2,包含DNS解析情況和瀏覽器跳轉(zhuǎn)搜索情況。
表2 虛擬頂級(jí)域測試結(jié)果
由此可以看出,20%的瀏覽器不對(duì)虛擬頂級(jí)域進(jìn)行檢查,識(shí)別為網(wǎng)頁訪問;30%的瀏覽器不識(shí)別虛擬頂級(jí)域,跳轉(zhuǎn)搜索,但會(huì)對(duì)虛擬頂級(jí)域進(jìn)行解析;50%的瀏覽器不識(shí)別虛擬頂級(jí)域,跳轉(zhuǎn)搜索,但不進(jìn)行解析。
部分瀏覽器對(duì)國際化域名的支持不完善,地址欄不能正確顯示國際化域名,而是顯示為進(jìn)行了punycode轉(zhuǎn)碼后的形式,這種行為記為decode。在真實(shí)頂級(jí)域中,測試瀏覽器對(duì)進(jìn)行解析的域名體現(xiàn)出的具體行為分類結(jié)果見表3。
綜合上述分析,此處對(duì)瀏覽器行為特征做研究總述如下:
(1)部分瀏覽器不識(shí)別部分測試域名,跳轉(zhuǎn)到搜索,且對(duì)全部跳轉(zhuǎn)到搜索的域名都不進(jìn)行DNS解析。如A、D、E、F、I。
(2)部分瀏覽器不識(shí)別部分測試域名,跳轉(zhuǎn)到搜索,但對(duì)跳轉(zhuǎn)到搜索的阿拉伯語域名不進(jìn)行DNS解析,對(duì)其余跳轉(zhuǎn)到搜索的域名進(jìn)行DNS解析。如B、C、H、J。
(3)部分瀏覽器可以識(shí)別全部測試域名,不會(huì)跳轉(zhuǎn)搜索,且對(duì)全部測試域名都進(jìn)行解析。如G。
表3 已解析的真實(shí)頂級(jí)域分類結(jié)果
Tab. 3 Classification result of resoluted actual top-level domain
%
特別的是,70%的瀏覽器會(huì)對(duì)部分國際域名進(jìn)行punycode轉(zhuǎn)碼后再訪問,沒有解決國際域名顯示的問題。其中,瀏覽器D轉(zhuǎn)碼比例最高。另外30%瀏覽器(B、F、I)能夠正確顯示測試的所有國際域名。
從測試結(jié)果還可以看出,C、F、I、J瀏覽器對(duì)所有訪問域名都會(huì)自動(dòng)補(bǔ)充協(xié)議名;除G外的其他瀏覽器會(huì)對(duì)不識(shí)別為頂級(jí)域的域名跳轉(zhuǎn)搜索,E跳轉(zhuǎn)搜索的比例最小,為4.97%;I跳轉(zhuǎn)最多,為15.16%。
結(jié)合虛擬新頂級(jí)域中的測試結(jié)果可以看出,60%的測試瀏覽器在針對(duì)虛擬新頂級(jí)域和真實(shí)新頂級(jí)域的2次測試中表現(xiàn)出的行為特征是一致的。其余40%的瀏覽器有差異。詳見表4。
表4 虛擬和真實(shí)頂級(jí)域中測試結(jié)果對(duì)比
Tab. 4 Contrast of testing result in invented top-level domain and actual top-level domain
頂級(jí)域類型瀏覽器B、H、JCA、D、E、F、IG虛擬頂級(jí)域真實(shí)頂級(jí)域搜索并解析搜索并部分解析不搜索搜索并部分解析搜索不解析不搜索
結(jié)合瀏覽器內(nèi)核版本和瀏覽器行為特征,可以看出存在一些關(guān)聯(lián)性。其中,C、G和其他測試瀏覽器代表了Gecko、Webkit和Trident三類內(nèi)核,其行為特征也體現(xiàn)出3種分布:C不對(duì)虛擬頂級(jí)域進(jìn)行檢查,直接訪問,但對(duì)不能識(shí)別的真實(shí)頂級(jí)域會(huì)跳轉(zhuǎn)搜索;G不對(duì)任何頂級(jí)域進(jìn)行檢查,直接訪問;其余瀏覽器兩次測試中均會(huì)對(duì)不能識(shí)別的頂級(jí)域跳轉(zhuǎn)搜索,僅識(shí)別部分頂級(jí)域。這些結(jié)果體現(xiàn)了3種內(nèi)核的不同行為特征分布。
根據(jù)瀏覽器對(duì)測試域名的解析情況,設(shè)計(jì)衡量瀏覽器解析能力的評(píng)分模型如下。
(1)HRR。對(duì)于每個(gè)測試瀏覽器,查看其對(duì)每個(gè)測試域名的解析情況:如果能解析,則統(tǒng)計(jì)該域名在其他瀏覽器中的解析情況,提出表征瀏覽器解析能力強(qiáng)的數(shù)值指標(biāo)HRR(High Resolution Rate),如公式(1)所示:
(1)
其中,rd(Resolution Domain)表示所有測試域名中當(dāng)前測試瀏覽器能解析的域名;n表示測試瀏覽器總數(shù);b表示除當(dāng)前測試瀏覽器以外的所有測試瀏覽器;b→rd表示瀏覽器b能對(duì)域名rd進(jìn)行解析。
HRR含義如下:如果測試域名在其他瀏覽器中均能解析,說明對(duì)這個(gè)域名的解析情況不足以體現(xiàn)瀏覽器的解析能力,不統(tǒng)計(jì)該域名。否則,說明只有部分瀏覽器能解析該域名,那么能解析這個(gè)域名的瀏覽器越少,說明該測試瀏覽器對(duì)域名的解析能力越強(qiáng)。因此統(tǒng)計(jì)測試瀏覽器中不能解析該域名的瀏覽器的比例并累加。
(2)LRR。如果測試瀏覽器不能解析測試域名,則統(tǒng)計(jì)該域名在其他瀏覽器中的解析情況。提出表征瀏覽器解析能力弱的數(shù)值指標(biāo)LRR(Low Resolution Rate),如公式(2)所示:
(2)
其中,nrd(No Resolution Domain)表示所有測試域名中當(dāng)前測試瀏覽器不能解析的域名,b→nrd表示瀏覽器b能對(duì)域名nrd進(jìn)行解析。
LRR含義如下:如果測試域名在其他瀏覽器中均不能解析,說明對(duì)這個(gè)域名的解析情況不足以說明瀏覽器解析能力,不統(tǒng)計(jì)該域名。否則,說明只有部分瀏覽器不能解析該域名,那么不能解析這個(gè)域名的瀏覽器越少,即表明該測試瀏覽器對(duì)域名的解析能力越弱。因此統(tǒng)計(jì)測試瀏覽器中能解析該域名的瀏覽器的比例并累加。
(3)瀏覽器評(píng)分RR(Resolution Rate)。 該指標(biāo)可作為以解析情況衡量瀏覽器對(duì)新頂級(jí)域支持程度的評(píng)分標(biāo)準(zhǔn)。數(shù)學(xué)定義公式為:
RR=HRR-LRR.
(3)
應(yīng)用評(píng)分模型得出的瀏覽器解析能力評(píng)分結(jié)果見表5??梢钥闯龅梅肿罡叩氖菫g覽器G,由表5數(shù)據(jù)可知瀏覽器G能解析全部測試域名,體現(xiàn)其解析能力則是最強(qiáng)的。得分最低的是瀏覽器I,由表5數(shù)據(jù)可知其能夠解析的域名數(shù)量是測試域名中最低的,體現(xiàn)其解析能力是最弱的。
表5 瀏覽器解析能力評(píng)分
本文提出一種對(duì)新頂級(jí)域名在瀏覽器中的行為進(jìn)行測試和分析的方法。實(shí)驗(yàn)發(fā)現(xiàn),根據(jù)內(nèi)核分類的不同,瀏覽器行為特征有明顯區(qū)別。10%的瀏覽器不對(duì)虛擬頂級(jí)域進(jìn)行檢查,直接訪問,但對(duì)不能識(shí)別的真實(shí)頂級(jí)域會(huì)跳轉(zhuǎn)搜索。10%的瀏覽器不對(duì)任何頂級(jí)域進(jìn)行檢查,直接訪問。其余80%的瀏覽器在對(duì)虛擬頂級(jí)域和真實(shí)頂級(jí)域的2次測試中均對(duì)不能識(shí)別的頂級(jí)域跳轉(zhuǎn)搜索。另外,70%的瀏覽器沒有解決國際域名正確顯示的問題。