刘培邦 张绪怡 齐静雯 陆潘 尹继超
摘 要 随着计算机的发展,数字化仪控系统(DCS)已经在核电控制系统中得到广泛的应用。在核电机组投运前,需要对新建机组的DCS进行大量的现场测试,目前大多数的测试方法都是采用手动方法,通过在DCS输入端打点置值,在DCS输出端检查信号。这样不仅工作量大,也会因工作繁琐带入人因失误,影响测试效率和核电厂工程进度。为了提高DCS现场测试效率,提出了一种基于自然语言处理的DCS自动化测试方法,设计了自然语言解析模块和运行模块,利用计算机程序自动解析和执行测试用例,极大减少了人工参与度,为DCS的现场测试提供了更便捷的方式。
关键词 DCS;自然语言;仿真测试;测试用例
中图分类号 TP3 文献标识码 A 文章编号 1674-6708(2018)210-0124-03
随着近些年计算机系统和工业控制系统的快速发展,和用户对工作系统的控制功能和管理功能要求不断调高,核电站的控制系统基本上已经由数字化仪控系统(DCS)替代传统的盘台仪表控制系统,DCS已经成为行业发展的必然趋势。
DCS在核电控制系统中是‘中枢神经系统 [1],在DCS系统测试期间或现场调试早期便可对重要的核岛、常规岛控制系统实施单步或关联运行初步功能测试、逻辑预演和定性分析[2]。DCS控制系統能否实现设备保护、自动控制等功能密切关系到机组的安全正常运行,所以需要在系统正式投入使用之前进行全方位的逻辑测试,调试过程一般都在现场进行调试。
目前多数的现场调试软件在面对测试规程参数多,用例逻辑较为复杂时,其使用的难度会增加一定的指数,本文提出的基于自然语言的自动化规程测试方法能够简化仪控测试人员的工作。
在投入现场使用的过程中,将核电厂工艺模型接入系统I/O接口模块,替代现场的实物工艺设备,与DCS设备连接,构成测试的闭环,用于核电厂现场DCS系统功能测试、保护系统逻辑功能测试和系统响应时间测试。
该调试装置以硬接线或通讯的方式接入实际的控制系统,通过注入测试规程所需的各种仿真信号,在机组运行前完成DCS控制逻辑测试。
该工作相对传统的DCS调试具有以下的改进:
1)仿真模型替代现场设备,实现机组运行前,DCS在各种工况下的真实信号输入。
2)建立测试管理平台,建设基于自然语言识别的测试规程解析模块,能够对规程文件中的操作语言和逻辑做自动化识别,解析成为对应程序执行码,建立树状逻辑结构。
3)仿真测试流程实现全自动测试,执行每一个测试用例时,对应执行相应的程序执行码,自动判断执行结果,根据结果,生成测试报告;并能提供顺序执行,循环执行,暂停,恢复等多种执行模式,使得DCS测试的整个流程更加灵活。
1 DCS仿真测试现状
1.1 问题定义
随着DCS软件开发技术的不断发展,行业用户对软件的质量要求越来越高,传统的测试一般以手工测试为主,但是手工测试过程复用性差,测试结果无法保证一致性,当执行回归测试时,必须重新手工执行,回归工作量大,具有重复性、机械性。为了节约测试成本,在手工测试的基础上兴起了自动化测试,自动化测试一般分为录制回放和人工编程开发测试脚本两种方式[3]。
录制回放技术原理是在测试人员操作被测软件执行测试用例时,测试工具记录下键盘和鼠标的轨迹,并自动生成测试脚本代码,这样生成的代码冗余度高、可读性差,而且脚本代码中被测软件业务逻辑代码与控件代码杂糅在一起,不利于后期的维护。
人工开发测试脚本是录制回放技术的进一步升级,脚本代码由人工编写,提高了代码复用性、可读性。一般流程是测试人员依据已经编写好的测试用例,在测试工具中逐条编写测试脚本,用例运行时由测试工具逐条运行并反馈测试结果。
人工开发测试脚本虽然可以减少脚本代码的冗余度,并可以通过添加注释提高可读性,但是无法克服被测软件业务逻辑代码与被测软件控件代码杂糅的问题,当测试用例的规模达到成千上万条时,脚本代码的维护就是一个大问题,如果项目研发后期需要修改被测软件界面上的一个控件,则不但需要修改自动化脚本中该控件代码,还需要修改所有涉及到该控件的测试业务逻辑代码,测试脚本的维护工作量就会很大[4]。
1.2 DCS现状
早期国内开展和进行DCS测试工作的单位、企业还不是很多。国内核电力系统中,有少数科研实验单位和发电企业进行了这方面的研究和测试的应用,主要集中在I/O模件的精度测试和一些部件的冗余切换试验上,另外的许多内容限于试验设备和技术手段等因素无法开展[5-7]。
由于DCS性能测试确实能够给DCS用户提供较为全面的DCS性能信息,越来越多的企业主动要求进行DCS性能测试,因此,近几年国内逐步开展了DCS性能测试研究,基本掌握了各项指标的测试技术,可以初步做到对DCS的状态评估和可靠性评估[8-9]。但是对于用例规程操作中存在的复杂操作,并未做到自动化处理。
为了解决上述问题,本文提出一种基于自然语言处理的自动化DCS仿真测试系统,测试系统由本体库和业务逻辑两部分组成,本体库主要包括用例、规程中的操作关键词,如“检查”“设置”“初始化”等关键词。在编写规程文档中测试用例时,使用关键字或业务逻辑组合形成测试用例的步骤,通过基于自然语言处理的模型去训练学习样本库关键词。
后续运行测试系统时,系统首先解析规程的操作的步骤,解析出关键字和参数,然后调用对应的关键字库代码执行测试。测试完成后依据测试结果进行验证并填写测试是否通过。
2 基于自然语言处理的测试方法
2.1 自然语言处理关键技术
自然语言是人工智能和语言学领域的分支学科,主要内容包括两个方面,自然语言的理解和自然语言的生成。随着各行各业的词汇不断丰富,自然语言处理中越来越重视词汇的功能,如何建立词汇库是一个普遍关注的问题,并且出现了统计自然语言处理,运用大量的数学模型。
在整个自然语言的处理过程中,如图1所示,基础数据中包含一个词库,输入的数据根据词库中已有的信息进行相关的特征转换,这一过程是最为关键的,需要对语料数据进行分词、词性标注、据法分析、语义分析等操作,语义分析的精确程度很大程度上依赖于词库建立的粒度是否合理,词性规范可以参考Chinese TreeBank(CYB)2標准。中文的分析工具可以使用NLTK和结巴分词。
在特征生成完成之后,需要将特征组合为相应的模型,不同的需求对应不同的模型,在DCS测试系统中包含的操作多数是写值、读值、等待等简单的重复性工作,很快利于词库的建立,只要和相关的操作类似的词语都可以建立到词库。
2.2 模式识别方法
在DCS的测试系统中,包含了很多的测试用例,测试用例中的语义基本可以认为识别,在放到程序中时,需要对大量的测试用例的关键词进行识别,提取其中的关键操作、关键变量、关键值等信息,在识别的过程中通过词性标注和句法分析来进一步确定该语料的特征,进一步对相关的特征进行转换,最终生成相关的计算机可识别的内容。
执行模式的设计基于自然语言设计,对大量规程进行模式匹配,规程按照一定的模板进行编写,具体用例的测试内容需要与设计好的执行模式进行匹配,以DCS测试软件为例,其中主要包括WRITE、READ、WAIT和PASS这几种执行模式,具体执行的操作再进行封装,具体的模式匹配如图2所示,这种设计方式使得测试用例的可扩展性变得更高,关键在于模式识别程序的设计,需要设计良好的可扩展性,底层的执行模式也具备良好的可扩展性,相互之间耦合性很低,不会相互影响。
3 关键技术自动化测试方法研究
规程的自动化执行的功能如图3所示,包括自动执行、单步执行、循环运行、暂停和继续,并且可以配置执行参数,可以配置规程执行过程中每一条操作之间的时间间隔和执行不通过时是否继续运行。规程的单步,在点开规程之后,点击单步执行,需要逐步点击单步运行才会运行下一步操作,在实际的测试环境中,关键步骤可以使用单步运行模式,可以有足够时间排错和调试。规程的循环执行是实际测试中压力测试常用的一种方式,循环执行会一直运行该测试规程,在执行过程中可以动态的设置执行的时间间隔和不通过时是否运行下一条,在重复运行某个操作时需要对一个值进行重复检验,在运行不通过时会提示是否运行下一条操作,点击是则直接跳过该操作运行下一条操作。
4 DCS测试方法应用
根据上文提出的技术方案,将核电厂提供的文本规程文件进行仿真测试,利用自然语言进行语义识别,生成程序可识别的模型,在不断运行规程的过程中,逐步完善DCS的专有词库,最终每段文本都会对应一个数据结构,如下所示是解析READ操作是对应的数据结构:
在对大量规程进行自然语言识别时,可以不断的更新已有的词库,增加新的执行模式,在新增词库的过程需要人工进行确认,以确保词库的准确性,目前已经具备4种操作,在后续的DCS仿真测试项目实施中可以兼容更多的执行模式。
5 总结与展望
本文提出了基于自然语言处理的自动化DCS测试方法,将自然语言处理应用到DCS仿真测试中,在对规程生成模型的过程中极大的减少工作量,并且提出了一种自动化的测试流程,可以满足日常的DCS测试各种需求,各种测试模式之间可以自由切换,可以提高测试工作的效率。在进行自然语言识别的过程中,自然语言的词库建立需要人工参与,在面对大量新增的执行模式的时候,会降低工作效率,这方面可以加入基于统计的自然语言处理,类似现在的深度学习和机器学习技术,目前暂未探索相关的技术应用,在改方法应用成熟以后会进一步做相关的探索。
参考文献
[1]祝建飞,姚峻,沈丛奇.1000MW超超临界机组DCS控制系统仿真调试技术研究[J].华东电力,2010,38(12):1946-1950.
[2]朱立志.核电站数字化仪控系统的仿真测试与验证研究[D].上海:上海交通大学,2010.
[3]陈冬严,等.精通自动化测试框架设计[M].北京:人民邮电出版社,2016.
[4]张俊卿.测之重器:自动化测试框架搭建指南[M].北京:电子工业出版社,2016.
[5]程真,杨东南. 分散控制系统的性能考核试验方法[J].华东电力,2003,22(3):20-22.
[6]王琦.分散控制系统(DCS)性能测试方法的研究[D].广州:华南理工大学,2006.
[7]盛锴.分散控制系统控制器实时性能的测试方法及应用[J].电站系统工程,2013(5):50-52.
[8]王雁军,康静秋,杨振勇.基于性能测试的DCS状态评估及改造方案研究[J].华北电力技术,2015(11):51-56.
[9]王晋,王庆峰,曹迎锋,等.核电厂非安全级DCS验证系统测试方法[J].中国高新技术企业,2017(5):194-196.