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

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

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

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

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

表4 測試用時統(tǒng)計

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