楊濤存,徐貴紅,郭劍峰,東春昭
(中國鐵道科學研究院 鐵路大數據研究與應用創新中心,北京 100081)
基于關鍵字驅動的自動化測試技術在大數據平臺上的應用
楊濤存,徐貴紅,郭劍峰,東春昭
(中國鐵道科學研究院 鐵路大數據研究與應用創新中心,北京 100081)
隨著互聯網業飛速發展及“大數據”概念的提出,為提高大量B/S架構應用的測試效率,本文利用關鍵字驅動測試技術,設計開發了一款基于關鍵字測試腳本的B/S架構應用自動化測試工具——EasyWT,實現了對Web頁面的控件抽取、錄制、激勵、驗證等功能,基本實現了一個標準化的測試流程。并使用EasyWT在鐵路大數據平臺上進行了實踐應用,結果表明,系統能夠完整地完成自動化測試的全部工作;同時針對實踐過程中遇到的一些問題,提出了一些改進及優化方案。
關鍵字驅動;測試;大數據;軟件工程
隨著近期“大數據”概念的持續火熱,軟件功能需求的日益復雜和軟件規模的日趨龐大,軟件產品的質量成為軟件生存和發展的關鍵,軟件測試技術的重要性也更顯突出。同時隨著互聯網和大數據的迅猛崛起,B/S架構應用已經滲透到國計民生的各個領域,一個非常關鍵的問題是如何保證B/S架構應用的可靠性和質量。測試是提高軟件可靠性和保證軟件質量的一種最基本的手段。目前,B/S架構應用的測試主要依賴測試工程師的直覺和經驗,沒有比較系統的方法和工具,測試是一個耗時的、代價昂貴的過程。許多B/S架構應用在沒有進行充分測試的情況下投入運營,質量難以保證,導致B/S架構應用軟件的開發可靠性不高、風險大。因此,迫切需要實現B/S架構應用測試的新方法和新嘗試。
本文的核心實現內容EasyWT(Easy Web Test)是基于關鍵字測試的B/S架構應用測試系統,從B/S架構應用測試的標準流程和軟件測試功能要求出發,設計了一個綜合的軟件測試集成開發環境,同時也是一個B/S架構自動化測試工具,該工具的主要功能包括Web文檔結構分析、錄制Web頁面動作、回放Web頁面動作、關鍵字測試腳本生成與轉換等。
EasyWT系統需要的功能,是按照實際的B/S架構軟件測試用例設計的,它在系統需求分析階段應該滿足以下要求:
(1)能夠獨立地訪問網站或者依托于網絡瀏覽器;
(2)能夠方便地查看Web頁面源代碼并且對關鍵內容進行標注;
(3)能夠解析DOM文檔,使之成為測試所需要的數據結構;
(4)提供文本編輯環境,能夠編寫測試用例腳本;
(5)能夠錄制用戶動作,以簡化用例腳本的輸入;
(6)能夠根據用戶輸入的腳本激勵Web頁面做出相應動作;
(7)能夠輸出腳本,并且根據需求,轉換為其他高級語言腳本。
由于EasyWT的實現基于現有的開源項目,在原項目上重新擴展開發,隸屬于整個項目的一部分,因此,在進行系統設計的過程中需要遵從最少改動原則、最大復用原則及模塊化原則。
2.1 總體結構
從模塊結構上看,系統總體可分為4個模塊,如圖1所示。

