?

輕量級接口自動化測試框架設計與實踐

2020-01-14 06:03
計算機應用與軟件 2020年1期
關鍵詞:測試用例測試數據測試方法

孫 立 哲

(公安部第三研究所eID事業部 上海 201204)

0 引 言

隨著現代軟件業競爭日趨激烈,軟件系統更新頻繁,軟件測試周期不斷縮短。在這種情況下,自動化測試[1]作為能有效提高測試效率的一種手段顯得尤為重要,而自動化測試框架在自動化測試實施中起著關鍵作用。某后端服務產品接口多,接口內部處理邏輯復雜且均支持十幾套不同的測試數據,多版本迭代測試時需執行的測試用例數多達上萬條,以手動測試方式難以滿足短時間版本頻繁迭代的測試需求。為了對該產品實現自動化測試,本文基于面向對象技術[2]、XML文檔設計與DOM開發技術[3]、HTML文檔設計與CSS和JS開發技術[4],借鑒Junit的分層思路[5-6],設計了一套實用性較強的輕量級接口自動化測試框架[7]。該框架具有易于擴展、便于維護、結構清晰等特點,同時具有自動生成內含測試集描述、測試用例描述、接口請求參數和返回數據以及測試結果等詳細信息的測試結果數據文件的功能,并支持將測試結果數據以Web頁面的形式進行個性化展示與瀏覽。通過在實際產品中進行自動化測試實踐,展示了其能在短時間內高效、準確地完成多個版本、上萬條測試用例的快速執行,極大地提高了測試效率,有效地解決因版本短時間頻繁迭代所帶來的測試壓力。同時自動生成的測試結果信息詳盡,有利于對測試失敗的情況快速地作原因分析。

1 整體設計

本文設計的自動化測試框架主要包含兩部分。一部分是基于面向對象技術和XML文檔DOM開發等技術的自動化測試執行模塊,主要實現對測試數據批量配置、測試腳本設計、測試腳本批量執行以及自動生成測試結果數據文件。另一部分是集XML技術、HTML設計、CSS技術和JS開發技術的測試結果統計分析與展示模塊,主要實現對測試結果數據文件內數據的統計分析并以Web頁面的形式作個性化展示。

2 具體實現

2.1 自動化測試執行模塊

自動化測試執行模塊基于Eclipse開發平臺[8]采用Java編程語言來實現。自動化測試執行模塊由測試基類、測試用例集類、測試執行類、測試數據集類、單測試數據類、測試輔助類和測試結果類構成。測試用例集類可以有多個,一個測試用例集類對應一個接口。自動化測試執行模塊類圖如圖1所示。

圖1 自動化測試執行模塊類圖

測試基類是抽象類,包含類構造方法、執行所有測試方法、執行正向測試方法、執行反向測試方法、正向測試方法、反向測試方法。其中,正向測試方法和反向測試方法是抽象方法。

測試數據集類內含一個Map對象屬性和一個類構造方法。Map對象屬性用于存儲各測試數據集,類構造方法用于對Map對象初始化,即用于配置各測試數據。

單測試數據類內含各數據項屬性和一個類構造方法。各數據項為接口調用前請求參數數據或用于組裝請求參數的可配數據項,類構造方法用于對各數據項初始化。

測試結果類內含文件名配置項屬性、XML文檔對象屬性、XML文檔根元素屬性、XML測試集元素屬性、測試集標識屬性、類構造方法、初始化方法、添加測試集方法、添加測試用例方法和寫數據到文件方法。文件名配置項用于設定生成的結果文件所在目錄及文件名。XML文檔對象用于存儲整個文檔數據。XML文檔根元素用于存儲所有測試集數據。XML測試集元素用于存儲測試用例及其結果數據。測試集標識用于存儲測試集唯一標識,以接口名作測試集唯一標識。初始化方法用于創建XML文檔并添加根元素。添加測試集方法用于將測試集添加到根元素。添加測試用例方法用于將測試用例及結果添加到測試集。寫數據到文檔方法用于將XML文檔對象中所有數據寫入XML文檔。對應的測試結果XML文檔DOM樹結構設計如圖2所示。

