王新月,王奚
(1.寧波和利時信息安全院有限公司,西安710075;2.北京和利時智能科技有限公司,西安710075)
HolliView產品是和利時公司數字工程操作系統定義的流程可視化統一解決方案,是基于HTML5標準的企業可視化組態一站式跨平臺解決方案,其包含通用組件、拓撲組件和3D渲染引擎等豐富的圖形界面類庫,提供了完全基于HTML5的矢量編輯器、拓撲編輯器及3D場景編輯器等多套可視化設計工具,具備完善的事件觸發和腳本擴展接口以靈活定制業務功能,并可無縫在多終端中適配。支持集成到第三方數字化系統,支持接入SCADA系統數據或云平臺產品數據,可對接多種外部數據源,如Oracle、MySQL、SQL Server等。產品定義了多種動態特性、交互特性,用來展現產線工序情況,使產線流程更加生動。
頁面元素動態特性及交互特性在現場是最基本的應用,包括變色、填充、閃爍、可見、旋轉、自轉、平移、縮放、鼠標動作、顯示窗口、工具提示、有效性、數據修改等。使用頻率較高,所涉及的測試參數、邏輯條件、數據類型等分支組合出近千條測試用例,手工組態及在線驗證步驟繁瑣,需耗費大量的人工時間,且因為測試人員個體差異,測試結果輸入及測試判定存在不可控因素。
以下均以變色特性為例進行詳細說明,測試輸入影響參數如表1所示,測試時需覆蓋所有路徑,為了提高測試效率,有必要進行動態/交互特性自動組態及在線輸出結果自動驗證。
元素特性自動化測試框架采用Python的Unittest測試框架[1],如圖1所示,主要包括元素、數據、公共方法、測試用例及測試執行,其中Element.py主要存放測試過程所需定位的元素路徑,Data.py主要存放執行測試用例時所需的表1中的參數組合,Public.py主要封裝了測試用例中常用的函數方法,如新建文件、畫圖、讀寫值等。Testcase.py則涵蓋了元素特性支持的所有分支,以確保任意地輸入參數都有明確的輸出。Runal?lTestcase.py定義測試用例路徑,加載所有測試用例并執行,最后生成測試報告。使用Unittest測試框架大大減少了代碼編寫工作量,且節省調試時間,采用ddt數據驅動直接獲取data中的輸入數據,使測試用例輸入非常直觀且增刪更加簡便。

圖1 自動化測試框架

表1 變色特性組態測試用例輸入參數
如圖2所示,HolliView離線編輯器界面包括上方圖元工具欄,左側文件導航欄,右側屬性欄,中間頁面繪圖區四個部分,四個區域均為Canvas繪制,在左側文件導航欄選中文件新建頁面、在圖元工具欄選中圖元在繪圖區畫圖需獲取文件夾在導航欄坐標及圖元在圖元工具欄的精確坐標。

圖2 HolliView離線編輯器界面
依據HolliView離線編輯器界面架構,獲取文件夾JS路 徑 信 息 為editor.displays.accordion.dirs,editor是html5內置的全局對象,可直接調用,使用exe?cute_script[1]注入JS腳本即可,Python部分代碼如下。

其他畫布中元素坐標獲取方法類同,變色特性離線組態大的分支包含3個部分,分別是文本變色、線框變色、背景變色,首先登陸離線設計器,在左側文件導航欄選中文件夾,在選中文件夾下新建組態頁面,拖拽圖元(文本、正方形、橢圓等)到頁面指定位置畫出指定大小的圖形,右鍵圖元組態變色特性,遍歷表1中參數進行輸入并完成變色特性的組態,詳細流程如圖3所示。

圖3 元素特性離線自動化組態流程
在手工測試中,增量測試版本重點測試新增功能,無法做到每個提測版本均重新組態所有的動態/交互特性,常規測試方法是使用舊版本中已組態好的舊頁面進行舊功能的驗證以節省測試時間,因此離線自動化組態既保證了每個提測版本都是對新組特性的驗證,又節約了組態各特性的人工成本,為HolliView產品的交付時間和交付質量提供了有力保證。
變色特性組態邏輯見圖4,離線自動化組態完成后登錄變色特性在線頁面,頁面數據與SCADA通訊過程如圖5所示,頁面數據的讀寫是通過WebApi接口完成的。若要使邏輯條件成立或不成立,需通過SCADA提供的WebApi接口來完成對SCADA測點值的讀寫,本例中讀寫值接口的調用是利用Python提供的requests庫的post方法requests.post(url,json,headers)[1]來完成的,在線驗證輸入與輸出對應關系見表2。

圖4 變色特性離線組態示意圖

圖5 HolliView與SCADA通訊過程

表2 測點值與輸出結果對應關系
變色特性功能在線自動化驗證流程圖如圖6所示,圖元標簽為“Node_1”,已預先存儲在data.py中。

圖6 元素特性在線自動化驗證流程
給SCADA測點AI_001寫值完成后,在線圖元顏色的獲取需要已知圖元顏色對應的樣式屬性,HolliV?iew產品基于HT框架[2],HT在線頁面組件graphView綁定的數據模型JSON主要存儲了DataModel中的圖元data信息,以及DataModel的屬性。HT框架[2]所有組件都是通過綁定DataModel,以不同的形式呈現到用戶界面;同時組件也會監聽DataModel模型的變化事件,實時同步更新界面數據信息。屬性分為三種類型。
第一種是get/set類型,簡稱p,如image屬性對應的getImage()和setImage(image)函數。
第二種是style類型,簡稱s,如getStyle(‘lable.col?or’)和setStyle(‘lable.color’,’red’)。
第三種類型是attr類型,簡稱a,如getAttr(‘cus?tomProperty’)和setAttr(‘customProperty’,123)。
本例中在線頁面圖元顏色獲取需調用第二種類型函數getStyle(‘lable.color’)。JS腳本為graphView._dataModel.getDataByTag('Node_1').getStyle(‘text.col?or’),在Python中調用driver.execute_script(js)來獲取測點值變化后的圖元顏色,并進行判斷是否與預期一致,一致則返回變色特性功能正確,不一致則返回變色特性功能錯誤。
元素特性離線自動化組態和在線自動化驗證的實現,主要解決了以下幾個問題:
(1)從根本上提高了測試效率,222條測試用例,執行時間為32分鐘,平均每條用例用時9S左右,12個特性的測試時間由原來的7人/日,提高到1人/時,測試報告詳細信息見圖7和圖8所示。

圖7 測試報告概覽

圖8 測試報告詳細信息
(2)提高了測試用例執行的可靠性,精確度高,無人為誤差。
(3)自動化測試具有復用性,可應用到單元測試和系統測試中。
(4)具有可擴展性,只需微小變動就可應用到云平臺項目的元素特性測試中。
本文主要介紹了HolliView項目動態交互特性自動化測試實現方法,依據HolliView離線編輯器界面架構,基于Python,通過注入JS腳本方式,突破了以往Canvas畫布元素難以定位的難題,既實現了離線自動化組態,又實現了在線元素特性功能自動驗證,既為HolliView項目其他功能的自動化測試實現奠定了基礎,也為其他相關項目的相關測試提供了思路,具有很高的實用價值。