摘要:針對目前Web 應用“捕捉/回放”式測試腳本復用率不高的問題,根據Web應用的特性給出了一種基于數據驅動的Web 測試框架,借鑒測試腳本模塊化思想,對測試腳本進行分層次嵌套管理,并實現測試數據與測試腳本的分離。仿真實驗結果表明,該框架具有良好的獨立性及可擴展性。
關鍵詞:Web 應用;數據驅動;測試框架;測試腳本
中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)21-5820-02
Web Test Framework Based on Data-model-driven
DU Jing, ZHANG Yan-hong, XING Cui-fang
(Naval Aeronautical Engineering Institue, Yantai 264000, China)
Abstract: Aimed at the problem of low reusability in the context of web application test script based on “capture/replay”. A data-driven testing framework is proposed In view of the idea of script modularization, the nested hierarchical management is conducted to the test script, and the division of test data and test script is implemented. Simulation experimental results show this framework has better performance of independence and expandability.
Key words: web application; data-driven; test framework; test script
軟件回歸測試是指舊的軟件代碼被修改后再重新測試軟件的功能,以便確定修改沒有引入新的錯誤或導致原有代碼產生錯誤。對于傳統軟件而言,回歸測試是一項非常重要的軟件維護手段,在整個軟件測試過程中占很大比重[1]。本文研究并實現了一種由數據模型驅動并且支持分布式多平臺網絡環境的軟件自動化測試框架。 該框架對測試對象、測試邏輯和測試數據重新進行了組織,對軟件回歸測試過程進行了改進。
1 數據驅動測試框架
數據驅動測試是指使用一個預定義的數據集作為輸入和響應數據,使單個測試腳本被重復執行的技術[2]。本文基于數據驅動測試,提出了一種數據模型驅動測試的概念,數據模型驅動測試可以看作是數據驅動測試的擴展。因為日常的測試中發現,大多數測試用例中使用的測試數據相互之間存在一定的聯系,而這些測試數據之間的聯系與被測對象的功能和結構有關,并且可以建立合理的模型來描述這些互相關聯的測試數據。按照模型來組織測試數據,可以使測試代碼更加清晰合理、意義明確,降低維護的難度。 物理上的數據模型是指一組描述測試數據屬性以及它們之間聯系的 Bean,加上一組按照測試數據之間關系儲存XML 文件中的結構化的屬性值[3]。從某種角度看,數據模型驅動測試是一種增強型數據驅動測試,它的數據集是按照其內部元素相互關系組織的,并且對外提供了一種以其內部元素相互關系為邏輯的訪問數據集的方法。
2 數據驅動的Web測試框架設計
測試框架應具備如下特點:測試數據驅動,測試流程總體控制,測試框架獨立性,測試模塊的原子性以及測試模塊的可擴展性。
2.1 Web測試框架設計思路
框架應滿足的策略有:1) 框架與應用程序相互獨立;2) 框架結構必須容易進行維護和擴展;3) 框架所包含的測試策略和設計必須與框架無關;4) 框架所包含的測試策略和設計方法必須易于測試人員使用;5) 框架擁有自己的測試庫;6) 框架能夠易于進行測試設計的重用和管理。
2.2 Web測試框架結構
依照上述設計思路以及對目前主流測試框架的分析,并結合Web 系統的特點,設計該功能測試框架。 Web 應用測試執行的思想是通過向Web 服務器發送測試腳本文件中事先定義好的HTTP請求來模擬真實用戶訪問Web的場景,并通過分析統計HTTP響應等數據來檢查系統的功能和性能。該測試框架從邏輯上自底向上分為 4 層,如圖 2 所示,分別是:由GUIObject 和 TestDataObject 構成的模型層,由 CommonTask構成的任務層,由 TestScript 構成的邏輯層以及由 TestSuite構成的控制層。
1) 模型層:用戶界面提供給測試人員一個編寫和維護腳本的平臺,用戶可方便的導入或導出腳本,編寫完成的腳本經過DTD定義的檢查,通過后即可交付給測試執行模塊。測試腳本可根據規格說明書方便地對測試輸入和預期輸出進行編寫。此外用戶界面還提供了測試執行中返回的測試結果和運行狀態。
2) 任務層:測試數據輸入可根據測試腳本中變量的定義讀取和操作Web 應用數據庫和模擬輸入數據。
3) 邏輯層:測試執行是在具體Web應用程序上執行腳本并得到結果的一個過程。該平臺使用DOM4J 來解析XML 測試腳本,并用HTTP Unit 來對Web 應用進行測試,實現測試腳本到執行引擎的映射。運用計算機來模擬人的行為來自動化測試Web應用并獲得測試結果信息,測試執行還具有并行測試的特點。
4) 控制層:測試報告獲得測試執行的結果,并分析執行結果用來確定哪些用例被正確執行;提供錯誤發生狀態、位置、數量等信息統計;測試覆蓋率計算等。
3 結束語
本文提出一種基于數據驅動的Web的測試框架,該框架具有獨立性、原子性、可擴展性等特點,并已初步成型,可以逐步應用到 Web 項目中。但還存在不足之處,如當測試用例相互調用時,如何更好地設計用例和函數庫,以避免在一個用例運行失敗導致所有相關的測試用例失敗[4]。這也是今后的研究方向。
參考文獻:
[1] Qian Zhongsheng,Miao HuaiKou,Zeng Hongwei.A practical web testing model for web application testing[C].Third International IEEE Conference on Signal-Image Technologies and Internet- Based System,2007:434-441.
[2] Kelly M.Framework Automation with IBM Rational Functional Tester: Data-driven[EB/OL].(2005-11-20).http://www.ibm.com/ developerworks/rational//library/05/1108_kelly/?S_TACT=105AGX52S_CMP=cn-a-r.
[3] 劉曉丹,武君勝,劉博.基于數據驅動的自動化測試平臺設計[J].科學技術與工程,2008,8(3):779-782.
[4] Johnson D J,Roselli P.Using XML as a flexible,portable test script Language[C].Proceedings of IEEE Systems Readiness Technology Conference,2003:187-192.
注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文