LKJ-15C主机软件半实物自动化测试系统设计

2021-09-25 10:51何谢振周志飞
控制与信息技术 2021年4期
关键词:测试用例脚本插件

何谢振,周志飞,蒋 剑

(湖南中车时代通信信号有限公司,湖南 长沙 410100)

0 引言

LKJ-15C型列车运行监控系统(简称“LKJ-15C”)是基于安全计算机系统、具有高安全性和高可靠性的新一代列车运行监控装置。它能防止列车冒进、超速,并能辅助司机操纵,在保障列车运行安全方面起着极为重要的作用[1-3]。LKJ-15C主机软件是LKJ-15C的核心控制软件,其功能的正确性和可靠性直接影响列车的行车安全。

LKJ-15C主机软件的功能繁多、应用场景复杂,而且经常要根据客户需求进行适应性修改,其手工测试方法存在诸多弊端[1-2,4]:(1)工作量大、效率低、耗时费力,以至于软件变更发布时,根本没有时间做整体回归测试,存在较大的安全隐患;(2)测试过程中无法人机分离,测试人员必须待在LKJ-15C设备旁,不间断地进行测试操作,劳动强度大;(3)人工观察测试执行过程并对测试结果进行判断,容易出现缺陷遗漏或对测试结果误判的情况;(4)测试过程不易重复或复现,不利于测试用例的积累、固化等。实现对LKJ-15C主机软件的自动化测试是解决手工测试诸多问题的有效方案。为此,本文设计了一套LKJ-15C主机软件自动化测试系统,真正实现了主机软件的自动化发布测试。

1 自动化测试系统结构

LKJ-15C主机软件自动化测试系统采用半实物仿真技术,即主机软件运行于LKJ-15C真实的硬件环境中,与LKJ-15C交互的信号设备采用计算机仿真模拟,LKJ-15C与虚拟信号设备之间通过真实的硬件接口相连接[4]。自动化测试系统由面向仪器系统的PCI扩展(PCI extensions for instrumentation, PXI)主机模块、信号调理模块、以太网交换机、电源模块和计算机操作模块构成,如图1所示。

图1 LKJ-15C主机软件自动化测试系统结构Fig. 1 Structure of the automatic test system for LKJ-15C host software

1.1 PXI主机模块

PXI主机模块由PXI机箱、控制器、通用采集插件、模拟量IO插件、数字量IO插件、串口通信扩展插件和CAN通信扩展插件组成[5],主要用于模拟机车运行时各种LKJ-15C工作条件[6]。控制器与通用采集插件、模拟量IO插件、数字量IO插件、串口通信扩展插件、CAN通信扩展插件均安装于PXI机箱中,并通过PXI总线进行数据交互。自动化测试系统软件运行于控制器中,用以控制PXI主机模块实现自动化测试功能。

通用采集插件为LKJ-15C提供速度脉冲信号和柴油机转速(简称“柴速”)信号;模拟量IO插件为LKJ-15C提供各种压力和直流电压信号;数字量IO插件为LKJ-15C提供机车工况和平面无线调车灯显信号,并采集LKJ-15C输出的制动信号;串口通信扩展插件用于模拟其他自动列车防护(automatic train protection, ATP)设备信息;CAN通信扩展插件用于模拟机车信号和地面点式应答器信息。

1.2 信号调理模块

信号调理模块包括速度隔离插件、波形调理插件、电流调理插件、电压调理插件、电平检测插件及继电器输出插件,用于对PXI主机模块的输入输出信号进行隔离调理。其中,速度隔离插件用于对通用采集插件输出的速度信号进行隔离放大;波形调理插件用于对通用采集插件输出的柴速信号进行隔离放大;电流调理插件用于对模拟量IO插件输出的各压力信号(4~20 mA)进行隔离;电压调理插件用于对模拟量IO插件输出的直流电压信号进行隔离;继电器输出插件用于对数字量IO插件输出的机车工况、平面无线调车灯显信号进行隔离转换,并输出至LKJ-15C;电平检测插件用于采集LKJ-15C输出的制动信号,将其隔离转换后送入数字量IO插件。