圖1 集成開發環境總體模塊架構
(1)DOM解析模塊(DOM Parser):對獲取的HTML的DOM結構進行解析,分析DOM結構樹的層次和分支關系,過濾無用的腳本、注釋,篩選出測試常用的關鍵標簽。對所過濾出的標簽的屬性、方法進行統計和列舉,給出標簽可以擁有的屬性列表和標簽可以響應的事件列表以供用戶使用;根據用戶需求,對所分析出的標簽按照所需格式入庫。
(2)錄制模塊(Recorder):是腳本編寫的重要輔助工具,通過對瀏覽器動作行為的錄制,可以讓用戶擺脫冗雜的代碼輸入工作,進而使用相對直觀的操作方式,而其操作會被自動錄制下來,并且形成相應的代碼。
(3)重放模塊(Web Stimulator):也叫Web激勵模塊,該模塊是測試程序的核心,它實現了自動化測試中所謂“自動”的內容,即通過用戶輸入好的腳本,按照腳本所給出的操作對象和操作內容,模擬出就像真有用戶操作一樣的瀏覽器動作,對Web頁面施以激勵,使之發生相應的改變,并送出http請求,接收服務器的響應。
(4)腳本生成及轉換模塊(Script Generator):是程序可擴展性的保障。將本系統中內部使用的腳本描述語言轉換成主流的高級語言腳本,使得用本程序所編寫的腳本也可以應用于其他軟件中,提高了程序的適用范圍。
2.2 核心模塊
2.2.1 Web對象庫構建模塊結構設計
根據系統總體設計,DOM解析模塊需對獲取的HTML的DOM結構進行解析,分析DOM結構樹的層次和分支關系,過濾無用的腳本、注釋,篩選出測試常用的關鍵標簽等。
利用DOM,開發人員可以動態地創建XML、遍歷文檔,增加、刪除、修改文檔內容,具有較好的導航能力。因此,基于DOM解析的應用程序的編寫比較簡單。然而,單純DOM解析也不足以滿足要求,根據具體情況,結合高級語言文本分析的方法,可以解決這些小問題。
2.2.2 錄制模塊設計
由于錄制模塊是腳本編寫的重要輔助工具,通過對瀏覽器動作行為的錄制,可以簡化軟件測試人員的代碼輸入工作,而且操作相對直觀,簡單易用,只要按照測試說明,在瀏覽器中相應操作即可,而其過程會被自動錄制下來,并且自動生成相應的代碼,從根本上減少了測試人員的編碼工作,也降低了對軟件測試人員專業水平的要求,進而降低了成本。
一般的測試工具錄制腳本,大多數都是通過攔截瀏覽器收發的http請求來實現的。但這種方法事實上并沒有辦法嚴謹錄制用戶對html頁面的所有操作。根據EasyWT系統的需求,這種錄制方式顯然難以滿足。我們需要通過監聽用戶對html頁面的操作來錄制腳本,完全了解用戶操作了什么以及html頁面發生了什么變化,從而實現所需要的錄制。
2.2.3 關鍵字腳本開發環境模塊設計
關鍵字腳本開發環境主要分為兩個子模塊:腳本開發環境模塊和腳本生成及轉換模塊。
對于腳本開發環境模塊,需要為用戶提供腳本編輯環境,滿足交互性、易用性等需求即可。而對于腳本生成及轉換模塊,它是程序可擴展性的保障。本系統中使用的腳本描述語言是一種內部語言,它以XML形式承載,結構化存儲。
2.2.4 測試腳本執行模塊設計
回放模塊也叫Web激勵模塊,是測試程序的核心,它通過用戶輸入好的腳本或者是錄制的內容,按照腳本中所給出的操作對象和操作內容,模擬出就像真有用戶操作一樣的瀏覽器動作,對Web頁面施以激勵,使之發生相應的改變,并送出HTTP請求,接收服務器的響應,實現自動化測試中所謂“自動”的內容。
腳本解析部分負責將操作對象、操作名稱對應數據等從腳本中解析出來,由于本程序中腳本選用XML形式,又采取DOM形式分析XML,這使得腳本解析部分變得相當容易,僅需調用DOM庫中的控件解析即可。
事件重現部分采用異步腳本驅動網頁的形式,即采用Javascript語言對網頁進行相應的修改,以模擬用戶的行為;由于事件本身包含間隔事件(如WaitForPage事件等)且不考慮錄制時各事件發生的時間間隔,要回放的事件被送入事件回放隊列后,只需緊湊執行即可。
3.1 對象庫數據結構
根據系統對DOM解析的要求,需要將DOM文檔解析為如圖2所示規則。

