王志勇,羅雨,房效亮
(正元地理信息集團股份有限公司,北京,101304)
關鍵字:WebGIS;自動化測試;selenium;二三維地理視圖;地理信息系統
二十一世紀初期,Internet在全世界進入了爆發式增長階段,隨著網絡設備的鋪設以及光纖和5G等相關技術的應用使得網速大幅度提升,這為WebGIS的發展提供了豐盛的沃土。在此基礎上基于B/S的GIS系統脫穎而出,它摒棄了傳統C/S架構GIS軟件的更新繁瑣,不便于跨平臺和免安裝客戶端等自身天然的劣勢。采用RIA(富客戶端)技術、AJAX(動態網頁)技術和Html5等最新展示技術,結合后臺應用服務系統,利用互聯網對地理空間數據進行發布和調用,使得WebGIS系統中地理視圖模塊展現出與C/S系統一樣的效果和功能。
由于軟件開發技術的持續更新與快速迭代,自動化測試技術也隨之應運而生,并且在大多數互聯網軟件公司得到了很好的應用,滿足各種應用需求的測試框架也層數不窮,例如:Selenium、WebDriver、Robot framework、Appium等,但是由于地理信息行業的存在著一定的特殊性,很難采用互聯網等相關行業模式,以文本式交互系統為主來執行自動化軟件測試,其難點主要包括以下幾個方面:
(1)數據空間化,地理信息行業數據按大類可分為:矢量數據、柵格數據、新型測繪數據以及近年來一直在提倡的高維數據等,雖然不同數據展現的方式不同,但是最終均以可視化的二三維地理視圖界面進行加載和展示,與傳統數字化模式存在較大的區別。
(2)元素無法定位,WebGIS前端主要采用OpenLayers、AGS API for JS/Flex等JavaScript類庫包或插件形式展示,空間數據無法直接作為Web元素對象被獲取及定位。
(3)結果不易斷言,由于地理信息數據實體以圖形化加載展示,無法直接獲取相關文本內容,無法通過字符串比對進行結果正確性的判定,并且圖形化過程需動態渲染,展示內容不固定,展示效果不統一。因此對于傳統通過Web界面獲取元素文本信息等方式進行功能點正確性驗證的方式,很難適應在地理信息系統中。
正是由于地理信息應用系統的二三維地理視圖模塊存在以上難點,導致自動化測試在WebGIS系統無法全面應用,攻克相關難題可以有效的提升WebGIS軟件的測試效率,降低測試成本,為后期應用系統的快速迭代部署和交付奠定基礎,為追求更高的軟件質量要求提供技術保障。
WebGIS應用系統中二三維地理視圖模塊主要作用是對空間地理信息數據的圖形化加載展示,以及在此基礎上的瀏覽、分析和查詢等操作,因此測試的業務邏輯流程主要包括:啟動瀏覽器后打開二三維地理視圖模塊界面,加載相關空間地理數據后,模擬人工測試的平移、放大、縮小等瀏覽操作和距離量測、面積量測、點線面屬性查詢等查詢操作。根據操作結果對指定范圍進行截圖,并且通過與預期結果數據圖像對比后,輸出測試結果,如果對比結果與預期一致則返回正確測試結果,如果對比結果與預期結果不一致,解析出不一致區域并且成像后輸出測試結果,上述業務流程圖如圖1所示。

圖1 WebGIS應用自動化測試流程圖
根據業務流程設計,實現原理分別為以下步驟:
(1)瀏覽器驅動:二三維地理視圖模塊自動化測試可以通過自動化測試框架Selenium3中的Webdriver對象驅動瀏覽器,打開指定的應用系統的二三維地理視圖界面。
(2)人工測試模擬函數:為了實現模擬人工測試在二三維地理視圖模塊中的相關操作,采用基于java.awt.Robot類或者Sikuli對象引用的方式,封裝用于鼠標及鍵盤模擬操作的平移、放大、縮小、量測、點擊、框選以及快捷鍵和字符輸入等操作方法。
(3)圖像對比函數:為了實現圖像后期對比,首先需要封裝界面截圖等相關工具函數類,對執行結果進行圖像采集,為后期測試結果正確性對比提供數據支持。并且采用圖像對比算法封裝圖像對比函數,實現地理信息數據操作結果與預期結果對比驗證。
(4)用例編寫:在以上封裝類及Selenium對象類的基礎上進行二三維地理視圖模塊自動化測試用例的編寫,從而方便不同測試場景執行時的調用。
(5)一致性判斷:在執行自動化測試過程中,通過加載不同測試數據和測試用例腳本可以執行不同場景的自動化測試,并且在自動化測試計劃中添加預期結果斷言,將執行結果截圖數據與預期圖像文件進行對比,采用灰度圖像的相似對比技術,自動生成不同點位對照圖像和對比結果。
(6)測試報告輸出:將測試結果通過測試報告框架模型自動生成在測試報告中,并且打印測試過程日志,方便開發人員追蹤和定位缺陷。
通過以上設計步驟,最終實現二三維地理視圖模塊自動化測試,再將其與整套自動化測試框架融合后,可以實現地理信息應用系統全流程的自動化軟件測試實施方案,解決地理信息相關應用系統無法全面自動化測試的弊端,為提高應用系統測試效率奠定基礎。
依據上述自動化測試方案設計,結合正元智慧城市時空大數據與云平臺中云端地圖系統二三維地理視圖展示模塊進行自動化測試,已實現地理視圖窗口內數據的縮放、平移、360度旋轉、距離量測等操作的自動化測試,所有測試流程均與人工測試高度一致,通過多次對比驗證,獲取出根據二三維地理視圖模塊自動化測試設計實現的自動化測試與手動測試全流程的耗時數據,相關數據見表1所示,通過對比可以得出自動化測試執行效率明顯大于手動測試。

表1 自動化測試與人工測試耗時
二三維地理視圖模塊自動化測試不僅提高測試效率,同時通過可視化的測試報告可以更加直觀的顯示每個測試用例的執行結果。在采用圖像對比技術后,系統開發過程中對渲染和加載產生細微的影響都能進行詳細的輸出。最終可以對系統開發過程中相同地理信息數據加載顯示的結果異同對比分析。相對于人工憑借經驗識別數據加載結果的正確性,采用本套二三維地理視圖模塊自動化測試方案的驗證結果更加嚴謹可靠。
基于二三維地理視圖模塊的自動化測試方案解決了WebGIS應用系統自動化測試過程中,無法全部覆蓋功能點,以及可視化數據正確性驗證的難點問題。為全流程自動化測試奠定了基礎,并且結合主流的Selenium自動化測試框架技術,可以更加快速準確的完成已有功能測試,提高人工測試效率和版本迭代測試速度的同時,降低測試成本,保障系統平穩運行。
目前該測試方案已經應用在智慧城市云平臺等相關系統中,實現了全流程自動化測試,配合團隊敏捷開發流程,快速實現從代碼編寫、提交、審查、編譯、打包、測試以及部署發布等全流程的自動化作業模式,單次測試耗時相比之前測試提升40%,精準度達到90%以上,為整個研發團隊節省耗時超過30%,以上參數充分證明二三維地理視圖模塊自動化測試方案在實際工作中的必要性、可用性和高可靠性,實現了地理信息應用系統全流程自動化的可行性,為自動化測試技術在地理信息應用軟件領域的廣泛實施提供實踐依據。