李 勇,樊艳艳,张祥辉
(1.中核控制系统工程有限公司,北京 102401;2.中国核电工程有限公司,北京 100840)
测试环节是工程设计过程中的一个独立并且非常重要的环节,是保证工程质量和可靠性的关键步骤。测试的目的是希望能以最少的人力和时间发现潜在的各种错误和缺陷,并反馈给设计人员以及早消除隐患[1,2]。
一个规范的测试过程主要包括有制定测试计划、编制测试大纲、编写测试用例、实施测试和生成测试报告等基本的测试活动[3,4]。
1)制定测试计划。在制定测试计划时,要充分考虑整个项目的开发时间和开发进度以及一些人为因素和客观条件等,使得测试计划是可行的。测试计划的内容主要有测试的内容、进度安排、测试所需的环境和条件、测试培训安排等。
2)编制测试大纲。测试大纲是测试的依据,它明确详尽地规定了在测试中针对系统的每一项功能或特性所必须完成的基本测试项目和测试完成的标准。
3)根据测试大纲编写测试用例。在设计测试用例的时候,可综合利用前面介绍的测试用例和设计技术,产生测试设计说明文档,其内容主要有被测项目、输入数据、测试过程、预期输出结果等。
4)实施测试。测试的实施阶段是由一系列的测试周期组成的,在每个测试周期中,测试人员和开发人员将依据预先编制好的测试大纲和准备好的测试用例,对被测软件或设备进行完整的测试。
5)生成测试报告。测试完成后,要形成相应的测试报告,主要对测试进行概要说明,列出测试的结论,指出缺陷和错误。
由于核电DCS 系统的规模宏大,实际的测试过程不仅周期长,工作量大,往往同一内容又需多次重复测试。因此,测试过程不仅枯燥乏味,而且需要在实施测试中长时间的保持精神高度集中,这就对测试人员提出苛刻的要求。设计和开发一款测试专用的辅助软件,根据测试用例辅助测试人员设置或获取被测对象的状态,并能根据测试结果自动生成测试报告,会对测试工作有很大的帮助,并对DCS 的设计过程有很大的助益。
1.1.1 实现目标概述
DCS 的测试过程从测试人员具体的操作方面讲主要包括:创建测试画面、读取和分析测试步骤、设置和获取被测对象状态、比对预期结果、填写测试报告。所以本软件的主要目的是将上述过程中的非测试人员必需人工完成的部分,由计算机辅助完成,降低测试人员的工作强度。
1.1.2 功能需求分析
为了最大化利用现有资源,结合实际的测试步骤,同时为了降低测试人员的工作强度,本软件最终实现以下的功能需求:
1)识别和分析现有测试用例。
2)自动显示当前功能块,即无需创建测试画面。
3)对于Level1,自动实现逻辑功能块状态的设置和获取。
4)对于Level2,提示测试人员完成具体的操作或确认。
5)实现延时自动计时功能。
6)自动生成测试报告。
1.2.1 系统模块划分
为了满足辅助测试软件的要求,本软件由以下几部分构成:
输入输出模块:主要实现测试用例的读取,测试步骤的识别及依据测试结果生成测试报告。
任务分析模块:主要实现了测试步骤的动作分析,即延时判断、一层操作与二层提示判断。
延时模块:主要实现了延时计时功能。
一层操作模块:主要实现了一层逻辑功能块状态的设置和获取及显示。
图1 系统功能模块图Fig.1 System function module diagram
二层提示模块:主要实现了二层操作的对话框提示功能,提示测试人员需操作或确认的内容。
1.2.2 运行环境
1)用户界面
用户界面友好,人性化设计;提示信息和错误信息明确清楚;操作方便快捷。
2)软件开发环境
开发平台:Visual Studio 2010
开发语言:C#
3)软件运行环境
运行平台:.NET Framework 2.0外部需求:IA Series DCS
1.3.1 系统流程图
完整的系统流程如图2 所示。
1.3.2 加载测试用例
由于IA 平台的操作员站中未安装Office 办公软件,所以需要预先将测试用例转换为标准的HTML 格式文本;然后,利用WebBrowser 控件实现加载HTML 格式的测试用例,并使用HTML 语法分析提取记录测试步骤的HTML 表格数据;最后,加载到软件的DataGridView 控件中进行显示[5,6]。
1.3.3 输出测试报告
软件中存储和显示数据的控件为DataGridView,需将该控件中的数据和背景色转换为HTML 格式并输出到文件中保存。
图2 系统流程图Fig.2 System flow chart
表1 测试动作的关键字列表Table 1 List of keywords for test actions
图3 加载测试用例后的界面Fig.3 Interface after loading the test case
1.3.4 任务步骤分析
任务步骤分析是将DataGridView 中Validateion Actions列的文本进行分析,通过提取关键字的方式来确定具体的测试动作,见表1。
1.3.5 延时操作
延时操作采用StopWatch 类进行精确计时,并配合ProgressBar 进行实时进度的显示[7]。
1.3.6 一层操作
一层操作主要是调用IA 平台提供的OM 对象管理进行底层功能块状态的设置和获取,同时可调用画面调用函数实现在FoxView 中的实时显示。
1.3.7 二层操作
由于昌江和方福项目的结构特点,二层显示画面是搭建在另外的平台上的,所以二层画面的操作和确认需要测试人员按照测试辅助软件的对话框提示手动完成,并根据操作结果点选对话框的Yes 或No 按钮反馈给测试辅助软件。
实验中选用最复杂的功能图进行测试,本例中选择方家山核电项目GGR 系统的09F864508-3NC05 1GGR LD 01044、LD 01045 和LD 01046 作为被测对象进行验证。LD 01045 和LD 01046 是同样的两个风机的控制逻辑图;LD 1044 是两风机的选择、切换、启停逻辑,实现了两风机的相互备用功能。
由于测试环境只有IA 平台的仿真机,不具备KIC 环境,故所有二层操作均由一层功能块模拟的方式进行。
如图3、图4、图5 分别为加载测试用例、测试完成和测试报告的截图。
图4 测试完成后的界面Fig.4 Interface after the test is completed
测试软件在计算机软件测试领域已得到广泛的应用,实践证明借助测试软件可以最大限度地缩短测试时间,优化性能和加速软件的开发。在工程领域,特别是核电DCS领域,也同样需要这样的软件来保证工程的质量和进度以及节省人力成本和降低工作强度。
通过第2 章的试验证明,在一层纯逻辑测试中可以借助该软件自动完成所有的测试工作,同时在一二层混合测试中测试人员只需按照提示操作即可简单完成测试工作,并生成测试报告,这将极大地降低测试工作的强度,并提高了测试的准确性。
未来可考虑在辅助测试软件中引入网络化的编程思想,将单机版的辅助测试软件扩展成基于C/S 或B/S 方式,具有测试任务分配和管理、测试结果自动提交、任务进度统计等多功能的辅助测试系统,使之具有更实际和广泛的应用前景。
图5 测试报告截图Fig.5 Test report screenshot