1.3 以太网交换机和电源模块

PXI主机模块通过以太网交换机,输入人机界面单元(driver machine interface, DMI)模拟司机操作信息给LKJ-15C,获取的LKJ-15C主机输出信息用于测试结果判断并控制程控电源。

电源模块由2个程控电源组成,其中一个程控电源为LKJ-15C设备提供DC 110 V的电源,另一个程控电源为信号调理模块提供电源。

2 自动化测试系统软件

自动化测试系统软件用于对LKJ-15C的外部信号和数据环境进行计算机仿真建模,并通过测试脚本技术实现对LKJ-15C主机软件的自动化测试。自动化测试系统软件由测试脚本开发模块、测试脚本执行模块及仿真模型库构成,如图2所示。

图2 自动化测试系统软件结构Fig. 2 Software structure of the automatic test system

2.1 测试脚本开发模块

测试脚本开发模块用于测试脚本的编辑、编译、调试及管理,主要由脚本编辑器、脚本编译器、脚本调试器和脚本管理器构成。其中,脚本编辑器用于提供智能、友好、便捷的测试脚本编辑环境,如智能输入和修改、用颜色区分不同类别的标识符、自动脚本语法检查、自动格式调整等。脚本编译器用于对测试脚本进行词法、语法和语义分析,以及生成目标代码;编译不通过时,能够显示和定位编译错误信息。脚本调试器支持对测试脚本进行非中断和中断(断点设置、单步执行等)两种模式的调试。脚本管理器以资源管理器的形式对测试脚本进行组织管理。测试脚本开发工具如图3所示。

图3 测试脚本开发工具Fig. 3 Test script development tool

2.2 测试脚本执行模块

测试脚本执行模块实现对测试脚本执行解释、测试结果验证分析等功能,主要由测试项目管理器、测试执行管理器、测试信息显示器、脚本解释执行器、测试结果验证器和测试结果分析器构成。系统软件测试执行主界面如图4所示。

图4 自动化测试系统软件主界面Fig. 4 Main operation interface of the automatic test system software

(1)测试项目管理器。其用于测试项目的创建、打开、保存及设置等。

(2)测试执行管理器。其用于运行或停止测试,定制测试任务。例如,测试用例选择性执行、全部执行、只选择上次不通过的用例、重复执行、控制测试执行时间等。

(3)测试信息显示器。其以丰富友好的形式输出各种测试信息,包括测试用例信息、测试运行过程信息、测试结果信息及测试日志等,以便测试状态监测和问题分析。

(4)脚本解释执行器。其用于解释执行测试脚本,驱动仿真模型运行,按测试逻辑发送和接收测试数据,并调度管理测试任务。其中,测试脚本以测试类为单元,每个测试类中包含多个测试用例。如图5所示,测试脚本的执行流程为:首先执行测试类建立脚本,通常会调用系统控制模型进行系统初始化并执行本测试类特有的一些初始化操作;然后逐个执行测试类中的测试用例,在每个测试用例执行之前,先执行测试用例建立脚本,执行完之后,会执行测试用例拆卸脚本,这样做的目的是保证测试用例之间能够相互独立,互不影响;在所有测试用例执行完之后,执行测试类拆卸脚本,通常会执行一些测试清理复位操作并关闭系统。

图5 测试脚本执行流程Fig. 5 Test script execution process

(5)测试结果验证器。其用来自动判断测试结果。测试用例的测试结果有4种状态:通过(经过一系列的操作后,LKJ-15C主机输出信息与预期值一致,则测试通过)、失败(LKJ-15C主机输出信息与预期值不一致,则测试失败)、错误(由于系统异常错误造成的测试不通过,如通信断链、非法输入等)和忽略(由于前置条件不满足之类特殊原因而忽略执行的测试用例,其测试结果为忽略)。

(6)测试结果分析器。其能统计和存储测试结果,分析测试不通过的原因,定位测试不通过的脚本语句,生成和打印测试报告等。图6为用例测试失败原因分析示例。

图6 测试失败原因分析Fig. 6 Cause analysis for failure of test

