張 旭,賀先建,鄧興陳,劉全東,賀先輝,金興連
(中國核動力研究設計院 核反應堆系統設計技術重點實驗室,成都 610213)
在DCS 工程測試過程中,通常采用另一套DCS 與其IO 互接,構成閉環系統方式進行測試。測試的依據是,作為測試裝置的DCS 為待測DCS 的輸入變量賦值,并讀取待測DCS 的輸出值,觀察與測試腳本的輸出預期值是否一致,這使DCS 組態驗證必須等待DCS 硬件設備集成完成后才能進行[1]。
通過類似方法,使用基于虛擬測試軟件的核安全級DCS 組態驗證方法,在驗證與確認(V&V)階段,通過使用系統性的測試腳本,觀察一組輸入值是否能夠得到輸出預期值,進而發現工程軟件組態的問題,可以在DCS 組態完成后,不依靠DCS 硬件設備進行。為下一階段的工廠測試(FT)與工程驗收測試(FAT)減少問題數量,節約時間。

表1 測試腳本示例Table 1 Example test script

圖1 基于測試裝置的DCS測試體系Fig.1 DCS Test system based on test equipment
根據工程實際需求,虛擬測試軟件應具有如下功能:
用例管理:虛擬測試軟件應用范圍覆蓋多個項目、多種測試,應具備良好的測試用例管理功能。
功能測試:虛擬測試軟件應能對接虛擬DCS,驅動腳本的執行。
通道檢查:即軟硬件設計一致性檢查,通過對比硬件設計的IO 分配清單與軟件設計的組態邏輯,發現軟硬件設計一致性方面的錯誤。
用例拆分:在實際工程中,對于記錄了運行結果的腳本文件需要打印存檔,當腳本本身過大,不能直接打印時,應按照特定的格式對腳本進行拆分。拆分分為多種情況,如總行數過多、總列數過多、行列總數都過多、輸入值行數過多、輸出值行數過多等。軟件應能夠對不同情況分別高效處理。
參考文獻[2]中介紹了采用TCP 協議對外接口的儀控仿真系統(虛擬DCS),通常的對外接口方式是接口采用調用動態鏈接庫(*.dll)的形式,即虛擬測試軟件加載虛擬DCS 的動態鏈接庫,獲取客戶端對象,再通過調用連接登錄接口,建立Socket 連接,進而實現指令、反饋與數據的交互。
如參考文獻[2]所述,在虛擬測試軟件運行的過程中,可能用到設置變量值接口(SetVariableValue)、獲取變量值接口(GetVariableValue)、獲取設備組態信息接口(GetDeviceConfig)、獲取站信息接口(GetStationsInfo)等。通過調用接口,借助其中封裝的TCP 協議實現與儀控仿真系統的交互。

圖2 虛擬測試軟件與虛擬DCS的接口關系圖Fig.2 Interface relationship between virtual test software and virtual DCS
以用例管理、功能測試、通道檢查功能,以及人機界面設計等角度,舉例說明虛擬測試軟件的設計過程。軟件選用C#語言開發,基于Windows Presentation Foundation(WPF,客戶端應用程序)模板實現軟件開發。同時,以C++語言編寫dll 格式的庫文件并調用,實現與虛擬DCS的接口格式轉換。
1.3.1 用例管理
用例管理主要涉及對Microsoft Excel 軟件的操作,使用“Microsoft.Office.Interop.Excel”COM 庫對Microsoft Excel格式的文件進行操作。調用格式為“using Microsoft.Office.Interop.Excel”。基于System.Windows.Forms.Open File Dialog類對文件的打開方式進行設計與管理。
用例管理包含新建項目、刪除項目、拆分用例以及增刪用例4 個功能,新建項目和刪除項目可將所有用例按照不同項目統籌分類;拆分用例用于將規模較大的用例拆分為多個標準行高列寬的A3 紙大小用例,便于打印與文件歸檔;增刪用例可修改各項目內所存儲的用例內容。
項目用例文件夾內會生成新建的項目文件,次級目錄下自動生成單體測試、集成測試、系統測試3 個文件夾,用于區分不同類型的用例。用戶也可以自行添加文件夾,項目名稱限制只能包含大小寫英文字母、數字和下劃線,且只能英文字母開頭。新建項目時系統會判斷輸入的項目名是否符合以上規則,如果符合則創建項目文件夾并自動生成單體、集成和系統分類用例夾;否則,創建失敗并提示錯誤信息。
1.3.2 功能測試
功能測試是檢驗輸入輸出通道是否有效、站間通訊功能是否準確、組態邏輯是否正確的基本測試功能項。通過用例預期值與軟件組態輸出實際值相對比的方式進行測試。
功能測試可通過測試界面查看測試情況,包括當前測試步驟、當前步驟延時時間、輸出結果是否正確以及測試時間進度條等信息。測試過程可通過按鈕來選擇測試方式,包括以步進、暫停和指定步驟的形式來針對不同情況進行測試。

