摘 要: 為將互聯網軟件版本迭代產生的重復接口測試操作從人工測試轉為系統自動測試,提出了一種接口自動化測試系統以實現高效的測試與維護。結果表明,該系統滿足接口自動化測試需求,可有效減少軟件測試成本,提高測試效率。
關鍵詞 : 自動化測試;接口測試; Spring Boot; MVC;
Abstract: In order to transfer the repeated interface testing operation generated by the iteration of Internet software versions from manual testing to system automatic testing, an interface automatic testing system is proposed to achieve efficient testing and maintenance. The results show that the system meets the requirements of interface automatic testing, which can effectively reduce the cost of software testing and improve testing efficiency.
Keyword: automatic testing; interface testing; Spring Boot; MVC;
1、 引言
隨著互聯網產品版本的快速更迭,產品測試的時間愈來愈少,但軟件的質量要求卻越來越高。測試人員往往需要花費大量時間針對不同版本,做重復的測試工作,效率低下。接口自動化測試因具有設計實現簡單、開發維護成本低、容易提高測試效率等特點,逐漸受到重視。接口測試是對系統或組件之間的接口進行測試,主要是校驗數據的交換,傳遞和控制管理過程,以及相互邏輯依賴關系[1]。相比UI層(主要是WEB或APP)自動化測試而言,接口自動化測試收益更大,有著更高的投入產出比,經常作為開展自動化測試的首選[2]。近年來,軟件自動化測試技術發展很快,出現了很多成熟的自動化測試工具,常見的Web自動化測試工具和框架有:QTP、Selenium和Test NG等[1,2,3]。本文設計實現的接口自動化測試系統通過Spring Boot開發的用例管理平臺管理配置用例數據和接口參數,用例執行模塊采用unitest框架,利用Python語言實現。目前該方案已內部試用,可以很方便測試人員進行用例維護和測試用例執行等操作,效果良好。
2、 系統介紹
接口自動化測試系統主要由用例管理平臺和用例執行模塊兩部分組成,如圖1所示。其中用例管理平臺包含接口模板、用例管理、用例分組管理、數據源配置和用例運行報告;竟δ苌婕暗綄Ω鱾模塊的增加、刪除、更新、查找等基本操作。
2.1、 相關技術
該系統用例管理平臺采用MVC設計模式,使用當前最流行的Spring Boot框架進行開發。前端采用Angular JS進行頁面開發[4]。后端采用Java與My SQL數據庫進行開發。
圖1 接口自動化測試系統框圖
(1) Spring Boot
Spring Boot是基于Spring4.0的一種全新框架,不僅繼承了Spring框架的原有特性,而且采用約定大于配置簡化了應用的搭建和開發過程[5]。Spring Boot的Spring Boot Starter將常用的依賴分組進行了整合,將其合并到一個依賴中,一次性添加到項目的Mave或Gradle構建中;Spring Boot的自動配置特性利用了Spring 4對條件化配置的支持,合理地推測應用所需的bean并自動化配置它們[6]。另外,Spring Boot內嵌tomcat,在開發過程中很容易對項目進行調試。
(2) MVC架構
MVC代表的是模型(Model)、視圖(View)和控制器(Controller),它將數據和展現層進行解耦,被視為構建用戶界面的一種很流行的方式。其架構可以分為3層,如圖2所示。其中模型用于封裝與應用的業務邏輯相關的數據以及對數據的處理方法,視圖由數據的多種表述所組成,它將會展現給用戶;控制器會作為用戶和數據的中間協調者,控制終端用戶的行為,并引導他們在應用的不同視圖間進行跳轉[7]。
(3) Python相關庫
Unittest單元測試框架由Test Case、Test Suite、Text Test Runner、Test Loader和Test Result 5部分組成[8]。其中Test Suite為測試集或測試套件,用來組織測試用例,執行自動化過程中不同用例之間執行互不干擾。不僅可以適用于單元測試,還可以適用WEB自動化測試用例的開發與執行,該測試框架可組織執行測試用例,并且提供了豐富的斷言方法,判斷測試用例是否通過,最終生成測試結果[9]。Requests庫基于urllib,用于接口測試的各種請求。HTMLTest Runner是unittest模塊的一個擴展,可用于將結果集生成為HTML格式的測試報告。Smtplib則用于測試完成后發送測試報告郵件。
圖2 MVC架構
2.2 、數據庫表結構設計
自動化測試系統數據庫表數目較多,包括接口模板表、用例表、用例分組表、用例關聯表、服務配置表和運行報告表等,這里僅展示幾個主要的表結構。
圖3 數據庫部分表結構
3 、系統實現
3.1 、用例管理平臺子系統
接口自動化測試系統主要由用例管理平臺中共有種功能模塊,大部分主要涉及各個功能模塊的增刪改查。下文以其中用例分組模塊為基礎講述具體實現過程。用例分組管理模塊包含對象test Group、test Group Controller、用例分組和用例關聯對應的增刪改查方法以及runCase Group方法。其中增刪改查業務邏輯并不復雜,主要對應數據庫的insert、delete、update、select四大操作,根據參數執行對應方法獲得數據。run Case Group方法通過在java中使用Run Time.get Runtime().exec(),開啟單獨進程中執行Python腳本文件,并通過輸入輸出流截取Python腳本文件的運行報告結果信息,寫入數據庫。
自動化測試系統的基本操作流程為:
(1)添加數據源,配置來源數據庫的主機、數據庫、用戶名和密碼。
(2)服務配置,配置服務編碼、名稱、服務地址等。
(3)添加接口模板,配置接口名稱、接口地址、請求方式、響應體類型等。
(4)添加用例,根據接口模板創建單個用例的編碼名稱,請求地址等。時序圖如圖4所示。
(5)添加用例分組,創建用例分組的名稱編碼和項目編碼等。
(6)關聯用例,選中用例分組,關聯若干測試用例,并賦予編號順序。
(7)用例運行,運行已關聯用例的用例分組,并選擇是否發送郵件。
(8)查看用例運行報告。包括用例分組執行時間。
圖4 測試用例創建時序圖
3.2 、用例執行子系統
用例執行子系統采用unittest框架,并利用Requests、HTMLTest Runner和Smtplib相關庫用于模擬請求、生成測試報告和發送郵件功能。
主要代碼工程結構說明如下:
(1) common:存放一些公用方法,其中commonModel.py用于封裝一些解析報文的方法,Email Utils.py用于獲取最新的測試報告并發送郵件,Globalvar.py用于存放一些定義的全局變量。
(2) config:進行為配置文件的配置和讀取,其中lbas_script.conf為主配置文件,env.py負責封裝操作數據庫的sql語句,load_config_data.py則進行配置文件的加載和初始化。
(3) db:封裝Mysql和Mongodb數據庫操作的增刪改查等基本方法。
(4) http:封裝http請求和響應方法。其中httpclient.py用于發送響應狀態請求和結果上報請求,httpModel.py用于封裝各種請求模型,http Request.py用于封裝內部用戶的請求方法。
(5) operation:用例執行的主要文件。其中interface Auto Test.py用于測試用例的封裝執行,結果校驗和報告生成。
接口測試的步驟抽象為:
(1)數據準備,從數據庫中取出測試相關數據。如圖5所示。
(2)接口請求,利用Requests向接口地址發送http模擬請求。
(3)響應值校驗。
(4) DB數據校驗。
圖5 數據準備程序流程圖
最終生成的HTML測試報告放置在nginx服務器上。在接口自動化測試管理平臺系統通過點擊url訪問,可顯示測試用例通過與否以及測試報告詳情。
4 、結束語
針對當前互聯網軟件版本迭代產生的人工進行重復的接口測試存在效率低下問題,本文設計實現了一種接口自動化測試系統,測試人員可以通過自動化測試管理界面進行測試用例設計與維護以及相關服務配置,經過系統上線的運行測試結果,預期效果良好。但是使用該框架還存在很多不足,例如當涉及自動化測試項目較多時,會出現龐大的接口數量,導致用例維護困難和性能瓶頸。因此下一步會針對項目和用例情況對數據庫進行分表設計,以提升用例管理和優化性能。
參考文獻
[1]蔣靈仙基于Testng的Web接口測試的自動化框架設計與實現(D].浙江工業大學2016.
[2]羅云.基于Test NG框架的接口測試系統設計與實現[D]華中科技大學2016.
[3]朱建華基于Spring的Web自動化測試平臺設計與實現[D].大連理I大學,2019.
[4]王少麗基于Angular JS的前端開發框架的設計與應用[D].大連海事大學,2018.
[5]鄧笑基于Spring Boot的校園輕博客系統的設計與實現[D]華中科技大學,2018.
[6][美]Craig Walls Spring實戰[M]張衛濱北京人民郵電出版社2016:296-299
[7] [美Goffroy Warin,張衛濱孫麗文精通Spring MVC4[M].北京人民郵電出版社,2017:32-33.
[8]王娜.基于python的接口自動化測試框架設計[J].電腦知識與技術, 2020, 16(12):246-248.