2.3 仿真模型库

仿真模型库是针对LKJ-15C的数据运行环境的计算机仿真模型的集合。仿真模型通过调用PXI主机模块的硬件驱动程序实现与被测LKJ-15C主机软件之间的信息交互。本系统设计的主要仿真模型如表1所示,其中输入和输出是相对于被测LKJ-15C而言的。仿真模型是测试脚本的操作对象,测试脚本通过调用仿真模型接口来控制仿真模型与被测LKJ-15C主机软件间按照测试逻辑进行交互,并对测试结果进行判断,从而达到自动化测试的目的。以下为测试走停走控制功能[7-8]的一个用例脚本:

表1 仿真模型Tab. 1 Simulation models

3 自动化测试系统工作流程

LKJ-15C主机软件自动化系统的测试流程见图7,具体如下:

图7 自动化测试系统测试流程Fig. 7 Test process of the automatic test system

(1)根据LKJ-15C主机软件测试用例规范编写测试脚本,编辑完后对测试脚本进行编译,编译无误后生成目标代码;

(2)创建新的或打开已存在的测试项目,选择并执行所需的测试脚本;

(3)测试运行时,脚本解释执行器对测试脚本进行实时解释,调用仿真模型接口以驱动仿真模型收发测试数据,并通过系统硬件实现与被测LKJ-15C主机软件之间的信息交互;

(4)测试结果验证器自动比对被测主机软件的实际输出数据(通过主机输出模型获取)和预期结果,以判断测试是否通过;

(5)测试结果分析器统计测试结果,分析定位错误并生成测试报告。

4 应用现状

目前,LKJ-15C主机软件自动化测试系统的测试脚本库已覆盖LKJ-15C主机软件需求分析说明书中98%的应用处理功能需求,设计测试用例4 000多个。

以前采用手工测试方式时,测试人员只能对主机软件的变更功能部分进行测试;现在每次发布LKJ-15C主机软件时,都会对其所有功能进行完整的自动化回归测试。该系统完成一轮主机软件所有功能的自动化测试只需2天多的时间,而且是全昼夜无人值守运行,测试完后系统自动出具测试报告,极大地提升了测试效率和质量;且真正实现了人机分离,减轻了测试人员的工作强度;并避免了测试结果受人为因素干扰,可以准确复现测试过程和测试结果。在本自动化测试系统投入应用的两年时间内,已完成主机软件自动化发布测试20余次,累计发现LKJ-15C主机软件缺陷360多个。

5 结语

LKJ-15C主机软件自动化测试系统基于半实物仿真技术和测试脚本技术,真正意义上实现了无人值守的自动化发布测试。目前,该测试脚本库覆盖了主机软件的绝大部分功能需求,已成为主机软件质量的有力防护网。近两年的应用实践表明,本自动化测试系统稳定可靠,测试结果可信,应用成效显著,已成为主机软件的主要测试工具。

自动化测试系统的测试准确性取决于其测试脚本库的丰富程度。因不断有新的或需变更的功能需求补充到主机软件需求分析说明书中,为此,应持续对测试脚本库进行维护和扩充,不断提升其对主机软件功能需求的测试覆盖率,并沉淀和固化主机软件现场应用反馈的测试用例。

后续将研究开发满足多样化、使用便捷等需求的自动化测试系统。例如,开发便携式自动化测试系统,以简化系统,方便携带;开发基于PC的全数字化自动测试系统,不依赖特殊的硬件环境,以方便开发人员和测试人员对主机软件的应用逻辑功能进行调试和预测试,提前发现和修正软件缺陷;研究测试脚本自动生成技术,以减轻测试脚本编写的工作量,等等。

猜你喜欢
测试用例脚本插件
基于LDA模型的测试用例复用方法*
用好插件浏览器标签页管理更轻松
基于路径关键状态变量的测试用例约简
自动推送与网站匹配的脚本
请个浏览器插件全能管家
基于jQUerY的自定义插件开发
软件测试中的测试用例及复用研究
举一反三新编
捕风捉影新编
愚公移山