圖3 指定步驟測試的流程圖Fig.3 Flow chart of the specified step test
步進模式下系統執行測試腳本中的一步即停止,如果在系統測試步進過程中點擊暫停,系統將執行完當前步后停止。若指定步進的步驟超出最大步數,或者停止步數小于開始步數,則不進行步進并提示錯誤信息;若步驟數有效,則執行步進操作。指定步驟運行是對步進操作的多次調用,軟件通過人機界面獲取待執行步驟的信息,按照測試腳本中指定的每一步延遲時間,多次調用步進函數,實現對腳本中指定步驟的運行。
由于腳本運行時間可能較長,在運行期間用戶可能對人機界面有其他操作,需要程序響應。同時,功能腳本執行過程中,給定輸入值之后應等待用戶設定的延時時間再獲取輸出值,該等待時間需要進度條控件進行顯示,因而單線程不能滿足實際需要,功能測試應在收到用戶發出測試命令后建立線程執行。
指定步驟測試的流程如圖3 所示。
同時,執行過后的測試報告可導出Excel 格式的文件,通過顏色與“√”表示執行結果正確與否,執行錯誤的步驟,實測值會與預期值顯示在同一單元格。
批量測試可以同時完成多個腳本的驗證,將需要測試的一系列用例批量導入到待測文件夾,啟動批量測試后即可進行批量用例的驗證。批量驗證過程依然能在系統主界面查看到實時驗證情況。
批量測試流程如圖5 所示。
1.3.3 通道檢查
通道檢查是為了驗證工程硬件設計與工程軟件設計的一致性。工程硬件的設計通過IO 分配清單體現,工程軟件的設計通過軟件組態體現。通過導入IO 清單并確定要檢查的Excel 文件的Sheet 頁,來驗證軟件組態與IO 清單是否一致。若不一致,則在輸出結果一欄顯示所有異常信息的錯誤描述。否則,進行下一項檢查。

圖4 功能測試導出報告Fig.4 Function test export report

圖5 批量測試流程圖Fig.5 Flow chart of batch test
1.3.4 人機界面設計

圖6 通道檢查流程圖Fig.6 Channel check flowchart
軟件的人機界面分為4 個區域,功能標簽選擇區、功能按鈕區、用例管理區、內容顯示區。功能標簽選擇區實現對應功能標簽的選擇,影響功能按鈕區出現的按鈕與其它控件。功能按鈕區包含該標簽對應功能所需的按鈕、文本框等需要操作或顯示的控件,以功能測試標簽為例,該功能需要按鈕控件作為“開始”“暫停”“步進”“導出報告”“批量導入”“批量測試”幾個功能的觸發事件入口點,需要文本框控件輸入“將要執行步數”“結束步數”,勾選框控件作為快速輸入首步、末步步數的方法,需要進度條控件顯示該步驟的執行情況。用例管理區用來顯示當前項目包含的用例文件夾與用例,可通過雙擊將用例顯示到內容顯示區。內容顯示區的區域面積最大,用來顯示用例內容、IO 清單內容、通道檢查錯誤報表等內容,根據功能標簽的切換狀態決定具體顯示內容。顯示用例時,該區域分為延時時間、輸入變量信息、輸出變量信息3 個子區域;顯示通道檢查內容時,該區域分為IO 清單顯示子區域和通道檢查錯誤項顯示區。

圖7 功能界面示意圖Fig.7 Functional interface diagram
以“華龍一號”DCS 工程樣機V&V 過程為例進行實例分析。導入測試用例,功能測試界面顯示如圖7 所示,可選擇運行用例中的指定步驟。
通過導入標準格式的IO 分配清單,界面顯示IO 分配信息,包括每個信息所在站號、槽號、通道號,以及該變量的信息,如工程量上限、下限、描述、單位、所在功能圖頁碼等。點擊“啟動檢查”,得到通道檢查的錯誤結果,也可導出Excel 格式的錯誤報告。

圖8 通道檢查界面示意圖Fig.8 Schematic diagram of channel inspection interface
基于虛擬測試軟件的核安全級DCS 組態驗證可提高V&V 過程的效率和準確性,在FT 與FAT 之前發現問題。同時,該軟件的使用推動V&V 過程從離散化的用例向系統性的腳本轉變,可提高FT 與FAT 腳本的編寫效率。