圖2 測試結果XML文檔DOM樹

測試用例集類繼承測試基類,包含測試數據集類對象屬性、單測試數據類對象屬性、測試用例標識屬性、類構造方法、正向測試子方法、反向測試子方法,并實現測試基類的四個抽象方法。正向測試方法中主要完成實例化測試數據集類對象,根據接口支持的測試數據類型提取數據用于實例化單測試數據類對象,基于單測試數據類對象先后執行所有正向測試子方法。反向測試方法中所含操作與正向方法類似,區別是執行所有反向測試子方法。若接口支持測試數據集中所有數據類型,則循環提取數據并執行各子方法。正向測試子方法中包含各正向測試用例腳本,反向測試子方法中包含各反向測試用例腳本。根據接口支持的業務模塊分類情況,可以設定一個或多個子方法,便于后期腳本維護。每個測試用例腳本對應一次接口調用。單個測試用例中包含初始化測試用例標識、組裝接口請求數據、解析接口返回數據、檢查接口返回數據正確性和將用例數據寫入測試集。用例數據包括測試用例標識、接口請求數據、接口返回數據、用例執行成功與否等信息。

測試輔助類內含從數據庫讀取數據方法、向數據庫寫數據方法、組裝接口請求數據方法、解析接口返回數據方法和檢查接口返回數據正確性方法以及其他輔助性方法。

測試執行類是整個測試程序的執行入口,內含測試結果類對象屬性、主方法、執行所有測試方法、執行正向測試方法和執行反向測試方法。主方法完成對測試結果對象的初始化,配置測試范圍(0代表執行所有測試,1代表執行正向測試,2代表執行反向測試),執行測試結果對象的初始化方法,根據測試范圍配置執行對應測試,執行測試結果對象的寫數據到文件方法。執行所有測試方法中包含初始化測試結果對象的測試集標識、執行測試結果對象的添加測試集方法、實例化各測試用例集類對象并分別調用其執行所有測試方法。執行正向測試方法、執行反向測試方法內部處理過程與執行所有測試方法類似,區別是二者分別調用其執行正向測試方法和執行反向測試方法。

自動化測試執行模塊各類之間的調用關系以及業務處理流程如圖3和圖4所示。反向測試方法內部處理流程和正向測試方法內部處理流程類似,區別是執行測試用例集類的反向測試子方法和生成反向請求數據。

圖3 測試執行業務總流程圖

圖4 正向測試方法內部業務流程圖

2.2 測試結果統計分析與展示模塊

測試結果統計分析與展示模塊由HTML文件、CSS文件、JS文件和XML文件構成。XML文件由自動化測試執行模塊自動生成,作為統計分析的數據源。HTML文件定義結果展示主界面整體布局。主界面整體層疊樣式通過CSS文件定義,部分樣式通過JS文件中腳本作動態更新。CSS文件和JS文件在HTML文件頭部引入。主界面主要由概要區、結果匯總區、結果細節區構成。各區內的部分數據通過JS腳本動態更新。概要區展示測試用例執行總數、用例執行成功總數和用例執行失敗總數。結果匯總區展示各測試集名及其下所含測試用例執行總數、用例執行成功總數和用例執行失敗總數,其中測試集名為超鏈接。結果細節區默認隱藏,點擊某個測試集名超鏈接后,結果細節區顯現且顯示該測試集下所有測試用例及其結果信息。點擊某測試集名超鏈接后的主界面效果如圖5所示。

圖5 點擊某測試集名超鏈接后的測試結果主界面

