摘 要: 探討了一種基于數(shù)據(jù)驅(qū)動的自動測試框架D-Arch的設(shè)計與實現(xiàn),。該系統(tǒng)使用開放源碼的自動測試工具Selenium,具有模塊化,、可重用,、測試與開發(fā)松耦合,可滿足不同測試需求的特點,。
關(guān)鍵詞: 自動測試框架,;測試工具;模塊化
隨著Internet的飛速發(fā)展,,Web應(yīng)用程序的規(guī)模與復(fù)雜性達到了一個前所未有的高度,,Web應(yīng)用的質(zhì)量也越來越受到人們的重視。但軟件的手動測試非常耗時,,勞動強度高,,并且很單調(diào),而且還會引入一些人為的錯誤,,因此測試自動化勢在必行,。通常自動化測試是指在預(yù)設(shè)條件下,利用測試自動化工具自動運行軟件,,通過實際結(jié)果與期望結(jié)果的比對,,達到評估軟件質(zhì)量的目的。實現(xiàn)測試的自動化不僅能夠大大減輕測試人員的工作量,,還能夠減少測試過程中人為出現(xiàn)的錯誤,。在實際應(yīng)用中,自動化測試技術(shù)衍生出了若干研究方向,,例如:測試框架,、測試腳本技術(shù)、測試用例自動生成以及自動化安全測試等,。由于使用自動化測試工具進行完全測試存在著各種局限性,,自動化測試框架應(yīng)運而生。但是在工作與實踐中,,目前尚沒有一種通用的自動測試框架以適應(yīng)不同的測試需求,。為了適應(yīng)科研與工作的需求,開發(fā)設(shè)計了一種通用的基于數(shù)據(jù)驅(qū)動的自動測試框架,,命名為D-Arch,。
框架是整個或部分系統(tǒng)的可重用設(shè)計,表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實例間交互的方法;另一種定義認為,,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架,。前者是從應(yīng)用方面而后者是從目的方面給出的定義。從框架的定義可以了解,,框架可以是被重用的基礎(chǔ)平臺,也可以類似于組織架構(gòu),。
所謂自動化測試框架,,即是應(yīng)用于自動化測試所用的框架。按照框架的定義,,自動化測試框架要么是提供可重用的基礎(chǔ)自動化測試模塊,,如selenium、watir等,,它們主要提供最基礎(chǔ)的自動化測試功能,,比如打開一個程序,模擬鼠標(biāo)和鍵盤來點擊或操作被測試對象,,最后驗證被測對象的屬性以判斷程序的正確性,;要么是可以提供自動化測試執(zhí)行和管理功能的架構(gòu)模塊,如robot,,STAF等,,它們本身不提供基礎(chǔ)的自動化測試支持,只是用于組織,、管理和執(zhí)行那些獨立的自動化測試用例,,測試完成后統(tǒng)計測試結(jié)果,通常這類框架一般都會集成一個基礎(chǔ)自動化測試模塊,,如robot框架就可以集成selenium框架,。
1 自動化測試框架的類型
目前普遍存在的框架有以下幾種:
(1)數(shù)據(jù)驅(qū)動框架:當(dāng)測試對象流程和應(yīng)用邏輯固定不變時,,可以采用數(shù)據(jù)驅(qū)動框架,。此時,測試使用的輸入數(shù)據(jù)來自外部數(shù)據(jù)源(例如數(shù)據(jù)庫,、Excel表,、XML、cvs文件等)[1],,這些數(shù)據(jù)通過代碼腳本裝載到測試系統(tǒng)中,,從而驅(qū)動系統(tǒng)運行。最后,,測試產(chǎn)生的數(shù)據(jù)也將保存到外部數(shù)據(jù)中,,通過輸入輸出數(shù)據(jù)的比對,完成系統(tǒng)的測試。
?。?)關(guān)鍵字驅(qū)動框架:又叫表驅(qū)動,,這種框架需要表和關(guān)鍵字[2]。表和關(guān)鍵字獨立于被測系統(tǒng),,被測系統(tǒng)的每個功能和每個測試的具體執(zhí)行步驟被放入表中,,利用表中的關(guān)鍵字驅(qū)動被測系統(tǒng)運行。
?。?)混合型的框架:這種測試框架同時具有數(shù)據(jù)驅(qū)動型和關(guān)鍵字驅(qū)動型框架的優(yōu)點,。常常是由單一框架在不斷應(yīng)用發(fā)展中演化而來的。
2 D-Arch框架
D-Arch是為解決開發(fā)與測試之間緊密耦合問題而產(chǎn)生的測試框架,。系統(tǒng)通過建立測試與開發(fā)人員共同定義和遵循的軟件元數(shù)據(jù)的關(guān)聯(lián)——元數(shù)據(jù)映射表,,在測試與開發(fā)之間建立了松耦合關(guān)系。不論是測試人員修改測試腳本或數(shù)據(jù),,還是開發(fā)人員修改軟件,,只需要更改元數(shù)據(jù)映射表,測試與開發(fā)人員的現(xiàn)有工作不受影響,,可以同步進行,。這樣,大大減少了編寫和調(diào)試測試腳本的工作量,,更好地實現(xiàn)自動化測試,。
D-Arch框架初始運行時,從某個數(shù)據(jù)源(例如ODBC數(shù)據(jù)庫,、Excel文件,、csv文件、XML文件等)讀取輸入測試數(shù)據(jù),。輸入數(shù)據(jù)通過變量傳入事先錄制好的或手工編寫的測試腳本中,,經(jīng)過被測系統(tǒng)的運行,得到實際輸出數(shù)據(jù),。然后D-Arch框架通過對實際輸出數(shù)據(jù)與數(shù)據(jù)源中的期望輸出數(shù)據(jù)比對,,從而得到最終的測試結(jié)果。在這個過程中,,數(shù)據(jù)源的存取,、測試狀態(tài)和其他測試信息都被編寫到測試腳本中。測試的輸入輸出數(shù)據(jù)只保存在數(shù)據(jù)源中,,測試腳本驅(qū)動被測系統(tǒng)運行,,在需要輸入數(shù)據(jù)時,自動從數(shù)據(jù)源加載輸入數(shù)據(jù),。系統(tǒng)運行結(jié)束時,,從數(shù)據(jù)源加載期望輸出數(shù)據(jù)與實際輸出數(shù)據(jù)比對,。那么,測試腳本不包含任何測試數(shù)據(jù),,測試數(shù)據(jù)的更改獨立于測試腳本,。測試腳本只是一個“驅(qū)動”,或者說是一個傳送數(shù)據(jù)的機制,。
D-Arch采用多層結(jié)構(gòu),,主要包含的層次和模塊如圖1所示。
?。?)管理平臺
管理平臺是針對測試活動管理,、執(zhí)行和報告的中央控制臺,主要用于與測試人員交互,。測試人員利用此平臺輸入測試數(shù)據(jù),控制測試進程,,獲取測試結(jié)果及報表,。管理平臺主要完成以下任務(wù):運行控制的決策系統(tǒng),負責(zé)建立并維護運行隊列,,控制運行策略,;管理平臺負責(zé)維護一個測試任務(wù)的隊列,利用決策系統(tǒng)控制隊列中每個測試任務(wù)的開始執(zhí)行的時間和狀態(tài),,根據(jù)一系列標(biāo)志對其進行控制,。
(2)工具
工具是例如字符串處理,、文件處理,、數(shù)據(jù)庫訪問、緩沖處理,、日志記錄等程序,,它們?yōu)镈-Arch框架提供基礎(chǔ)支持。工具包括所有模塊都可能用到的操作方法,,其抽象了不同模塊特性,,比如操作Excel表的方法、讀寫測試報告,、驅(qū)動引擎等,。
(3)工作域
工作域是測試系統(tǒng)框架的執(zhí)行端,,根據(jù)管理平臺的決策系統(tǒng),,來執(zhí)行運行隊列中的測試腳本,其中運行控制的執(zhí)行系統(tǒng)負責(zé)分配測試腳本,,并按照指定策略啟動腳本等也是工作域的功能,。
?。?)數(shù)據(jù)驅(qū)動腳本
數(shù)據(jù)驅(qū)動腳本就是那些和被測系統(tǒng)相關(guān)聯(lián)的腳本,其中記錄了被測系統(tǒng)的運行流程,。數(shù)據(jù)驅(qū)動腳本一般通過錄制或手工編寫得到,,采用自動化工具私有的語言。D-Arch框架運行時,,利用數(shù)據(jù)源中的數(shù)據(jù)對其中的變量賦予合適的數(shù)值,,作為測試數(shù)據(jù)的輸入。這些變量作為被測系統(tǒng)輸入的媒介,,使腳本能通過外部的數(shù)據(jù)來驅(qū)動應(yīng)用程序,。
(5)報表
報表功能的基本要求是通過查詢/統(tǒng)計/分析,,提供用戶所需的準確的數(shù)據(jù),。系統(tǒng)引擎本身支持報表功能,所以在報表模塊,,只需要定義報表數(shù)據(jù)以及格式,,測試完成后,報表將自動生成,。
?。?)引擎
D-Arch系統(tǒng)的引擎主要基于開源測試框架TestNG開發(fā)。TestNG是一個設(shè)計用來簡化廣泛的測試需求的測試框架,,從單元測試(隔離測試一個類)到集成測試(測試由有多個類,、多個包甚至多個外部框架組成的整個系統(tǒng),例如運用服務(wù)器),。相比較于JUnit,,TestNG可以用于集成測試,這個特性是D-Arch選擇TestNG最重要的原因,。通過TestNG,,D-Arch系統(tǒng)可以非常簡單的實現(xiàn)與Selenium WebDriver、數(shù)據(jù)系統(tǒng),、報表系統(tǒng)的連接,。
(7)Selenium WebDriver
Selenium是一個用于Web應(yīng)用程序測試的工具,。Selenium測試直接運行在瀏覽器中,,就像真正的用戶在操作一樣。支持的瀏覽器包括IE,、Mozilla和Firefox等[3],。D-Arch通過SeleniumWebDriver就可以直接調(diào)用瀏覽器,從而模擬出人工測試的效果,。
D-Arch系統(tǒng)采用數(shù)據(jù)驅(qū)動模式的優(yōu)點如下:
?。?)基于測試與開發(fā)之間的松耦合關(guān)系,,只要業(yè)務(wù)邏輯確定,在應(yīng)用程序開發(fā)的同時就可以同步創(chuàng)建測試腳本,,而且當(dāng)業(yè)務(wù)邏輯變動時,,只需要修改業(yè)務(wù)功能部分的腳本;
?。?)基于模塊化設(shè)計,,最大限度地避免了重復(fù)的腳本,減少創(chuàng)建或維護腳本的成本,;
?。?)測試輸入數(shù)據(jù),實際輸出數(shù)據(jù)和期望的輸出數(shù)據(jù)與腳本分開,,存放在另外的數(shù)據(jù)源中,,便于測試人員修改和維護;
?。?)由于測試腳本和測試數(shù)據(jù)的分離,,便于自動化測試開發(fā)人員創(chuàng)建數(shù)據(jù)驅(qū)動的測試腳本,測試員創(chuàng)建測試數(shù)據(jù),;
(5)系統(tǒng)在測試的過程中收集實際輸出數(shù)據(jù),,與數(shù)據(jù)源中的期望輸出數(shù)據(jù)比對,,并形成各種不同形式的報表,大大減少了手工結(jié)果分析的難度和工作量,。
參考文獻
[1] 曾北濱.自動化測試框架的研究與實現(xiàn)[D].武漢:武漢大學(xué),,2004.
[2] 朱菊,王志堅,,楊雪.基于數(shù)據(jù)驅(qū)動的軟件自動化測試框架[J].計算機技術(shù)與發(fā)展,,2006,16(5):68-70.
[3] JAMES M S. System Testing of Desktop and Web Applications Information Systems Education Journal[J]. 2011,,9(3):68-82.