黃茂生 楊春暉
摘 要:為應(yīng)對(duì)B/S構(gòu)架應(yīng)用系統(tǒng)和三層構(gòu)架應(yīng)用系統(tǒng)的鏈接測(cè)試需求,基于詞法分析設(shè)計(jì)實(shí)現(xiàn)超文本鏈接自動(dòng)測(cè)試,解決手工測(cè)試的不足和引進(jìn)國(guó)外自動(dòng)化測(cè)試工具對(duì)中文支持的局限性。通過(guò)分析超文本詞法的特點(diǎn),探討超文本鏈接測(cè)試自動(dòng)化的可行性,介紹利用該技術(shù)實(shí)現(xiàn)自動(dòng)測(cè)試工具的總體設(shè)計(jì)、功能設(shè)計(jì)、流程設(shè)計(jì)與實(shí)現(xiàn)。通過(guò)在實(shí)際項(xiàng)目的使用和驗(yàn)證表明,該技術(shù)不僅可以有效提高超鏈接測(cè)試的覆蓋率,而且有效提高了測(cè)試驗(yàn)證的效率和準(zhǔn)確性,降低超文本鏈接的測(cè)試驗(yàn)證工作量。
關(guān)鍵詞:超鏈接;詞法分析;自動(dòng)測(cè)試工具;設(shè)計(jì);實(shí)現(xiàn)
中圖分類號(hào):TP393
0 引 言
隨著互聯(lián)網(wǎng)的高速發(fā)展,B/S構(gòu)架特別是三層構(gòu)架以其易于部署和維護(hù)性,成為絕大部分軟件應(yīng)用系統(tǒng)的首選,B/S構(gòu)架應(yīng)用系統(tǒng)和三層構(gòu)架應(yīng)用系統(tǒng)有一個(gè)共同的特點(diǎn)就是客戶端的瀏覽器負(fù)責(zé)解釋超文本文件,最終生成訪問(wèn)者看到的頁(yè)面形式。頁(yè)面使用的表現(xiàn)語(yǔ)言都是超文本標(biāo)記語(yǔ)言(Hyper Text Markup Language,HTML)語(yǔ)言,或稱為“多媒體文件語(yǔ)言”,超文本頁(yè)面內(nèi)嵌的圖片、頁(yè)面內(nèi)的相互引用以及超文本之間的跳轉(zhuǎn)等都是通過(guò)超鏈接來(lái)實(shí)現(xiàn),這使得超文本鏈接數(shù)量非常龐大,也是出現(xiàn)Bug最多的地方,比如鏈接目標(biāo)對(duì)象不存在、引用絕對(duì)路徑鏈接、內(nèi)嵌文件過(guò)多導(dǎo)致HTML文件過(guò)大下載性能下降等,因此驗(yàn)證鏈接的正確性是B/S構(gòu)架應(yīng)用系統(tǒng)開發(fā)測(cè)試的重要工作之一。
目前,常用的超鏈接測(cè)試技術(shù)包括手工點(diǎn)擊測(cè)試和引進(jìn)國(guó)外測(cè)試工具進(jìn)行自動(dòng)測(cè)試等,這些手段和技術(shù)在實(shí)際工作中都存在著不足:采用人工點(diǎn)擊測(cè)試驗(yàn)證鏈接的正確性,其工作量巨大,且難于保證100%的覆蓋,對(duì)一些因漏點(diǎn)擊而遺留的Bug,利用人工再測(cè)試也很難100%發(fā)現(xiàn)。而引進(jìn)和使用國(guó)外的軟件測(cè)試工具實(shí)施自動(dòng)測(cè)試,則存在漢字兼容等問(wèn)題,這些測(cè)試工具因是國(guó)外公司開發(fā),對(duì)中文文件名、中文標(biāo)簽等的支持不十分完善,容易出現(xiàn)漏報(bào)和誤報(bào)等現(xiàn)象,未能很好解決超文本頁(yè)面開發(fā)設(shè)計(jì)面臨的測(cè)試驗(yàn)證問(wèn)題。
1 超文本詞法特點(diǎn)及自動(dòng)化測(cè)試技術(shù)
1.1 超文本詞法特點(diǎn)分析
B/S構(gòu)架應(yīng)用系統(tǒng)和三層構(gòu)架應(yīng)用系統(tǒng)都是由客戶端的瀏覽器負(fù)責(zé)解釋超文本文件,最終生成頁(yè)面形式,如圖1所示。它的表現(xiàn)語(yǔ)言HTML 是一種描述文檔結(jié)構(gòu)而不描述實(shí)際的語(yǔ)言,用HTML語(yǔ)言書寫的頁(yè)面是普通的文本文檔(ASCII),不含任何與平臺(tái)和程序相關(guān)的信息,可以被任何文本編輯器讀取,文字和圖形可以同時(shí)在同一頁(yè)面中顯示,在Internet/ Intranet上,客戶端的瀏覽器負(fù)責(zé)解釋這些超文本,最終生成訪問(wèn)者看到的頁(yè)面形式。HTML文檔包含兩種信息:一是頁(yè)面本身的文本;二是表示頁(yè)面元素、結(jié)構(gòu)、格式和其他超文本鏈接的HTML標(biāo)記,是基于標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言(SGML)而開發(fā)的,它通過(guò)各種各樣的“標(biāo)記”向?yàn)g覽器說(shuō)明頁(yè)面外觀、文字格式、超級(jí)鏈接目標(biāo)、圖片屬性等內(nèi)容。在HTML詞法中,其標(biāo)記按照實(shí)現(xiàn)的功能大致上可以分為:框架標(biāo)記、分隔標(biāo)記、排版標(biāo)記、鏈接標(biāo)記等,如表1所示。
通過(guò)對(duì)HTML語(yǔ)言標(biāo)記進(jìn)行分析和分類,與鏈接相關(guān)的標(biāo)記主要包括兩大類:
(1) 鏈接類。主要實(shí)現(xiàn)網(wǎng)站鏈接、FTP鏈接、News鏈接、BBS鏈接、電子郵件鏈接、標(biāo)簽鏈接等功能,其使用的標(biāo)記主要是href;
(2) 應(yīng)用類。主要實(shí)現(xiàn)圖像引用與嵌套、頁(yè)面嵌套引用、文字應(yīng)用等,包括插入圖像、背景圖像、文字引用等,其使用的標(biāo)記主要包括src,background和cite。
標(biāo)記類別標(biāo)記功能
架構(gòu)標(biāo)記設(shè)定同一個(gè)窗口頁(yè)面由多個(gè)網(wǎng)頁(yè)一起組成
分隔標(biāo)記設(shè)定水平分隔線
排版標(biāo)記網(wǎng)頁(yè)版面編排,文字置左、置中、置右等
字體標(biāo)記設(shè)定標(biāo)題標(biāo)簽、設(shè)定字體大小標(biāo)簽、字型變化標(biāo)簽、文字顏色設(shè)定。
[BHDWG4.5mm]文字標(biāo)記設(shè)定文字字型設(shè)定、特殊字元、設(shè)定文字內(nèi)定值大小等
[BH]影像標(biāo)記設(shè)定在網(wǎng)頁(yè)中插入圖像,設(shè)定圖像顯示屬性等
[BH]背景標(biāo)記設(shè)定網(wǎng)頁(yè)背景顏色或是背景圖像
[BHDWG8mm]鏈接標(biāo)記設(shè)定超鏈接,如網(wǎng)站鏈接、電子郵件鏈接、ftp鏈接、news鏈接、gopher鏈接、bbs鏈接等
[BHDWG4.5mm]表格標(biāo)記在網(wǎng)頁(yè)中如何運(yùn)用和設(shè)定表格格式
[BH]序列標(biāo)記設(shè)定文字序列或圖形序列
[BH]表單標(biāo)記制作可填寫用的表單
[BH]其他技巧實(shí)現(xiàn)其他的功能[HJ][HT5SS]
與鏈接相關(guān)的HTML標(biāo)記分類及其典型用法見表2所示。
1.2 鏈接自動(dòng)化測(cè)試的實(shí)現(xiàn)原理
HTML文檔是純文本文檔,超文本文檔的組成源碼具有開放性,對(duì)用戶是透明的,可以由網(wǎng)頁(yè)編輯器以及其他文本編輯軟件創(chuàng)建。通過(guò)對(duì)超文本詞法特點(diǎn)分析可知,超文本語(yǔ)言與鏈接相關(guān)標(biāo)記的標(biāo)識(shí)關(guān)鍵詞主要為href,src,background和cite,可以通過(guò)分析HTML文件源碼,查找與鏈接(src,href等)相關(guān)的標(biāo)記,再分析提取鏈接標(biāo)記對(duì)應(yīng)的鏈接對(duì)象信息,然后對(duì)鏈接對(duì)象進(jìn)行定位和分析,可以直接驗(yàn)證頁(yè)面鏈接的有效性,并可以利用鏈接分析的信息,對(duì)頁(yè)面的大小進(jìn)行統(tǒng)計(jì)并與設(shè)定值比較,確定在特定帶寬下瀏覽該頁(yè)面所需的時(shí)間等性能指標(biāo)。此外,還可以通過(guò)頁(yè)面的鏈接關(guān)系,確定Web應(yīng)用目錄路徑下未使用的冗余文件。因而,具備利用超文本源代碼靜態(tài)分析進(jìn)行鏈接自動(dòng)測(cè)試,分析其性能指標(biāo),查找冗余文件,優(yōu)化Web應(yīng)用服務(wù)器文件結(jié)構(gòu)的可行性。
框架頁(yè)面ひ用
在頁(yè)面げ迦臚枷
2 鏈接自動(dòng)測(cè)試工具的設(shè)計(jì)與實(shí)現(xiàn)
2.1 總體設(shè)計(jì)
基于詞法分析的超文本自動(dòng)測(cè)試工具由四部分組成:預(yù)處理器、鏈接分析器、數(shù)據(jù)庫(kù)和報(bào)告生成器,如┩2所示。
(1) 預(yù)處理器。主要進(jìn)行Web所在目錄的目錄分析、調(diào)用關(guān)系分析、詞法分析和絕對(duì)[CD*2]相對(duì)路徑轉(zhuǎn)換。目錄分析主要分析Web所在目錄的目錄結(jié)構(gòu)和文件分析。通過(guò)目錄分析得到Web所在目錄的目錄結(jié)構(gòu)信息、各個(gè)目錄的文件清單以及超文本文件清單;調(diào)用關(guān)系分析和詞法主要根據(jù)超文本的詞法和關(guān)鍵詞,分析查找超文本文件的鏈接類和應(yīng)用類鏈接關(guān)鍵詞,確定超文本的調(diào)用關(guān)系;絕對(duì)[CD*2]相對(duì)路徑轉(zhuǎn)換主要將調(diào)用關(guān)系分析得到的調(diào)用關(guān)系路徑進(jìn)行“相對(duì)路徑[CD*2]絕對(duì)路徑”的相互轉(zhuǎn)換,最后,將該階段的預(yù)處理信息和分析結(jié)果寫入數(shù)據(jù)庫(kù),作為鏈接分析器的輸入。
(2) 鏈接分析器。首先,對(duì)上一階段分析出來(lái)并經(jīng)“相對(duì)路徑[CD*2]絕對(duì)路徑”轉(zhuǎn)換的調(diào)用關(guān)系進(jìn)行進(jìn)一步分析,根據(jù)表2所示的HTML語(yǔ)言鏈接標(biāo)記分類法,對(duì)超文本調(diào)用關(guān)系進(jìn)行分類‐[11]。其次,對(duì)每個(gè)類別鏈接內(nèi)的鏈接逐一進(jìn)行分析,確認(rèn)其鏈接對(duì)象是否存在,并將默認(rèn)網(wǎng)頁(yè)首頁(yè)、被鏈接和調(diào)用文件以外的文件標(biāo)記為冗余文件;最后,將分析結(jié)果寫入數(shù)據(jù)庫(kù)。
(3) 數(shù)據(jù)庫(kù)。主要存儲(chǔ)預(yù)處理器、鏈接分析器的分析和處理結(jié)果,包括Web所在目錄的目錄結(jié)構(gòu)信息、文件清單、超文本調(diào)用關(guān)系、鏈接分析信息、鏈接缺陷標(biāo)識(shí)、網(wǎng)頁(yè)大小統(tǒng)計(jì)信息和冗余文件信息等。
(4) 報(bào)告生成器。分析報(bào)告生成模塊從數(shù)據(jù)提取鏈接分析結(jié)果,按照選定的報(bào)告類型和設(shè)定的報(bào)告格式生成分析報(bào)告和打印。
2.2 功能設(shè)計(jì)
基于詞法分析的超文本自動(dòng)測(cè)試工具包括三個(gè)主要的功能模塊:分析參數(shù)設(shè)置、超文本詞法分析和分析報(bào)告生成。如圖3所示。分析參數(shù)設(shè)置模塊主要完成自動(dòng)分析測(cè)試前的參數(shù)設(shè)置,如Web應(yīng)用默認(rèn)首頁(yè)指定、Web應(yīng)用所在的默認(rèn)目錄設(shè)置、設(shè)定分析所需的參數(shù)(如頁(yè)面大小告警上限值、鏈接調(diào)用關(guān)系上限值等);超文本詞法分析模塊主要完成href鏈接、src鏈接、cite鏈接和background鏈接分析,并將分析結(jié)果存儲(chǔ)到數(shù)據(jù)庫(kù)中;分析報(bào)告生成模塊則從數(shù)據(jù)提取鏈接分析結(jié)果,按照選定的報(bào)告類型和設(shè)定的報(bào)告格式生成分析報(bào)告和打印、輸出。
2.3 流程設(shè)計(jì)與實(shí)現(xiàn)
WebSiteTest工作流程設(shè)計(jì)框圖如圖4所示,首先實(shí)現(xiàn)對(duì)用戶設(shè)定參數(shù)、Web首頁(yè)和根目錄等進(jìn)行輸入和存儲(chǔ);然后對(duì)對(duì)設(shè)定的目錄進(jìn)行分析處理,列出根目錄下的文件和目錄結(jié)構(gòu),并對(duì)目錄下的HTML文件進(jìn)行詞法分析;接著對(duì)分析后的鏈接標(biāo)記進(jìn)行分類,對(duì)分類后的鏈接標(biāo)記進(jìn)行字符解析、轉(zhuǎn)換等預(yù)處理,然后進(jìn)行鏈接的分析預(yù)驗(yàn)證,最后進(jìn)行頁(yè)面文件大小統(tǒng)計(jì)和生成不同的分析報(bào)告。
3 使用與驗(yàn)證
《電子行業(yè)標(biāo)準(zhǔn)全文數(shù)據(jù)庫(kù)軟件V1.0》(著作產(chǎn)權(quán)登記號(hào):2002SR2155)是典型三層構(gòu)架的B/S數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng),包含超過(guò)一千多個(gè)電子行業(yè)常用標(biāo)準(zhǔn)全文,數(shù)據(jù)層用SQL Server存儲(chǔ)標(biāo)準(zhǔn)全文文本內(nèi)容和目錄信息。中間層(業(yè)務(wù)層)利用IIS+ASP提供標(biāo)準(zhǔn)目錄信息、標(biāo)準(zhǔn)全文內(nèi)容查詢和標(biāo)準(zhǔn)內(nèi)容的讀取,利用ASP讀取數(shù)據(jù)庫(kù)內(nèi)的標(biāo)準(zhǔn)頁(yè)面內(nèi)容并轉(zhuǎn)換成瀏覽器可以顯示的HTML文件。應(yīng)用客戶端通用瀏覽器通過(guò)Internet或Intranet訪問(wèn)Web服務(wù)器,完成查詢信息的提交、查詢結(jié)果以及標(biāo)準(zhǔn)文本內(nèi)容的顯示等。
《電子行業(yè)標(biāo)準(zhǔn)全文數(shù)據(jù)庫(kù)軟件V1.0》內(nèi)包含了海量的超文鏈接。在數(shù)據(jù)庫(kù)軟件的設(shè)計(jì)與實(shí)現(xiàn)過(guò)程中,采用了多種技術(shù)手段進(jìn)行超文本鏈接驗(yàn)證,包括人工測(cè)試和引進(jìn)國(guó)外先進(jìn)的軟件測(cè)試工具等,但存在測(cè)試覆蓋率不全、測(cè)試工具漏報(bào)、誤報(bào)等問(wèn)題,如表3所示。測(cè)試實(shí)施方法存在的問(wèn)題[HJ0]
手工測(cè)試工作量大,測(cè)試工作量占項(xiàng)目工作量約45%;
測(cè)試效率低;
測(cè)試覆蓋不全,存在漏測(cè)現(xiàn)象
引進(jìn)國(guó)外的測(cè)試すぞ呤凳┎饈怨ぞ叻延冒汗;
對(duì)中文文件名、標(biāo)簽名支持不完善,導(dǎo)致測(cè)試漏報(bào)、誤報(bào)現(xiàn)象。
為解決上述面臨的問(wèn)題,通過(guò)基于超文本詞法分析,設(shè)計(jì)與實(shí)現(xiàn)了超文本自動(dòng)測(cè)試工具WebsiteTest V1.0(著作產(chǎn)權(quán)登記號(hào):2009SR06358),不僅保證了測(cè)試驗(yàn)證的準(zhǔn)確性和100%的測(cè)試覆蓋率,而且大大提高了測(cè)試的效率,使超文本鏈接的測(cè)試驗(yàn)證工作量占項(xiàng)目工作量的比例從原來(lái)人工測(cè)試的40%~45%降低為3%~5%,此外,利用該工具提供的性能分析報(bào)告和冗余文件報(bào)告(見圖6),對(duì)數(shù)據(jù)庫(kù)系統(tǒng)和Web服務(wù)器文件系統(tǒng)進(jìn)行的性能優(yōu)化,取得了良好的效果,也為標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)的升級(jí)和擴(kuò)充提供了極大的便利。
4 結(jié) 語(yǔ)
經(jīng)過(guò)實(shí)際項(xiàng)目應(yīng)用表明,基于超文本詞法分析,設(shè)計(jì)與實(shí)現(xiàn)專用超鏈接測(cè)試驗(yàn)證工具是可行和有效的。不僅提高了鏈接測(cè)試的覆蓋率,而且有效提高了測(cè)試驗(yàn)證的效率和準(zhǔn)確性,降低超文本鏈接的測(cè)試驗(yàn)證工作量。此外,超鏈接測(cè)試驗(yàn)證工具的功能進(jìn)一步拓展后,對(duì)基于ASP的網(wǎng)站的測(cè)試驗(yàn)證,也可以通過(guò)對(duì)ASP產(chǎn)[LL]生的瀏覽器可以瀏覽的HTML源碼文件進(jìn)行分析驗(yàn)證,具有良好的應(yīng)用前景。
參 考 文 獻(xiàn)
[1][美]羅賓斯.Web設(shè)計(jì)技術(shù)手冊(cè)(影印版)[M].3版.南京:東南大學(xué)出版社,2006.
[2]W3C Recommendation.HTML 4.0 Specification[S].1998.
[3]陳紹英,夏海濤,金成姬.Web性能測(cè)試實(shí)戰(zhàn)/測(cè)試實(shí)踐叢書(測(cè)試實(shí)踐叢書)[M].北京:電子工業(yè)出版社,2006.
[4][美]紐恩.Web應(yīng)用測(cè)試/軟件工程叢書[M].2版.周志榮,譯.北京:電子工業(yè)出版社,2006.
[5]葉青.完全手冊(cè)HTML+CSS+JavaScript實(shí)用詳解[M].北京:電子工業(yè)出版社,2008.
[6][美]肯尼迪.HTML&XHTML;權(quán)威指南[M].6版.張洪濤,邢璐,譯.北京:清華大學(xué)出版社,2007.
[7]張金霞.HTML網(wǎng)頁(yè)設(shè)計(jì)參考手冊(cè)[M].北京:清華大學(xué)出版社,2006.
[8]劉智勇.HTML+CSS開發(fā)指南[M].北京:人民郵電出版社,2007.
[9]郭敏華,張紅,甘志強(qiáng),等.一種支持多腳本語(yǔ)言的測(cè)試數(shù)據(jù)分離方法[A].國(guó)防科技工業(yè)軟件評(píng)測(cè)技術(shù)交流會(huì)論文集[C].2007.
[JP2][10]黃萍,郝建材.用代碼靜態(tài)分析技術(shù)提高軟件代碼質(zhì)量[A].國(guó)防科技工業(yè)軟件評(píng)測(cè)技術(shù)交流會(huì)論文集[C].2007.[JP]
[11]石倩,陳榮,魯名羽.基于規(guī)則歸納的信息抽取技術(shù)系統(tǒng)實(shí)現(xiàn)[J].計(jì)算機(jī)工程與應(yīng)用,2008,44(2):166[CD*2]170.[HJ0][HJ]
作者簡(jiǎn)介 黃茂生 男,1973年出生,廣東肇慶人,高級(jí)工程師。主要研究方向?yàn)檐浖y(cè)試、軟件可靠性。
楊春暉 女,1965年出生,湖南洞口縣人,碩士研究生,高級(jí)工程師。主要研究方向?yàn)檐浖|(zhì)量工程、項(xiàng)目管理。