圖2 DOM解析數據結構需求
通過對文檔的解析,得出HTML標簽可以響應的事件主要包括一般事件、頁面相關事件、表單相關事件、編輯事件、滾動字幕事件和數據綁定事件等。標簽、屬性和事件均解析入庫后,可實現方便的查詢與選擇操作。
3.2 腳本開發環境
3.2.1 腳本編輯模塊
對于腳本編輯模塊,采用了Firefox插件所使用的XUL語言編寫了編輯界面,可以實現對腳本的手工編寫,XUL是為了支持Mozilla系列的應用程序(如Mozilla Firefox和Mozilla Thunderbird)而開發的使用者界面標示語言。它是一種應用XML來描述使用者界面的標示語言,雖然XUL并不是一種公開的標準,但它重用了許多現有的標準和技術,包括CSS、JavaScript、DTD和RDF等。所以對于有網絡編程和設計比其他使用者界面標示語言相對簡單。
3.2.2 腳本轉換模塊
本系統中對腳本的轉換模塊進行了簡單化處理,即認為不同語言間的腳本有著一一對應的關系,這樣就簡化了腳本轉換的方法。
以同一個測試用例腳本為例,如圖3所示。

圖3 同一腳本的不同語言形式
圖3中,左側是XML形式原腳本,右上方是Java腳本,右下方是Python,可以很明顯看出,除了一些語法性的結構如頭部(header)和尾部(footer)以外,腳本部分內容是一一對應的。
3.3 錄制模塊
3.3.1 監聽器
EasyWT中使用的Web事件監聽器,所謂監聽就是對DOM解析出的全部事件做出響應,這樣就達到了監聽的目的。
監聽器找到DOM中所有可點擊的標簽元素,找到后,對他們進行所有事件的監聽,即綁定事件響應。
3.3.2 定位元素
對于發生事件元素的定位,最初采用的是自定義方式,首先根據標簽的id屬性,如果沒有id屬性,就根據其他屬性的組合來唯一確定標簽。系統采用Xpath定位的方式來解決問題。XPath是一門在XML文檔中查找信息的語言,用于在XML文檔中通過元素和屬性進行導航。它使用路徑表達式進行導航,這種表達式也是一個W3C標準。
3.3.3 記錄動作
監聽器監聽到事件后,會將其記錄到全局變量的log當中,其中log類的成員變量instruction按照前文約定的XML形式腳本的結構,將此變量進行相應的輸出。
3.4 執行模塊
3.4.1 解析命令
由于使用了XML形式的內部腳本和DOM解析器,這使得解析命令的工作變得異常簡單,它并不涉及編譯原理中的語法及詞法分析,因為通過DOM解析器已經可以把命令解析為結構化的數據并存在可執行代碼中。
3.4.2 執行激勵
對于Web頁面的激勵,最好的方式莫過于用腳本語言,而諸多腳本語言中,Javascript由于其得天獨厚的優勢,無疑是做Web激勵的首選。
執行激勵先要獲取命令,將命令的對象、動作和數據發送給命令執行模塊。所有指令都有對應的輸出腳本,對于生成的代碼,Javascript提供了動態執行函數eval,只需調用該函數便可執行該代碼。
在完成系統的所有重要模塊后,將模塊進行集成,得到完整的基于關鍵字腳本的應用測試系統EasyWT。經過調整一些細節,消除代碼集成中的錯誤之后,對系統進行整體功能測試。
整體功能測試的目標是驗證系統的功能符合系統設計的目標,整個系統正常工作,在實驗中驗證結果的正確性。
某鐵路局檢測車應用系統是一個基于B/S架構的鐵路大數據應用系統。使用EasyWT在該系統上進行測試,以驗證EasyWT在大數據系統上的有效性,其界面如圖4所示。

圖4 主界面簡介
用瀏覽器打開被測網站,然后打開EasyWT。本次為測試準備的被測網站是一個用戶登錄頁面,如圖5所示。

圖5 被測頁面
根據測試用例,我們在網頁上進行簡單的操作,注意,此時EasyWT的錄制開關是自動打開的,也就是說,這個時候就已經開始了錄制動作;如果想對錄制下來的腳本進行修改,可以通過點擊要修改項,然后在下面的下拉框中直接修改,或者直接點擊Source選項卡,修改代碼,如圖6所示。
代碼修改完成后,如果想執行此測試用例,即使用回放功能,需先點擊錄制按鈕暫停錄制,然后從工具欄中點擊執行測試用例按鈕,為了達到更直觀的演示效果,可以在測試用例中增加一些斷點,點擊暫停恢復按鈕可以一步一步地執行測試用例,否則程序會一次執行完整個測試用例。

