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

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

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