JS文件中JavaScript腳本主要完成加載XML文件、讀取XML文件數據、對全部測試結果作概要統計分析、對某個測試集下的測試結果作統計分析并將相關數據及其顯示樣式動態更新到HTML文件。其中,對全部測試結果作概要統計分析和對某個測試集下的測試結果作統計分析封裝為兩個方法,分別在HTML文件加載時和點擊某個測試集名超鏈接時觸發調用。對全部測試結果作概要統計分析主要完成概要區和結果匯總區所要展示的各數據統計并動態更新相應數據內容及個別樣式(如用例執行成功總數綠色字體突出顯示,用例執行失敗總數紅色字體突出顯示)。對某個測試集下的測試結果作統計分析主要完成結果細節區所要展示的各數據提取并動態更新相應數據及個別樣式(如結果為Pass時綠色字體突出顯示,Fail紅色字體突出顯示)。

3 實際產品應用

某Web后端服務產品由近三十個接口構成,接口請求數據組裝時需作加密或簽名處理,接口內部業務邏輯比較復雜,部分接口之間存在一定的關聯關系,單套測試數據下覆蓋的測試用例總數為二百多條。按業務需求,每個接口均需支持十五套不同的測試數據類型,即需要測試每個接口在所有測試數據類型下的執行情況,因此,單個版本迭代中實際需要覆蓋的測試用例總數共計達三千多。若進行手動測試,以每日完成執行三百條用例為例,每一次迭代,測試需一人十日才能完成。如遇產品需短時間緊急上線情況,或版本短時間頻繁迭代時,手動測試則顯得捉襟見肘。自動化測試能夠以更有效、可重復的自動測試環境代替繁瑣的手工測試,而且能在更少的時間內完成更多的測試工作[9]。因此,引入自動化測試成為提高測試效率的必然手段。

采用本文的自動化測試框架,針對每個接口開發對應的測試用例集類,配置測試數據集,在測試執行類中實例化測試用例集類并配置執行所有測試用例,進行自動化測試。自動化測試執行以及結果統計分析等總共耗時僅為三個小時。與手動測試相比,自動化測試耗時極少,在測試效率上有著顯著優勢。測試結果實例如圖6所示。

圖6 接口自動化測試結果實例效果圖

4 結 語

針對某后端服務產品接口多,功能復雜,多版本迭代時測試用例覆蓋多達上萬條,以手動測試無法滿足測試需求的情況,本文基于面向對象技術、XML文檔DOM開發技術以及HTML和JS等Web頁面開發技術,采用Java編程語言,設計并實現了一套比較有實用性的輕量級接口自動化測試框架。該框架集數據配置、測試用例分類設計、測試批量執行、結果自動歸類收集以及統計分析和個性化展示為一體,支持全用例測試、正向測試和反向測試三種測試范圍配置;支持測試數據批量配置以及單數據下測試執行和批量數據下測試執行;支持自動生成內含測試集描述、測試用例描述、接口請求參數和接口返回參數以及測試結果等詳細信息的測試結果數據文件;支持將測試結果在HTML文件借由JavaScript腳本以約定的CSS樣式進行個性化展示與瀏覽。測試結果個性化展示頁面中概要信息簡單明了,各測試集匯總信息分類清晰,測試集下各用例信息及對應結果詳盡,整個測試結果一目了然,便于瀏覽??蚣鼙旧砭哂辛己玫目蓴U展性和可移植性。數據配置可擴展設計為由XML文檔分類存儲各測試數據并由測試數據集類構造方法讀取XML文檔加載各測試數據,適于大數據量測試情況。測試用例集類 具有相對獨立性,可在基本不對整個框架作改動的基 礎上靈活擴增。該框架的設計思路可移植到其他支持 面向對象技術和XML 文檔DOM 開發技術的開發語言 平臺,適用不同語言平臺下的接口測試。

猜你喜歡
測試用例測試數據測試方法
基于ID3決策樹算法的大學生體能測試數據管理系統設計
基于應變測試方法的汽車涉水姿態研究
PVC地板燃燒性能測試方法淺析
基于LDA模型的測試用例復用方法*
基于路徑關鍵狀態變量的測試用例約簡
DLD-100C型雷達測試方法和應用
測試數據管理系統設計與實現
軟件測試中的測試用例及復用研究
基于自適應粒子群優化算法的測試數據擴增方法
空間co-location挖掘模式在學生體能測試數據中的應用
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合