基于虚拟测试软件的核安全级DCS组态验证
2020-02-14贺先建邓兴陈刘全东贺先辉金兴连
张 旭,贺先建,邓兴陈,刘全东,贺先辉,金兴连
(中国核动力研究设计院 核反应堆系统设计技术重点实验室,成都 610213)
0 引言
在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
1 虚拟测试软件设计与实现
1.1 虚拟测试软件功能需求
根据工程实际需求,虚拟测试软件应具有如下功能:
用例管理:虚拟测试软件应用范围覆盖多个项目、多种测试,应具备良好的测试用例管理功能。
功能测试:虚拟测试软件应能对接虚拟DCS,驱动脚本的执行。
通道检查:即软硬件设计一致性检查,通过对比硬件设计的IO 分配清单与软件设计的组态逻辑,发现软硬件设计一致性方面的错误。
用例拆分:在实际工程中,对于记录了运行结果的脚本文件需要打印存档,当脚本本身过大,不能直接打印时,应按照特定的格式对脚本进行拆分。拆分分为多种情况,如总行数过多、总列数过多、行列总数都过多、输入值行数过多、输出值行数过多等。软件应能够对不同情况分别高效处理。
1.2 虚拟测试软件与虚拟DCS的接口设计
参考文献[2]中介绍了采用TCP 协议对外接口的仪控仿真系统(虚拟DCS),通常的对外接口方式是接口采用调用动态链接库(*.dll)的形式,即虚拟测试软件加载虚拟DCS 的动态链接库,获取客户端对象,再通过调用连接登录接口,建立Socket 连接,进而实现指令、反馈与数据的交互。
如参考文献[2]所述,在虚拟测试软件运行的过程中,可能用到设置变量值接口(SetVariableValue)、获取变量值接口(GetVariableValue)、获取设备组态信息接口(GetDeviceConfig)、获取站信息接口(GetStationsInfo)等。通过调用接口,借助其中封装的TCP 协议实现与仪控仿真系统的交互。
1.3 虚拟测试软件设计
图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
2 实例分析
以“华龙一号”DCS 工程样机V&V 过程为例进行实例分析。导入测试用例,功能测试界面显示如图7 所示,可选择运行用例中的指定步骤。
通过导入标准格式的IO 分配清单,界面显示IO 分配信息,包括每个信息所在站号、槽号、通道号,以及该变量的信息,如工程量上限、下限、描述、单位、所在功能图页码等。点击“启动检查”,得到通道检查的错误结果,也可导出Excel 格式的错误报告。
图8 通道检查界面示意图Fig.8 Schematic diagram of channel inspection interface
3 总结
基于虚拟测试软件的核安全级DCS 组态验证可提高V&V 过程的效率和准确性,在FT 与FAT 之前发现问题。同时,该软件的使用推动V&V 过程从离散化的用例向系统性的脚本转变,可提高FT 与FAT 脚本的编写效率。