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