圖6 編輯腳本
測試是軟件開發過程中一個不可或缺的部分,隨著軟件工程學的不斷發展,軟件測試在整個開發過程中的作用凸顯,而在大數據應用平臺上各種有關軟件測試的新方法、新工具層出不窮,關鍵字驅動測試技術就是一種新的測試方法,而Web應用測試又是軟件測試的一個熱點領域,本文中,對這兩方面的知識進行了融合,開發了基于關鍵字驅動腳本的Web應用測試系統—EasyWT,該系統采用了主流的錄制回放模式,同時提供了腳本轉換功能,使得本系統中的測試腳本能夠在其他測試工具中運行。
目前,系統現有功能已經可以成為一個相對完整的邏輯體,但是,對比于QTP等商業軟件,以及作為大數據應用測試的工具,還需要在功能和結構等方面進一步完善。
[1]JC Laprie.Dependable computing and fault tolerance:concepts and terminology[C].Fault-Tolerant Computing,‘Hightlights from Twenty-Five Years’,2005:2-11.
[2]王衛東,徐貴紅,劉金朝,等.鐵路基礎設施大數據的應用與發展[J].中國鐵路,2015(5):1-6.
[3]繆淮扣,陳圣波,曾紅衛.基于模型的Web應用測試[J].計算機學報,2011,34 (6):1013.
[4]Rashmi,NehaBajpai.A Keyword Driven Framework for Testing WebApplications[J].International Journal of Advanced Computer Science and Applications,2012,3(3):8-9.
[5]ISO/IEC 9126,Software engineering—Product quality is an international standard for the evaluation of software quality[S].ISO/IEC:1991.
[6]教育部考試中心.全國計算機等級考試四級教程—軟件測試工程師[M].北京:高等教育出版社,2010:9-10.
[7]FevziBelli,MutluBeyazit,AtifMemon.Testing is an Event-Centric Activity[A].Proceedings of the International Conference on Software Security and Reliability[C].2012:1.
[8]PekkaLaukkanen.Data-Driven and Keyword-Driven TestAutomation Frameworks[D].Finland:Helsinki University of Technology,2006:27.
[9]馮玉才,唐 艷,周 淳.關鍵字驅動自動化測試的原理和實現[J].計算機應用,2004(8):140-141.
[10 ]陳能技.QTP自動化測試進階[M].北京:電子工業出版社,2010:15-20.
[11]朱宏峰.基于關鍵字驅動的web自動化測試的研究[J].硅谷,2009(24):51.
[12]CyntricaEaton,AtifMemon.EvaluatingWebPageR eliabilityacrossVariedBrowsingEnvironments[A].US:UniversityofMaryland,2004:1.
[13]胡圣廈.基于XML的GUI錄制-回放技術研究與實現[D].成都:四川大學,2005.
責任編輯 付 思
Keyword-driven based automated test technology applied to big data platform
YANG Taocun,XU Guihong,GUO Jianfeng,DONG Chunzhao
( Research and Application Innovation Center for Big Data Technology in Railway,China Academy of Railway Sciences,Beijing 100081,China)
With the rapid development of the Internet industry,and the proposed concept of big data,in order to improve the test efficiency for the application of a large number of B/S architecture,this article designed and developed an automated testing tool of keyword-driven test script based B/S architecture application that was EasyWT.It was implemented the function of control extraction,recording,motivation,verifcation and etc.on the Web page,implemented a standardized test procedures basically.The application of EasyWT on railway big data platform was carried out.The application result showed that the System could complete all the work of automated testing.Meanwhile,in view of some problems in practice,the article proposed some improvement and optimization schemes.
keyword-driven;test;big data;software engineering

TP39
A
1005-8451(2016)11-0041-05
2016-05-08
楊濤存,研究實習員;徐貴紅,副研究員。