周靈敏,張 弛
(1.江西航天鄱湖云科技有限公司江西南昌330096;2.南京理工大學江蘇南京210094)
智慧管網,即針對城市地下管網的數字化、信息化、智能化管理需求,建成以云計算為基礎,以數據中心為核心,以政府部門和行業用戶為節點,最終實現管線數據管理、運行監測、動態更新、綜合應用,對外服務發布及業務審批管理的一體化管理[1]。
因為智慧管網產品的龐大和復雜性,使得開發和質量管理的成本不斷的提升。其中,軟件測試在質量保證中占有極其重要的地位[2-3],是保證軟件可靠性的一個關鍵環節[4]。在智慧管網產品中,其版本更新迭代速度快,使用純粹的手工測試效率低、重復性高且容易產生測試疲勞,造成測試成本高、測試質量達不到理想狀態的現象[5]。
除此之外,智慧管網產品中的多數信息化類功能點的正確性都可以使用機器自動判斷,引入自動化測試可以很好地代替手工測試[6-7]。這時候,探索并設計一個適用于智慧管網的自動化測試系統用來提高測試效率,降低測試成本[8]就顯得非常必要。
智慧管網產品由10個子系統和一個APP組成,而數據管理(包括數據查詢、數據統計、數據編輯等)、設備管理、地圖操作、人員管理等信息化類的功能模塊在10個子系統中都會以不同的程度體現出來。而數據管理、設備管理、人員管理等功能模塊的手工測試用例都比較容易轉換為自動化測試用例,不同子系統間的不斷重復更是證明了智慧管網產品自動化測試的可行性。
本文以智慧管網之管線應用綜合子系統的數據查詢模塊為例,它共包括9個子模塊,具體的測試需求概述如表1所示。

表1 數據查詢模塊測試需求概述
對比手工測試流程[9],智慧管網的自動化測試人員在制定自動化測試計劃和分析自動化測試需求后,也需要設計編寫自動化測試用例,然后在部署好的自動化測試環境中運行相關用例,并對測試結果進行記錄、追蹤和分析。
文中基于selenium[10-11]和關鍵字驅動思想[12-13],采用B/S架構[14],探索設計了如圖1的自動化測試系統[15-16]。智慧管網的自動化測試人員根據測試需求設計好自動化測試用例,并在自動化測試系統的Web頁面上編輯相關測試對象和測試腳本,形成測試用例庫;自動化測試系統根據測試人員的選擇執行測試用例;測試用例執行結束后,自動化測試系統展現測試報告和詳細的測試日志。

圖1 自動化測試系統架構
要實現上述的自動化測試系統,需要解決自動化測試腳本設計、關鍵字方法庫設計、測試報告與測試日志的設計這3個關鍵問題,具體的設計思路可以參考下文的介紹。
關鍵字方法庫主要是使用selenium API對智慧管網的Web界面元素所持有的事件進行基本封裝。這樣保證智慧管網的自動化測試系統中只有測試對象和關鍵字方法庫相關聯,更高層只需要關心智慧管網產品測試的功能點和業務邏輯。針對智慧管網的產品特點,本文設計的關鍵字方法庫除了需要封裝常用的點擊(click)、輸入(input)、下拉選擇(select)、獲取文本(getText)等關鍵字方法,還需要封裝智慧管網產品中針對地圖操作的相關關鍵字方法,如對地圖進行放大(enlarge)、縮小(toScale)、平移(move)、選點(mapClick)等,形成一個具有智慧管網特色的關鍵字方法庫。
表2為“根據管線編號進行查詢”功能點的手工測試用例,根據分析得知,如果想把本條測試用例轉換為自動化測試用例,不僅需要把UI測試對象(包括管線編號輸入框、圖層類別輸入框、管線圖層輸入框、緩沖范圍輸入框、查詢按鈕輸入框、查詢結果列表等)單獨獲取出來,還需要輸入測試數據(操作值和預期結果)以及操作類型(即關鍵字input、select、click等)。因此,本文根據公司的手工測試用例的設計字段以及關鍵字驅動的相關思想,對智慧管網的自動化測試腳本字段設計如表3所示。

表2 管線編號查詢手工測試用例

表3 智慧管網自動化測試腳本字段設計表
測試報告和測試日志的設計都是為了更好的分析智慧管網的自動化測試用例執行結果。在執行智慧管網的自動化測試用例時,本文設計的自動化測試系統便會同步啟動測試日志的記錄功能。當自動化測試用例執行結束時,會出一份包含該次執行結果的概要信息的測試報告,包括總用例數、執行成功用例數、執行失敗用例數、執行時長等信息。而當智慧管網的自動化測試人員想要更具體分析測試用例執行失敗的原因,可以根據Log4j記錄的詳細測試日志進一步的定位自動化測試用例執行失敗的原因。
根據上述的測試需求分析、自動化測試方案設計,我們針對智慧管網之管線應用綜合子系統的數據查詢模塊,共設計自動化測試用例297個。在測試用例執行結束后,我們簡單的比對了自動化測試和手工測試執行過程中的各項數據,其中各測試階段所花費的時間統計和效率分析[17]比對分別如表4和表5所示。

表4 測試用時統計

表5 測試收益率比對
文中針對智慧城管產品的當前需求提出了自動化測試方案[18]并設計了相應的自動化測試系統,通過智慧管網之管線應用綜合子系統的數據查詢模塊的應用示例[19],充分證明了該自動化測試方案可以提高智慧管網產品的測試效率和測試覆蓋率。今后,我們還可以進一步的完善關鍵字方法庫、改善該自動化測試系統的性能,將該自動化測試系統應用到其他相似的產品當中。