張 旭,賀先建,鄧興陳,劉全東,賀先輝,金興連
(中國核動力研究設(shè)計(jì)院 核反應(yīng)堆系統(tǒng)設(shè)計(jì)技術(shù)重點(diǎn)實(shí)驗(yàn)室,成都 610213)
在DCS 工程測試過程中,通常采用另一套DCS 與其IO 互接,構(gòu)成閉環(huán)系統(tǒng)方式進(jìn)行測試。測試的依據(jù)是,作為測試裝置的DCS 為待測DCS 的輸入變量賦值,并讀取待測DCS 的輸出值,觀察與測試腳本的輸出預(yù)期值是否一致,這使DCS 組態(tài)驗(yàn)證必須等待DCS 硬件設(shè)備集成完成后才能進(jìn)行[1]。
通過類似方法,使用基于虛擬測試軟件的核安全級DCS 組態(tài)驗(yàn)證方法,在驗(yàn)證與確認(rèn)(V&V)階段,通過使用系統(tǒng)性的測試腳本,觀察一組輸入值是否能夠得到輸出預(yù)期值,進(jìn)而發(fā)現(xiàn)工程軟件組態(tài)的問題,可以在DCS 組態(tài)完成后,不依靠DCS 硬件設(shè)備進(jìn)行。為下一階段的工廠測試(FT)與工程驗(yàn)收測試(FAT)減少問題數(shù)量,節(jié)約時間。
表1 測試腳本示例Table 1 Example test script
圖1 基于測試裝置的DCS測試體系Fig.1 DCS Test system based on test equipment
根據(jù)工程實(shí)際需求,虛擬測試軟件應(yīng)具有如下功能:
用例管理:虛擬測試軟件應(yīng)用范圍覆蓋多個項(xiàng)目、多種測試,應(yīng)具備良好的測試用例管理功能。
功能測試:虛擬測試軟件應(yīng)能對接虛擬DCS,驅(qū)動腳本的執(zhí)行。
通道檢查:即軟硬件設(shè)計(jì)一致性檢查,通過對比硬件設(shè)計(jì)的IO 分配清單與軟件設(shè)計(jì)的組態(tài)邏輯,發(fā)現(xiàn)軟硬件設(shè)計(jì)一致性方面的錯誤。
用例拆分:在實(shí)際工程中,對于記錄了運(yùn)行結(jié)果的腳本文件需要打印存檔,當(dāng)腳本本身過大,不能直接打印時,應(yīng)按照特定的格式對腳本進(jìn)行拆分。拆分分為多種情況,如總行數(shù)過多、總列數(shù)過多、行列總數(shù)都過多、輸入值行數(shù)過多、輸出值行數(shù)過多等。軟件應(yīng)能夠?qū)Σ煌闆r分別高效處理。
參考文獻(xiàn)[2]中介紹了采用TCP 協(xié)議對外接口的儀控仿真系統(tǒng)(虛擬DCS),通常的對外接口方式是接口采用調(diào)用動態(tài)鏈接庫(*.dll)的形式,即虛擬測試軟件加載虛擬DCS 的動態(tài)鏈接庫,獲取客戶端對象,再通過調(diào)用連接登錄接口,建立Socket 連接,進(jìn)而實(shí)現(xiàn)指令、反饋與數(shù)據(jù)的交互。
如參考文獻(xiàn)[2]所述,在虛擬測試軟件運(yùn)行的過程中,可能用到設(shè)置變量值接口(SetVariableValue)、獲取變量值接口(GetVariableValue)、獲取設(shè)備組態(tài)信息接口(GetDeviceConfig)、獲取站信息接口(GetStationsInfo)等。通過調(diào)用接口,借助其中封裝的TCP 協(xié)議實(shí)現(xiàn)與儀控仿真系統(tǒng)的交互。
圖2 虛擬測試軟件與虛擬DCS的接口關(guān)系圖Fig.2 Interface relationship between virtual test software and virtual DCS
以用例管理、功能測試、通道檢查功能,以及人機(jī)界面設(shè)計(jì)等角度,舉例說明虛擬測試軟件的設(shè)計(jì)過程。軟件選用C#語言開發(fā),基于Windows Presentation Foundation(WPF,客戶端應(yīng)用程序)模板實(shí)現(xiàn)軟件開發(fā)。同時,以C++語言編寫dll 格式的庫文件并調(diào)用,實(shí)現(xiàn)與虛擬DCS的接口格式轉(zhuǎn)換。
1.3.1 用例管理
用例管理主要涉及對Microsoft Excel 軟件的操作,使用“Microsoft.Office.Interop.Excel”COM 庫對Microsoft Excel格式的文件進(jìn)行操作。調(diào)用格式為“using Microsoft.Office.Interop.Excel”?;赟ystem.Windows.Forms.Open File Dialog類對文件的打開方式進(jìn)行設(shè)計(jì)與管理。
用例管理包含新建項(xiàng)目、刪除項(xiàng)目、拆分用例以及增刪用例4 個功能,新建項(xiàng)目和刪除項(xiàng)目可將所有用例按照不同項(xiàng)目統(tǒng)籌分類;拆分用例用于將規(guī)模較大的用例拆分為多個標(biāo)準(zhǔn)行高列寬的A3 紙大小用例,便于打印與文件歸檔;增刪用例可修改各項(xiàng)目內(nèi)所存儲的用例內(nèi)容。
項(xiàng)目用例文件夾內(nèi)會生成新建的項(xiàng)目文件,次級目錄下自動生成單體測試、集成測試、系統(tǒng)測試3 個文件夾,用于區(qū)分不同類型的用例。用戶也可以自行添加文件夾,項(xiàng)目名稱限制只能包含大小寫英文字母、數(shù)字和下劃線,且只能英文字母開頭。新建項(xiàng)目時系統(tǒng)會判斷輸入的項(xiàng)目名是否符合以上規(guī)則,如果符合則創(chuàng)建項(xiàng)目文件夾并自動生成單體、集成和系統(tǒng)分類用例夾;否則,創(chuàng)建失敗并提示錯誤信息。
1.3.2 功能測試
功能測試是檢驗(yàn)輸入輸出通道是否有效、站間通訊功能是否準(zhǔn)確、組態(tài)邏輯是否正確的基本測試功能項(xiàng)。通過用例預(yù)期值與軟件組態(tài)輸出實(shí)際值相對比的方式進(jìn)行測試。
功能測試可通過測試界面查看測試情況,包括當(dāng)前測試步驟、當(dāng)前步驟延時時間、輸出結(jié)果是否正確以及測試時間進(jìn)度條等信息。測試過程可通過按鈕來選擇測試方式,包括以步進(jìn)、暫停和指定步驟的形式來針對不同情況進(jìn)行測試。
圖3 指定步驟測試的流程圖Fig.3 Flow chart of the specified step test
步進(jìn)模式下系統(tǒng)執(zhí)行測試腳本中的一步即停止,如果在系統(tǒng)測試步進(jìn)過程中點(diǎn)擊暫停,系統(tǒng)將執(zhí)行完當(dāng)前步后停止。若指定步進(jìn)的步驟超出最大步數(shù),或者停止步數(shù)小于開始步數(shù),則不進(jìn)行步進(jìn)并提示錯誤信息;若步驟數(shù)有效,則執(zhí)行步進(jìn)操作。指定步驟運(yùn)行是對步進(jìn)操作的多次調(diào)用,軟件通過人機(jī)界面獲取待執(zhí)行步驟的信息,按照測試腳本中指定的每一步延遲時間,多次調(diào)用步進(jìn)函數(shù),實(shí)現(xiàn)對腳本中指定步驟的運(yùn)行。
由于腳本運(yùn)行時間可能較長,在運(yùn)行期間用戶可能對人機(jī)界面有其他操作,需要程序響應(yīng)。同時,功能腳本執(zhí)行過程中,給定輸入值之后應(yīng)等待用戶設(shè)定的延時時間再獲取輸出值,該等待時間需要進(jìn)度條控件進(jìn)行顯示,因而單線程不能滿足實(shí)際需要,功能測試應(yīng)在收到用戶發(fā)出測試命令后建立線程執(zhí)行。
指定步驟測試的流程如圖3 所示。
同時,執(zhí)行過后的測試報告可導(dǎo)出Excel 格式的文件,通過顏色與“√”表示執(zhí)行結(jié)果正確與否,執(zhí)行錯誤的步驟,實(shí)測值會與預(yù)期值顯示在同一單元格。
批量測試可以同時完成多個腳本的驗(yàn)證,將需要測試的一系列用例批量導(dǎo)入到待測文件夾,啟動批量測試后即可進(jìn)行批量用例的驗(yàn)證。批量驗(yàn)證過程依然能在系統(tǒng)主界面查看到實(shí)時驗(yàn)證情況。
批量測試流程如圖5 所示。
1.3.3 通道檢查
通道檢查是為了驗(yàn)證工程硬件設(shè)計(jì)與工程軟件設(shè)計(jì)的一致性。工程硬件的設(shè)計(jì)通過IO 分配清單體現(xiàn),工程軟件的設(shè)計(jì)通過軟件組態(tài)體現(xiàn)。通過導(dǎo)入IO 清單并確定要檢查的Excel 文件的Sheet 頁,來驗(yàn)證軟件組態(tài)與IO 清單是否一致。若不一致,則在輸出結(jié)果一欄顯示所有異常信息的錯誤描述。否則,進(jìn)行下一項(xiàng)檢查。
圖4 功能測試導(dǎo)出報告Fig.4 Function test export report
圖5 批量測試流程圖Fig.5 Flow chart of batch test
1.3.4 人機(jī)界面設(shè)計(jì)
圖6 通道檢查流程圖Fig.6 Channel check flowchart
軟件的人機(jī)界面分為4 個區(qū)域,功能標(biāo)簽選擇區(qū)、功能按鈕區(qū)、用例管理區(qū)、內(nèi)容顯示區(qū)。功能標(biāo)簽選擇區(qū)實(shí)現(xiàn)對應(yīng)功能標(biāo)簽的選擇,影響功能按鈕區(qū)出現(xiàn)的按鈕與其它控件。功能按鈕區(qū)包含該標(biāo)簽對應(yīng)功能所需的按鈕、文本框等需要操作或顯示的控件,以功能測試標(biāo)簽為例,該功能需要按鈕控件作為“開始”“暫?!薄安竭M(jìn)”“導(dǎo)出報告”“批量導(dǎo)入”“批量測試”幾個功能的觸發(fā)事件入口點(diǎn),需要文本框控件輸入“將要執(zhí)行步數(shù)”“結(jié)束步數(shù)”,勾選框控件作為快速輸入首步、末步步數(shù)的方法,需要進(jìn)度條控件顯示該步驟的執(zhí)行情況。用例管理區(qū)用來顯示當(dāng)前項(xiàng)目包含的用例文件夾與用例,可通過雙擊將用例顯示到內(nèi)容顯示區(qū)。內(nèi)容顯示區(qū)的區(qū)域面積最大,用來顯示用例內(nèi)容、IO 清單內(nèi)容、通道檢查錯誤報表等內(nèi)容,根據(jù)功能標(biāo)簽的切換狀態(tài)決定具體顯示內(nèi)容。顯示用例時,該區(qū)域分為延時時間、輸入變量信息、輸出變量信息3 個子區(qū)域;顯示通道檢查內(nèi)容時,該區(qū)域分為IO 清單顯示子區(qū)域和通道檢查錯誤項(xiàng)顯示區(qū)。
圖7 功能界面示意圖Fig.7 Functional interface diagram
以“華龍一號”DCS 工程樣機(jī)V&V 過程為例進(jìn)行實(shí)例分析。導(dǎo)入測試用例,功能測試界面顯示如圖7 所示,可選擇運(yùn)行用例中的指定步驟。
通過導(dǎo)入標(biāo)準(zhǔn)格式的IO 分配清單,界面顯示IO 分配信息,包括每個信息所在站號、槽號、通道號,以及該變量的信息,如工程量上限、下限、描述、單位、所在功能圖頁碼等。點(diǎn)擊“啟動檢查”,得到通道檢查的錯誤結(jié)果,也可導(dǎo)出Excel 格式的錯誤報告。
圖8 通道檢查界面示意圖Fig.8 Schematic diagram of channel inspection interface
基于虛擬測試軟件的核安全級DCS 組態(tài)驗(yàn)證可提高V&V 過程的效率和準(zhǔn)確性,在FT 與FAT 之前發(fā)現(xiàn)問題。同時,該軟件的使用推動V&V 過程從離散化的用例向系統(tǒng)性的腳本轉(zhuǎn)變,可提高FT 與FAT 腳本的編寫效率。