0 引言
繼電保護(hù)及自動(dòng)裝置是電力系統(tǒng)的重要組成部分。對(duì)保證電力系統(tǒng)的安全經(jīng)濟(jì)運(yùn)行,防止事故發(fā)生和擴(kuò)大起到關(guān)鍵性的決定作用。由于電力系統(tǒng)的特殊性,電氣故障的發(fā)生是不可避免的。一旦發(fā)生局部電網(wǎng)和設(shè)備事故而得不到有效控制,就會(huì)造成對(duì)電網(wǎng)穩(wěn)定的破壞和大面積停電事故?,F(xiàn)代化大電網(wǎng)對(duì)繼電保護(hù)的依賴性更強(qiáng),對(duì)其動(dòng)作正確率的要求更高,也造成了對(duì)繼電保護(hù)裝置的測(cè)試要求越來(lái)越高。
各大繼電保護(hù)的廠家對(duì)保護(hù)裝置的測(cè)試也非常重視,基本上采用的都是黑盒測(cè)試的方法,通過(guò)測(cè)試人員和工程人員采用商用測(cè)試儀進(jìn)行加量進(jìn)行閉環(huán)的保護(hù)功能測(cè)試,這種測(cè)試方式雖然能檢查出一部分系統(tǒng)的漏洞,但是遠(yuǎn)遠(yuǎn)達(dá)不到對(duì)于可靠性要求極高的繼電保護(hù)裝置的測(cè)試要求。并且數(shù)字化的測(cè)試依賴于外部的數(shù)字化測(cè)試儀[1]。這種測(cè)試方法的不足體系在以下幾點(diǎn):
1)無(wú)法進(jìn)行軟件平臺(tái)的各模塊代碼覆蓋率測(cè)試。
2)無(wú)法進(jìn)行系統(tǒng)的自動(dòng)回歸測(cè)試。
3)無(wú)法進(jìn)行自動(dòng)測(cè)試用例管理,測(cè)試質(zhì)量由測(cè)試人員的專業(yè)素質(zhì)決定,而不是由各測(cè)試和開發(fā)人員的測(cè)試積累組成。
4)無(wú)法規(guī)范地進(jìn)行測(cè)試報(bào)告記錄,不能詳細(xì)記錄研發(fā)人員關(guān)心的測(cè)試量信息。
5)商用測(cè)試儀不能與保護(hù)裝置進(jìn)行交互。
鑒于傳統(tǒng)測(cè)試的上述問(wèn)題,設(shè)計(jì)了一種滿足研發(fā)人員、人員以及工程人員使用的統(tǒng)一測(cè)試體系,該測(cè)試體系包括上位機(jī)、測(cè)試儀和被測(cè)裝置,覆蓋了研發(fā)階段和單板測(cè)試階段以及整機(jī)測(cè)試各階段。
*近兩年,也有一些裝置廠家[2-4]也通過(guò)自主研發(fā)開發(fā)一套適合自身產(chǎn)品的自動(dòng)測(cè)試系統(tǒng),但是目前這些測(cè)試也集中在保護(hù)功能的閉合測(cè)試上,沒有考慮裝置中平臺(tái)部分的功能隱蔽性,一般功能測(cè)試很難系統(tǒng)地對(duì)其進(jìn)行邏輯測(cè)試。本文將重點(diǎn)介紹自動(dòng)測(cè)試系統(tǒng)中的白盒測(cè)試實(shí)現(xiàn)方法。
1 系統(tǒng)結(jié)構(gòu)
保護(hù)裝置的軟硬件體系結(jié)構(gòu)圖如圖 1 所示。
測(cè)試主機(jī)的功能分成兩個(gè)部分,離線功能包括完成測(cè)試用例的編寫、測(cè)試用例的管理、測(cè)試用例程序編譯等離線功能。在線功能包括測(cè)試用例下載,測(cè)試參數(shù)下載,測(cè)試命令發(fā)送和測(cè)試報(bào)告生成等。平臺(tái)系統(tǒng)軟件包含下面模塊:任務(wù)調(diào)度、系統(tǒng)監(jiān)視、對(duì)時(shí)、異常處理、調(diào)試及下載模塊。平臺(tái)管理通信模塊包括:MANAGER 管理、事件錄波、IEC103 模塊、IEC61850 模塊;LCD 模塊;PRINT模塊。平臺(tái)裝置的板卡通常由三大部分組成:管理CPU 板、計(jì)算處理 CPU/DSP 板和 I/O 板。
測(cè)試主機(jī)通過(guò)以太網(wǎng)采用內(nèi)部通信的協(xié)議與調(diào)試代理插件相連,調(diào)試代理駐留在 PPC 插件上,內(nèi)部通信協(xié)議具有下載文件、調(diào)試變量、修改變量等功能。整個(gè)測(cè)試過(guò)程的上位機(jī)與裝置的交互都是以該協(xié)議為基礎(chǔ)。
自動(dòng)測(cè)試系統(tǒng)和平臺(tái)設(shè)計(jì)同時(shí)進(jìn)行,完成對(duì)平臺(tái)的軟件模塊和通信管理模塊的自動(dòng)測(cè)試,并將測(cè)試結(jié)果直觀地反映到測(cè)試終端。
2 白盒測(cè)試架構(gòu)
白盒測(cè)試時(shí)需要保護(hù)裝置運(yùn)行一個(gè)測(cè)試支撐系統(tǒng),白盒測(cè)試包括測(cè)試裝置中所有智能插件上的程序,尤其是平臺(tái)系統(tǒng)軟件程序,這部分程序在整組的功能測(cè)試實(shí)驗(yàn)(黑盒測(cè)試)中不是測(cè)試重點(diǎn),所以需要通過(guò)周密的白盒測(cè)試來(lái)覆蓋測(cè)試路徑。測(cè)試支撐系統(tǒng)運(yùn)行在 Manager 插件上。
目標(biāo)板上的測(cè)試支撐模塊包括測(cè)試用例運(yùn)行管理、PC 通信管理、測(cè)試運(yùn)行信息采集及管理、系統(tǒng)信息處理、信息上送等模塊。測(cè)試用例運(yùn)行管理是運(yùn)行在目標(biāo)板上與 PC 機(jī)同步執(zhí)行同一測(cè)試用例的管理程序;PC 通信管理是與 PC 機(jī)通信,接收 PC下發(fā)的參數(shù)信息,下載的程序信息、啟停測(cè)試用例命令和測(cè)試數(shù)據(jù)上送等功能;測(cè)試運(yùn)行信息采集及管理是指采集某一個(gè)測(cè)試用例執(zhí)行后的一些變量數(shù)據(jù)信息,組織成特定的數(shù)據(jù)報(bào)文;系統(tǒng)信息處理是目標(biāo)板上的其他應(yīng)用模塊,當(dāng)這一測(cè)試用例運(yùn)行時(shí)其他應(yīng)用模塊的數(shù)據(jù)信息采集(例如 SOE 事件測(cè)試用例會(huì)收集 103 模塊的報(bào)文信息);信息上送是通過(guò)組織報(bào)文發(fā)送到 PC 機(jī),由 PC 機(jī)進(jìn)行結(jié)果比對(duì)。
運(yùn)行在 Manager 插件上的測(cè)試用例的測(cè)試流程如圖 2 所示。
**步:PC 測(cè)試主機(jī)下載 ppc 測(cè)試用例可執(zhí)行程序 out 到目標(biāo)板上。
**步:PC 測(cè)試主機(jī)發(fā)送啟動(dòng)測(cè)試命令到測(cè)試代理。
第三步:測(cè)試代理裝載測(cè)試用例程序。
第四步:PC 測(cè)試主機(jī)啟動(dòng)主機(jī)上運(yùn)行的相應(yīng)測(cè)試 dll。
第五步:目標(biāo)板上測(cè)試用例測(cè)試過(guò)程中,與 PC機(jī)上對(duì)應(yīng)的比對(duì) dll 進(jìn)行參數(shù)以及測(cè)試結(jié)果交換。
第六步:PC 機(jī)對(duì)結(jié)果進(jìn)行比對(duì),形成測(cè)試報(bào)告。
運(yùn)行在其他智能 IO 上的測(cè)試用例框架結(jié)構(gòu)如圖3 所示。
測(cè)試用例運(yùn)行在從板上時(shí),測(cè)試用例目標(biāo)文件首先下載到 Manager 系統(tǒng)中,重新上電后加載到從、板中運(yùn)行。MANAGER 負(fù)責(zé)與從板系統(tǒng)的信息交互。
平臺(tái)模塊在設(shè)計(jì)時(shí),設(shè)計(jì)了測(cè)試代理程序的接口,確保測(cè)試代理程序可以通過(guò)該接口進(jìn)行功能測(cè)試和性能評(píng)估。該代理程序通過(guò)平臺(tái)的測(cè)試接口,實(shí)現(xiàn)對(duì)平臺(tái)代碼的測(cè)試,并通過(guò)網(wǎng)絡(luò)通信將測(cè)試結(jié)果上送給測(cè)試終端。同時(shí)通過(guò)網(wǎng)絡(luò)接收測(cè)試終端的測(cè)試用例,并根據(jù)給定的測(cè)試用例進(jìn)行相關(guān)測(cè)試。運(yùn)行在裝置中的每個(gè)模塊在設(shè)計(jì)初期即考慮了測(cè)試方案,通過(guò)自動(dòng)測(cè)試系統(tǒng)可確保測(cè)試的代碼覆率達(dá)到 90%以上。有效的壓力測(cè)試可以發(fā)現(xiàn)并解決平臺(tái)的隱藏問(wèn)題,為平臺(tái)的可靠性及穩(wěn)定性提供了保證。
3 測(cè)試框架實(shí)現(xiàn)
測(cè)試系統(tǒng)上位機(jī)的主要功能有:測(cè)試用例管理,測(cè)試用例的執(zhí)行流程、測(cè)試結(jié)果比對(duì)和測(cè)試報(bào)告生成四個(gè)模塊。
3.1 測(cè)試用例管理
測(cè)試用例管理包括:1)對(duì)測(cè)試時(shí)所需要的源代碼的管理,需要鏈接的庫(kù)和 obj 文件的管理;2)生成 hex 文件;3)界面模板 tpl 文件;4)測(cè)試用例tpl 文件的管理。
保護(hù)裝置的測(cè)試打樁程序以源程序的形式保存在上位機(jī)中,當(dāng)用戶選擇某個(gè)測(cè)試用例時(shí),需要編譯對(duì)應(yīng)的 c 文件和鏈接相應(yīng)的庫(kù),生成 obj 文件,一組測(cè)試用例生成一個(gè).out 或者一個(gè) hex 執(zhí)行文件下載到目標(biāo)板中??紤]到目標(biāo)系統(tǒng)的空間大小,一次全測(cè)試過(guò)程可以生成多個(gè) hex 文件,在測(cè)試過(guò)程中分別下載。
下位機(jī)上執(zhí)行的每一種類型的測(cè)試用例需要在上位機(jī)中配置一個(gè)解析該測(cè)試用例的比對(duì)程序,比對(duì)程序以 dll 的形式駐留在上位機(jī)中,當(dāng)上位機(jī)啟動(dòng)下位機(jī)某一個(gè)測(cè)試用例的同時(shí),需要裝載相對(duì)應(yīng)的比對(duì) dll。該比對(duì) dll 負(fù)責(zé)與下位機(jī)測(cè)試用例進(jìn)行交互,得到測(cè)試結(jié)果返回給上位機(jī)測(cè)試報(bào)告模塊,統(tǒng)一形成測(cè)試報(bào)告。
一個(gè) hex 文件中包含了多個(gè)測(cè)試用例,測(cè)試用例的啟動(dòng)是通過(guò)上位機(jī)來(lái)啟動(dòng)的,上位機(jī)告訴下位機(jī)現(xiàn)在執(zhí)行某個(gè)測(cè)試用例,這樣保證了上位機(jī)測(cè)試比對(duì)程序與下位機(jī)測(cè)試用例的一致性。當(dāng)用例配置完成后,根據(jù)所配置的測(cè)試用例和測(cè)試用例的執(zhí)行順序生成測(cè)試用例入口源程序,并鏈接測(cè)試函數(shù)和系統(tǒng)庫(kù)函數(shù),生成 hex 文件。
例如:在***.tpl 文件中,配置了測(cè)量量、CAN網(wǎng)、和事件 3 個(gè)測(cè)試點(diǎn),測(cè)量并配置了刷新測(cè)試項(xiàng)和置值測(cè)試項(xiàng),且 3 個(gè)測(cè)試點(diǎn)均在 DSP 板上運(yùn)行。
生成的 init.c 源代碼為Init(uint8 testcase){ switch(testcase)Case 1:
SetMeasureValue(**,**,**);//測(cè)量量置值用例Break;Case 2:
P=SetMeasureByTimer(**,**,**) //p 為定時(shí)器中斷的函數(shù)指針Break;Case 3:
P= sendMessage (**,**,**) //CAN 網(wǎng)發(fā)送……………}
該測(cè)試用例入口函數(shù)由上位機(jī)生成,上位機(jī)通過(guò)內(nèi)部調(diào)試協(xié)議修改下位機(jī)變量 testcase 來(lái)控制測(cè)試用例的啟動(dòng),通過(guò)修改參數(shù)變量的值,來(lái)傳遞函數(shù)的參數(shù)。當(dāng)生成源碼后,需要在 makefile 中添加鏈接 init.o、以及各測(cè)試函數(shù)所在的.o 文件,生成一個(gè) hex 文件。
界面模板的 tpl 管理是指為了實(shí)現(xiàn)參數(shù)配置,界面風(fēng)格是通過(guò)用戶根據(jù)測(cè)試項(xiàng)自定義的,本測(cè)試框架程序提供了一套可視化界面配置前端程序提供給用戶配置自定義的參數(shù)界面,配置后生成 tpl 文件,由測(cè)試工具解析顯示相應(yīng)的界面。
3.2 測(cè)試流程管理
流程控制功能包括以下兩個(gè)方面。
1)流程控制的配置
執(zhí)行順序表示測(cè)試項(xiàng)的順序執(zhí)行順序。
異??刂票硎驹摐y(cè)試項(xiàng)如果不正確執(zhí)行,是繼續(xù)執(zhí)行、退出執(zhí)行或者跳轉(zhuǎn)執(zhí)行。
表示該測(cè)試項(xiàng)測(cè)試前是否具有初始化操作、測(cè)試完成后是否需要復(fù)位操作、斷開連接并重建連接操作,是否具有重新下載程序等操作。這些流程控制的配置信息在配置完成后都是以模板配置的形式保存在 PC 上位機(jī)中。
2)流程的自動(dòng)控制
配置完測(cè)試用例的執(zhí)行順序后,系統(tǒng)根據(jù)配置信息,進(jìn)行自動(dòng)執(zhí)行。
3.3 測(cè)試結(jié)果的比對(duì)
測(cè)試結(jié)果的回送通過(guò)兩種方式:通過(guò)通信端口報(bào)文回送到 PC 機(jī)進(jìn)行回讀判斷,通過(guò) PC 機(jī)讀取變量的形式讀測(cè)試結(jié)果。
測(cè)試結(jié)果比對(duì)由測(cè)試用例對(duì)應(yīng)的 dll 完成,將測(cè)試結(jié)果的詳細(xì)信息送到測(cè)試報(bào)告模塊。
3.4 測(cè)試報(bào)告生成
在測(cè)試過(guò)程中,對(duì)于每個(gè)測(cè)試項(xiàng)會(huì)有一個(gè)簡(jiǎn)單的結(jié)論,在測(cè)試完成后,生成一個(gè)詳細(xì)的測(cè)試報(bào)告。測(cè)試報(bào)告中的詳細(xì)信息,需要在測(cè)試比較模塊主動(dòng)向測(cè)試報(bào)告的數(shù)據(jù)結(jié)構(gòu)輸入,生成測(cè)試用例時(shí),按照一定的格式,生成測(cè)試報(bào)告。
4 CAN 網(wǎng)測(cè)試舉例
上文大篇幅地闡述了白盒測(cè)試的實(shí)現(xiàn)方法,如何通過(guò)白盒測(cè)試體系架構(gòu)來(lái)實(shí)現(xiàn)測(cè)試覆蓋率,進(jìn)行各種邊緣測(cè)試、壓力測(cè)試以及負(fù)荷測(cè)試等具體功能及性能測(cè)試則依賴于測(cè)試用例的編寫以及實(shí)現(xiàn)上。
下面以 CAN 網(wǎng)測(cè)試為例,進(jìn)行網(wǎng)絡(luò)壓力測(cè)試、CPU 負(fù)荷測(cè)試、疲勞測(cè)試及持久性測(cè)試。測(cè)試平臺(tái)的基本架構(gòu)如圖 4 所示。
CAN1 驅(qū)動(dòng)模塊測(cè)試的單次測(cè)試過(guò)程為
1)PC 機(jī)通過(guò)調(diào)試變量下裝參數(shù)/控制命令到PPC 板和 GOOSE 板;
2)PPC 板或 GOOSE 板讀取到控制命令后,啟動(dòng)[CAN1 測(cè)試程序];
3)在[CAN1 測(cè)試程序]的執(zhí)行過(guò)程中,PPC 板或 GOOSE 板向 CAN1 網(wǎng)發(fā)、收數(shù)據(jù);
4)PPC 或 GOOSE 板將[CAN1 測(cè)試程序]的執(zhí)行結(jié)果通過(guò)調(diào)試變量返回到 PC 機(jī);
5)PC 機(jī)利用返回的調(diào)試變量值驗(yàn)證測(cè)試結(jié)果。
在測(cè)試用例中對(duì) CAN 網(wǎng)收發(fā)程序的語(yǔ)句進(jìn)行靜態(tài)分析,對(duì)條件判斷等邏輯分支進(jìn)行測(cè)試覆蓋,在一次測(cè)試用例中發(fā)送雙方發(fā)送各種異常/正確報(bào)文,使測(cè)試能夠覆蓋 CAN 網(wǎng)模塊的所有語(yǔ)句。
連續(xù)進(jìn)行多次 CAN 網(wǎng)測(cè)試,從每秒 1 000 幀連續(xù)發(fā)送10 s 到每秒10 000幀連續(xù)發(fā)送10 s 進(jìn)行遞增,對(duì)每次測(cè)試過(guò)程中,通過(guò)裝置中變量來(lái)記錄測(cè)試的信
息,然后將這些測(cè)試過(guò)程信息上送到 PC 機(jī),由 PC機(jī)得出 CAN 網(wǎng)的穩(wěn)定性能時(shí)負(fù)荷值等重要參數(shù)。
5 結(jié)論
在ARP保護(hù)裝置系統(tǒng)中設(shè)計(jì)了一整體測(cè)試系統(tǒng),不僅包括白盒測(cè)試來(lái)測(cè)試系統(tǒng)程序或者應(yīng)用程序,還包括整機(jī)測(cè)試和整屏系統(tǒng)。整機(jī)和整屏系統(tǒng)是閉環(huán)功能測(cè)試系統(tǒng),但都融于本文介紹的這套測(cè)試體系框架之內(nèi)。這套測(cè)試系統(tǒng)為裝置的出廠測(cè)試、現(xiàn)場(chǎng)測(cè)試提供了很大的便利。