APP下载

过程工业软件现场测试数据设计及管理

2018-03-15赵一丁夏敏捷楚纪正

中原工学院学报 2018年1期
关键词:测试用例自动数据库

赵一丁, 夏敏捷, 楚纪正

(1.中原工学院 计算机学院, 河南 郑州 450007; 2.北京化工大学 信息科学与技术学院, 北京 100029)

过程工业软件的质量要求苛刻,测试时环境要求也非常苛刻,非用户现场的测试环境如果与真实的用户生产现场存在细小不同,就会影响测试结果。对于非用户现场测试环境难以保证与真实用户工业现场完全一致的情况,真实用户的现场测试就更为重要。测试人员从软件开发者的角度出发对软件进行测试,并不能完全取代用户的感触,测试人员难以寻找的一些缺陷,用户却能从实际出发轻易地发现问题。

很多技术文献涉及过程工业软件的测试,如可靠性测试[1-3]、组合测试[3-6]、测试效率[7-8]、TC自动生成[9]等,但现场测试技术方面的文献却很少。现场测试实践存在很多难点,比如石油化工行业现场的高温高压、易燃易爆,测试时需要正常的合法数据,也需要异常数据。由于这些异常数据有可能引起装置状况的显著变化,甚至导致生产事故,给用户带来严重的经济损失,因此用户往往出于生产安全考虑,不允许在生产现场随意地主动测试。被动测试[10]是经典的现场测试方法,但被动测试不要求设计测试用例,测试效率低、覆盖率低、目标和过程不能主动控制。近几年,研究人员提出的主动测试和被动测试混合方法[10-13]逐步获得了一些实践案例和成果,但不同行业的工业用户现场实践中仍存在较大问题。为此,本文提出新的现场测试方法,开发了现场测试数据设计工具及管理软件,用于引导每个测试分项现场测试的实施。

1 针对过程工业软件的测试目标来挖掘历史数据

1.1 建立现场测试准备数据库

用户生产的历史数据对于现场测试是宝贵的资源,历史数据中一旦含有现场测试所需测试数据的相关信息,这些历史数据就可以作为测试用例(TC)设计的参考数据。这就需要对有关生产的历史现场数据进行数据处理[5-10],建立现场测试准备数据库[11],并设计主动测试用例。采用发明专利技术[12]建立的现场测试准备数据库中是以现场测试为目标所挖掘的历史生产数据。

1.2 通过历史数据挖掘积累现场测试准备数据库的数据量

过程工业业务数据可大致分为两类:可自动采集数据、不可自动采集数据。可自动采集数据可通过传感器等硬件自动采集设备获取,如常见的实时数据,采集周期一般为秒级。在现场测试之前应尽早安装获取可自动采集数据的相关软硬件,尽量延长跟踪记录实时数据的时间,以便于测试技术人员从实时数据中获取与测试目标相关的合格数据。不可自动采集数据的挖掘较麻烦(主要是人工化验数据),采集周期往往较长(1 h甚至1 d),不同用户对不可自动采集数据的保存处理方式不一样(关系型数据库表较为常见)。

对于这两类复杂的数据,可根据时间进行对应集成,以达到关联匹配。设不可自动采集数据的采集周期为mmin,可自动采集数据的采集周期为ns。找到同一时间段的两类数据,先将可自动采集数据按m*60 s自动分段,并存放在按顺序自动生成的数据文件(这里简称分段自动数据表)中,数据文件名按时间自动生成。数据库表的数据结构主要有:时间序号、分段自动数据文件(与时段对应)的文件名、时段对应的不可自动采集数据。按此过程对不同采集周期可自动采集数据及不可自动采集数据进行集成关联。

过程工业生产参数虽有一些分布规律但一般不完备,所需要的历史数据可能不充分,尤其是历史数据中非法数据一般很少(过程工业正常生产中的数据一般是合法数据),挖掘历史数据时应偏重事故处理过程中的可自动采集数据和对应的不可自动采集数据。生产事故的发生、演变及处理的过程数据是现场测试准备数据库中最重要的数据信息。不同企业的数据格式不完全一样,数据存储的方法也多种多样,需要进行数据格式转换,实现格式统一,以便于关联集成并关联到现场测试准备数据库中。

2 以数据设计工具及管理软件引导过程工业软件现场测试

为了更好地组织现场测试,方便用户配合,笔者所在团队开发了过程工业软件的现场测试数据设计工具及管理软件(被省部级鉴定为国际先进水平),并在数十家企业获得了实际应用。

2.1 软件主要功能

