李峻 李鵬飛 周云波 蔣鑫偉
(威勝信息技術股份有限公司 湖南省長沙市 410205)
協議是設備間進行數據交換而建立的規(guī)則、標準或約定的集合。協議的實現者面對使用自然語言描述的標準協議,存在理解上的差異,會導致不同的協議實現,“協議測試”就是對協議實現進行識別,以驗證協議實現與標準協議的等價性的一種有效的測試方法。
國際上,協議的測試和認證一直都非常受重視,其中DLMS/COSEM UA測試認證和由伊斯卡、埃創(chuàng)、蘭吉爾發(fā)起的IDIS測試認證,都針對協議開展了專業(yè)的測試和認證。國內能源量測領域,雖然協議測試起步較晚,但近年來對協議測試的重視程度越來越高,測試方法已經由基本的功能和協議的集成測試,發(fā)展到單獨進行協議測試,且針對協議的測試研究已經有了系統的理論和方法,但測試系統還存在通用性不強、與設備功能測試重疊等問題。
隨著能源互聯網技術和業(yè)務的快速發(fā)展,應用場景日益繁多,新型的能源量測和采集設備層出不窮,而且能源量測和采集設備間的數據交換協議隨之更加靈活、復雜和可擴展性強,而傳統的協議測試方法已經難以滿足能源量測和采集設備及其數據交換協議快速發(fā)展的需要。
本文針對能源量測和采集設備間的數據交換協議,提出了兼顧測試充分性和測試方案實現效率的新型測試模型和方法,系統實現效果分析表明,相較于傳統的測試方法,新設計的測試系統明顯地提升了測試覆蓋率和測試方案實現效率。有助于推動能源互聯網的綠色高效發(fā)展,助力國家“雙碳”目標的實現。
協議測試屬于黑盒測試范疇,通常包括四種:一致性測試、互操作測試、魯棒性測試、性能測試。一致性測試是檢查被測設備與協議規(guī)范是否一致,是根據協議的標準文本描述對IUT(Implementation Under Test 被測實現)進行測試,判定IUT與對應的協議標準保持一致。一致性測試又可細分為靜態(tài)一致性測試和動態(tài)一致性測試。靜態(tài)一致性測試主要是評審IUT是否具備PICS(Protocol Implementation Conformance Statements 協議實現一致性聲明)的基本實現。動態(tài)一致性測試主要是驗證IUT的基本互連測試、能力測試、行為測試等?;ゲ僮餍詼y試是檢查被測設備在各個版本之間的互聯操作性和互通能力,以評價相同協議在不同設備之間能否正確的互通,且完成協議規(guī)范所規(guī)定的功能。魯棒性測試用來檢驗IUT在協議實現過程中,對異常數據的處理能力,保障IUT運行的安全性與可靠性。性能測試是檢測IUT的各種性能指標,如吞吐量、傳輸延遲、并發(fā)度、執(zhí)行速度、數據傳輸率等,測試結果與輸入的負載有關。
本文依據能源量測和采集設備間數據交換協議的應用場景,分析協議測試方法特征,從協議一致性、互操作性和魯棒性測試三個方面提取測試關鍵要素,設計了兩種協議測試模型;創(chuàng)新性提出了基于FSM(Finite State Machine 有限狀態(tài)機)模型的測試用例自動生成方法,測試系統動態(tài)生成測試用例,提升自動化測試水平,大幅度提高測試用例開發(fā)效率;并在系統構建中,大量應用了虛擬仿真技術,創(chuàng)建了支撐協議測試的虛擬仿真環(huán)境?;趨f議測試模型和用例生成方法的研究,保證了測試充分性,提高了測試環(huán)境構建效率。
依據《GB/T 17178.1信息技術開放系統互連一致性測試方法和框架》的描述,協議一致性測試方法一般分為本地測試法、分布式測試法、協調測試法、遠程測試法。這些方法基本都要求IUT與UT(Upper Tester 上測試器)、LT(Lower Tester 下測試器)、SUT(System Under Test 被測系統)等部件在同一個系統內,既無法完全滿足單一測試系統對IUT協議快速自動化的測試要求,也無法融入容錯測試用例的測試要求,分析總結能源物聯網應用場景和能源量測和采集設備間數據交換協議的特點后,設計了新型的一致性測試架構(見圖1)。
圖1:協議一致性測試架構
圖1中IUT是協議實體的被測實現,也就是需要被測試的協議對象。UT是上層測試器,指上層的測試軟件或硬件,對IUT的向上服務進行觀察與控制。LT是下層測試器,指下層的測試軟件或硬件,對IUT的向下服務進行觀察與控制。參考OSI七層模型定義,IUT是n層協議實體,UT屬于(n+1)層,通過PCO(Point of control and observation 控制觀察點)和IUT交換n層的ASP(Abstract Service Primitive抽象服務原語),LT屬于(n-1)層,通過PCO和IUT交換n-1層的抽象服務原語(n-1)ASP。PCO是測試系統和IUT之間的通信點。PR(Protocol Resolver 協議解析器)用于UT和LT之間,與IUT進行通信時,解析服務原語??紤]到協議報文的安全要求,參照渡船模型測試方法,在測試架構中增加了RT(Robust Tester 容錯測試器) 測試器,在協議通信過程中,由RT測試器對PDU(Protocol Data Unit協議數據單元)進行篡改、偽造或其他非正常操作,同時對返回進行監(jiān)聽與認證,以驗證協議交互過程的健壯性。
改進后的測試設計,能夠支持多種能源量測和采集設備間數據交換協議的測試,同時擴大了協議在異常場景下的容錯覆蓋,提升了協議測試能力。
協議互操作測試中,采用的是選擇經互操作認可的設備來與被測設備進行互操作測試,認可設備可能是單獨的認證設備或多個認證設備的組合。但是測試系統和被測系統獨立地存在于不同的系統之中,要監(jiān)視被測系統之間通過(n-1)SP進行的通信,測試系統必需能夠監(jiān)聽(n-1)SP的通信,設計層級復雜,而且測試器分布于各個被測系統之中,它們之間協調過程的同步難以保證。
因此在測試架構中引入了經過認證的虛擬仿真能源量測和采集設備,作為互操作性測試中測試器節(jié)點。測試模型見圖2所示。
圖2中,同時存在UTD(Upper Test Driver 上測試驅動器)和LTD(Lower Test Driver下測試驅動器),測試驅動器是可以執(zhí)行特定測試步驟的自動測試系統,能夠在功能層次對IUT進行控制與觀察。通信線路上設置Control控制器,可以對線路上的通信報文,進行監(jiān)控與控制。測試驅動器中使用多個經過認可的虛擬仿真能源量測和采集設備QE(Qualified Equipment 認證設備),QE完全由代碼實現,獨立封裝成類,方便實例化與復用。
圖2:協議互操作性測試架構
目前能源量測和采集設備眾多,若搭建真實應用環(huán)境進行測試,建設及維護工作量大,場地面積占用多。因此,利用虛擬仿真技術,能快速搭建測試場景,滿足了對IUT多維度的互操作性測試,并保證互操作性測試環(huán)境構建效率。
根據設計的協議一致性和互操作性測試模型開展測試,還需要完整的測試過程來確保測試覆蓋率。目前的協議測試中,普遍生成測試序列方法是根據被測協議的規(guī)范,結合等價類劃分法、因果圖法等成熟的測試用例設計規(guī)則,手動設計測試用例集并開展測試,根據用例集驗證結果來評估協議實現的正確性和完整性。該方法簡單易實現,但是往往存在用例設計開發(fā)時間長,測試覆蓋率較低等問題。
通過分析協議的關鍵要素,認為能源量測和采集設備間的數據交換協議具有測試對象多、狀態(tài)轉換復雜的特點,應采用FSM模型來梳理狀態(tài)遷移過程,結合協議測試類型與協議測試數據結構以及PR協議解析器,通過自動建模方法,完成FSM建模,將模型解析為可執(zhí)行用例,從而保證測試用例設計的邏輯性和全面性。
FSM模型是被廣泛用于描述有限狀態(tài)機從一種狀態(tài)過渡到另一種狀態(tài)的數學模型。FSM模型定義了一個五元數組{X,I,O,N,M}。如下所示:
X表示狀態(tài)的有限集合,有限狀態(tài)機的含義就表示著X是有限的,如果X是無限的,稱為圖靈機;I表示輸入的有限集合;O表示輸出的有限集合,且O?X;N表示狀態(tài)變遷函數;M表示輸出函數。FSM模型的核心思想在于狀態(tài)遷移,表示存在一個初始狀態(tài)Xn,經過有限條件輸入或事件發(fā)生In,而遷移到另外一個狀態(tài)Xn+1的過程。
以協議測試中部分場景為例。測試主站為UT,用能量測設備為IUT,仿真電能表設備為LT。在正常連接初始狀態(tài)下,檢測系統觸發(fā)輸入條件I,IUT和LT從狀態(tài)X,遷移到狀態(tài)X,并輸出結果O。根據測試場景,依次觸發(fā)輸入條件,直到遷移到最終狀態(tài)X,輸出測試結果。IUT的狀態(tài)遷移圖,如圖3所示。
圖3:狀態(tài)遷移圖
(1)IUT處于初始狀態(tài),即正常連接組網狀態(tài),進行不規(guī)則的建立檔案操作,IUT狀態(tài)未進行遷移。
(2)IUT處于初始狀態(tài),進行規(guī)則的建立檔案操作,檔案建立成功,且檔案與LT對應,IUT狀態(tài)遷移到檔案等待狀態(tài)。
(3)IUT處于檔案等待狀態(tài),IUT向LT發(fā)出正確的讀取/設置對象屬性請求幀,LT正確響應,IUT狀態(tài)遷移為獲取正常讀取/設置返回。
(4)IUT處于檔案等待狀態(tài),IUT向LT發(fā)出異常的讀取/設置對象屬性請求幀(如幀結構異常、傳輸規(guī)則異常、應用服務標記異常),LT拒絕響應或回復帶錯誤標記的響應,IUT狀態(tài)遷移為獲取非正常讀取/設置返回。
(5)IUT處于檔案等待狀態(tài),IUT向LT發(fā)出讀取/設置對象屬性請求幀,幀報文被RT模塊截取,狀態(tài)遷移為RT容錯。
(6)狀態(tài)處于RT容錯,RT模塊對幀報文進行多余插入、錯誤篡改、部分刪除等容錯操作,并向LT發(fā)送容錯請求幀,LT拒絕響應或回復帶錯誤標記的響應,IUT狀態(tài)遷移為獲取非正常讀取/設置返回。
(7)IUT處于檔案等待狀態(tài),LT向IUT發(fā)出正確的上報對象屬性請求幀,LT正確響應,IUT狀態(tài)遷移為獲取正常上報信息。
(8)IUT處于檔案等待狀態(tài),LT向IUT發(fā)出上報對象屬性請求幀,幀報文被RT模塊截取,狀態(tài)遷移為RT容錯。
(9)狀態(tài)處于RT容錯,RT模塊對幀報文容錯操作,并向IUT上報容錯請求幀,IUT拒絕響應或回復帶錯誤標記的響應。
(10)LT向IUT發(fā)出異常的上報對象屬性請求幀,IUT拒絕響應或回復帶錯誤標記的響應。
圖示狀態(tài)遷移,能夠覆蓋協議的一致性測試與互操作測試,適用協議的應用數據傳輸測試、應用服務標記測試,滿足量測對象的各類測試需求。
根據上述FSM模型狀態(tài)遷移特征,可設計出測試用例自動生成的方法,該方法能夠依據協議描述(典型的描述方法是采用ASN.1語法描述)及測試用例規(guī)范,按照測試用例數據類型的映射規(guī)則和測試用例行為映射規(guī)則,自動完成測試用例的數據模型構建,采用測試用例數據模型對測試用例文本進行標注,生成形式化的測試用例,該測試用例可以被測試系統自動解析,生成可執(zhí)行的測試用例對象,實現測試用例的自動生成。
上述基于FSM模型的測試用例自動生成方法,能夠在保證測試覆蓋充分性的前提下,大幅度提高測試用例的實現效率。
基于上述協議一致性測試模型和協議互操作性測試模型,設計并實現完整的協議測試系統。該協議測試系統主要由測試系統、能源量測和采集設備及其仿真設備組成。設備是數據交換協議的載體,即被測對象IUT。如圖4所示。
圖4:協議測試系統框架圖
測試系統主要完成測試控制調度、協議建模、測試用例自動生成、提供協議解析、構建容錯場景、虛擬QE等功能。測試控制調度是測試系統的總控制,控制整個系統的閉環(huán)測試過程,管理與被測對象IUT之間的交互,UTD和LTD仿真設備的認證。
測試系統采用微服務軟件架構實現,將設計的協議測試模型,劃分成測試控制服務、用例建模與自生成服務、協議解析服務、測試執(zhí)行服務、容錯測試服務、虛擬仿真設備服務等互相協調、互相配合的微服務體系。每個微服務圍繞具體業(yè)務進行構建,并且能夠獨立的部署和運行。
用例建模與自生成服務,能夠自動生成狀態(tài)遷移模型,覆蓋所有正常規(guī)約狀態(tài)遷移和異常規(guī)約狀態(tài)遷移,在保證用例場景的最大覆蓋情況下,提升了用例設計與開發(fā)效率,相比傳統的測試系統,能在減少用例設計與開發(fā)耗時的同時,增加用例的輸出。
規(guī)約解析服務,能夠完成服務原語到具體規(guī)約報文的解析,支持當前主流的能源量測和采集設備間數據交換協議,且獨立運行、自由拓展,能夠提高IUT設備準入范圍。
容錯測試服務,通過篡改、偽造或其他非正常操作,能夠輔助異常容錯的測試實現,驗證協議的健壯性,提升容錯測試覆蓋。
虛擬仿真設備服務,能滿足協議快速自動化測試的要求,提高了互操作性的效率,全面覆蓋了協議支持的設備類型,減少了真實設備不可控因素的干擾,新協議測試系統,實現了常見的能源量測和采集設備的接入和測試,也預留了接口便于后續(xù)新型能源量測和采集設備的接入。
協議測試系統自動測試流程,可以分以下步驟實現,如圖5所示。
圖5:協議測試實現模型
(1)將被測協議定義的數據結構類型進行分類,必要時進行拆分,采用ASN.1語法進行描述,形成測試用例的數據結構;
(2)結合步驟S1的用例規(guī)范,對用例行為和步驟2的數據結構進行一一映射與擴展,形成測試用例的FSM模型;
(3)根據測試用例規(guī)范,編制PICS,結合已生成的FSM模型,生成ATS(Abstract Test Suite 抽象測試套);
(4)結合高級程序語言的特性,引用面向對象思想,設計適配測試用例模型的解析器,將ATS抽象測試套解析成PETS(Parameterization Executable Test Suite參數化可執(zhí)行測試套);
(5)使用測試引擎,執(zhí)行PETS可執(zhí)行測試套,進行相應的協議一致性檢測和協議互操作檢測,得出相應的協議一致性結果和協議互操作結果,分析結果之后,輸出PCTR(Protocol Conformance Test Report協議一致性測試報告)。
對比原有的IEC 62056和DL/T 698.45等協議的傳統測試系統,本文提出的協議測試系統能同時支持多種能源量測和采集設備,可以模擬仿真更為復雜的現場應用場景用于測試,對于異常場景下的容錯測試能力更強。測試用例自動生成技術和虛擬仿真技術時協議測試的覆蓋面更廣且測試方案的構建更為方便快捷。
針對協議測試實現過程中用例設計、用例開發(fā)、系統實現、環(huán)境建設等各測試階段進行耗時統計分析,如表1所示。相較于傳統的測試方法,本文提出的測試方法明顯地減少了測試實現耗時,提升了測試方案實現效率。
表1:測試方案實現效率分析
本文針對量測數據交換協議設計了協議一致性和互操作性測試模型,并使用了一種基于FSM模型的測試用例自動生成方法,在協議測試覆蓋率上實現了優(yōu)化,提升了檢測效率,驗證了協議的正確性。但是所設計的架構主要應用于功能測試,只能基于模型做基本的性能校驗,在面向數據傳輸率、聯接時間、執(zhí)行速度、吞吐量、并發(fā)度等復雜場景的性能指標的測試略有不足,在今后的測試應用中還需繼續(xù)研究,優(yōu)化性能設計,彌補設計短板。