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