(1)现场测试准备数据管理功能。它主要包括可自动采集数据的导入及管理,不可自动采集数据的导入及管理,可自动采集数据和不可自动采集数据的关联集成等功能。

(2)现场测试任务及TC管理功能。它主要有现场测试要点管理、现场TC管理等功能。

(3)现场测试驱动模块和现场测试桩模块管理功能。它主要包括测试驱动模块及测试桩模块的切换、状态属性管理等功能。

(4)现场主动、被动测试实施跟踪管理功能。它主要包括主动测试过程的数据跟踪(包括特定过程的视频管理)、现场测试过程的模拟再现、数据分析等功能。它能够对被动测试过程进行分段跟踪。

(5)现场测试流程管理功能。它包括测试计划管理、测试用例管理、测试数据预执行仿真、测试实施管理、缺陷管理和系统管理等功能。

(6)其他功能。它包括缺陷bug的信息管理(支持用户自定义缺陷报告)、现场测试的相关技术培训资料管理、现场测试人工记录管理等功能。

2.2 现场测试流程管理

现场测试流程管理的主要功能用例如图1所示。

图1 现场测试流程管理用例

通过现场测试流程管理对现场测试进行引导组织实施,根据用户现场生产的实际约束,灵活设置测试拆分子集的测试驱动和测试桩,对各个测试拆分子集的现场测试准备数据库进行统一管理,兼容先进大数据平台的外部接口,实现过程工业软件现场测试的全流程进度管理。

(1)测试要点管理:①测试要点的初建:对测试要点各种信息的增、删、改、查,对测试场景进行设计,以支持测试集;②对测试要点状态进行管理。

(2)TC管理:①灵活选择TC的模板(可自定义);②与测试计划中的测试需求关联;③按TC模板进行编辑;④对TC进行增、删、改、查。

(3)TC执行管理:①TC执行审批管理;②跟踪录制TC执行过程;③TC执行实际结果的增、删、改、查;④TC文档的导出。

(4)bug管理:①未通过的TC(即预期结果与实际结果不一致)自动导入;②自动生成未通过TC对应的bug初始报告;③bug报告的增、删、改、查;④ bug的跟踪管理(包括回归测试结果管理);⑤bug报告的文档导出。

2.3 综合实施过程

如果开发过程采用瀑布模型,那么软件开发、历史数据挖掘及现场测试用例的设计可同时关联进行。这三者的网络关系可用产品数据管理(PDM)图来描述(见图2)。

图2 现场测试相关活动的网络关系PDM图

(1)制定现场测试目标(活动4)应在需求分析(活动1)完成之后进行,并需要用户单位审批(活动5)及配合,然后进行现场测试用例(活动8)的设计,原则上不允许脱离用户配合而盲目进行。

(2)在进行现场测试用例的设计(活动8)之前,应进行历史数据的挖掘(活动6和活动7),并完成现场测试准备数据库的搭建及数据积累。

(3)执行现场测试用例(活动11)之前,应当对所设计的现场测试用例进行风险分析,并经用户审批(活动10),以便用户的生产计划部门、安全保障部门等做好准备。非用户现场的模拟环境下测试(活动9)需要在现场测试之前完成,原则上要求用户认可活动9之后才能进行实际的现场测试。

根据活动之间的网络关系及项目的实际约束条件,可采用进度管理的逆推法估算上述各项活动的起止时间,以便现场测试的顺利实施。

3 现场主动测试输入数据案例

中原地区某炼油装置要采用新的优化控制系统,但这个优化控制系统在复杂生产现场的实际效果事先难以保证,盲目在现场试运行可能引起各种安全问题。因此,用户生产现场测试是模拟环境下测试不能取代的关键环节,需要在防范事故的前提下,尽量提高测试覆盖率。

(1)测试目标:通过测试了解新的优化控制系统对不同性质原料油(中原油田原油、土哈原油、伊拉克进口油等)的轻质油产率。

(2)主动测试输入数据的要求范围。将进料油相关参数(进料量、黏度、密度、残炭)按正常工况下历史数据的分布规律分为3个数据大小取值区间,对各参数的不同取值区间进行完全组合,则有81组不同情况组合的进料,也就是说可列出81个搜索条件。这些条件“均匀分散”地覆盖了常见的进料参数组合,覆盖率已经很高。

(3)搜索现场测试准备数据库。现场测试准备数据库已经提前搭建完成,并且积累了该生产装置近3年的历史数据。其数据结构及具体数据如表1所示。

表1 现场测试准备数据

T再生、T稀相、F原油、T反应、P反应、W催化剂是可自动采集数据,原料油属性、原料油密度、原料油残炭、原料油黏度是不可自动采集数据。按照上述可自动采集数据和不可自动采集数据的关联方法对这两类数据进行关联集成。

(4)现场主动测试输入数据的生成。先按81个条件初步查找现场测试准备数据库,各条件查询得到的数据可能很多,只需任意一组数据代表即可,但因数据不完全,只找到了42组条件代表数据(对于缺乏的数据需要补充数据挖掘,因缺乏的主要是不可自动采集数据,可到用户单位挖掘相关数据,对新获取的数据进行关联集成,并加入现场测试准备数据库);然后,依据剩余的39个条件搜索,找到了符合其中25个条件的代表数据。经专业综合评估,已经得到的数据虽不够完备,但基本覆盖了3年以来实际的各种进料参数组合情况,包含了用户常见数据。

(5)进行测试输入数据的风险评估。这67组数据是现场主动测试输入数据的备选,需要进行事故可能性评估,检索出各组数据对应生产历史的过程数据。经生产技术专家和现场操作师傅确认,其中12组数据可能有事故风险,影响装置生产安全。剔除这12组测试输入数据,剩余的55组测试输入数据可作为现场测试输入数据。

(6)现场测试执行。为了尽量减少对正常生产的干扰,根据原料油实际情况,实际只完成了其中49个主动测试用例。其对应的49组输入数据虽然不能完全覆盖,但已接近完全覆盖各种进料情况,测试覆盖率已相当高,远远超过了普通方法的测试覆盖率。

软件的运行结果达到了现场测试标准,更重要的是,这些输入数据可能导致的现场事故被成功地预测并防范。

4 结 语

经大量实践验证,开发的现场测试数据设计工具及管理软件显著提高了现场测试输入数据的覆盖率;新的测试方法能够减少现场测试的成本投入。该辅助管理工具对现场测试的引导组织,能够适应用户现场生产的不同状况,灵活切换测试拆分子集的测试驱动和测试桩,实施现场测试的全流程进度管理。依据用户生产历史大数据来设计现场测试的输入数据,可以预测并防范测试输入数据可能导致的现场事故,成功地解决石化等过程工业软件现场测试的实践难题。

[1] 陆文,徐锋, 吕建.一种开放环境下的软件可靠性评估方法[J].计算机学报,2010,33(3):452-462.

[2] 张德平,聂长海,徐宝文.软件可靠性评估的重要抽样方法[J].软件学报,2009,20(10):2859-2867.

[3] 李海峰,李秋英,陆民燕.基于Logistic测试覆盖率函数的软件可靠性建模研究[J].计算机研究与发展,2011,48(2):232-240.

[4] 顾庆, 唐宝, 陈道蓄.一种面向测试需求部分覆盖的测试用例集约简技术[J].计算机学报,2011,34(5):879-888.

[5] 汤红霞,方木云, 刘明基,等.基于正交法的软件测试用例生成[J].计算机工程与设计,2008,29(14):3673-3676.

[6] 黄陇, 杨宇航,李虎.参数配对及n-way组合覆盖算法研究[J].计算机学报,2012,35(2): 2257-2269.

[7] Shu G Q, Lee D. A formal methodology for network protocol fingerprinting[J].IEEE Transactions on Parallel and Distributed Systems,2011,22(11):1813-1825.

[8] Chari K,Hevner A,System test planning of software:An optimization approach[J].IEEE Transactions on Software Engineering,2006,32(7):503-509.

[9] 陈鑫, 姜鹏, 张一帆.一种面向列车控制系统中安全攸关场景的测试用例自动生成方法[J].软件学报,2015,26(2):269-278.

[10] 赵一丁,刘凤华,郑秋生,等.仿真软件的被动测试与主动测试互补的研究[J].计算机科学,2012,39(12):121-125.

[11] 赵一丁,樊银亭, 郑秋生,等.工业软件现场测试中的拆分及其测试数据设计[J].计算机工程与科学,2016,38(5):921-931.

[12] 赵一丁,张西广,李志民,等.一种针对仿真系统的主动被动混合测试方法:中国,CN201210453195.6[P].2014-10-29.

[13] 赵一丁,李志民,樊银亭,等.一种工业过程仿真数学模型参数的估计方法:中国,CN201310045058.3[P].2015-4-22.

猜你喜欢

测试用例自动数据库
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
自动捕盗机
让小鸭子自动转身
自动摇摆的“跷跷板”
数据库
关于自动驾驶
数据库
数据库
数据库