丛向超
(北京全路通信信号研究设计院集团有限公司,北京 100073)
TSRS集成自动化测试脚本自动化编制技术研究
丛向超
(北京全路通信信号研究设计院集团有限公司,北京 100073)
基于数据驱动的自动化测试中,测试数据脚本生成的是否科学、正确,覆盖所有的测试场景是决定此次自动化测试是否达到预期结果的关键。主要介绍一种应用于TSRS集成自动化测试平台上的数据脚本编制方法。
自动化测试;数据驱动;数据编制
临时限速服务器(TSRS)是高速铁路列车运行控制系统的重要组成部分[1]。研究基于数据驱动的TSRS自动化测试系统在集成测试中具有非常重大的意义。
基于数据驱动的自动化测试是一种从数据文件中读取输入测试数据,并且以数据来控制自动化测试脚本执行流程和动作的测试[2]。在这个测试框架中,输入测试数据是独立于测试脚本程序开发的。数据驱动只要非常少的代码,就能覆盖大量的测试用例。因此在基于数据驱动的自动化测试中,测试数据生成的是否科学、正确,覆盖所有的测试场景是决定此次集成自动化测试是否达到预期结果的关键。为此本文主要介绍一种运行在TSRS自动化测试平台上的测试序列数据生成方法。
集成自动化测试框架由3个部分组成,分别由数据脚本编制子系统、自动化测试子系统、仿真测试子系统组成。
1)数据脚本编制子系统:负责将工程数据源表转换成应用于集成自动化测试中的脚本数据,也就是本文的主要研究对象。
2)自动化测试子系统:启动脚本执行引擎,以数据脚本为驱动,执行逻辑脚本,完成相应测试案例的执行。
3)仿真测试子系统:各个仿真子系统完成接口仿真功能,模拟真实设备和TSRS的交互。
各个子系统之间的交互关系如图1所示。
图1 软件模块关系图
TSRS自动化测试通过由计算机技术开发的自动化测试工具自动生成测试序列,通过仿真设备自动向TSRS发送限速命令,然后收集相应的反馈信息,与测试序列中的期望结果进行比对,自动得出并记录测试结果,测试流程如图2所示。
图2 测试流程示意图
在自动化测试过程中,测试数据的正确生成至关重要。通过测试工具自动生成测试数据脚本,通过仿真设备自动向TSRS发送限速命令,然后收集反馈信息,与测试序列中的期望结果进行对比,自动得出并且记录测试结构。测试序列决定着此次测试的覆盖面,正确的预期结果则是此次自动测试能够正常进行的前提条件。接下来则主要介绍测试序列和预期结构的生成方法。
3.1 数据生成方法
基于数据驱动的自动化测试思想,结合TSRS系统测试的特点,提出一种测试用例和测试数据相互独立的测试框架。测试用例顺序地描述测试过程。测试数据描述限速信息和期望结果。独立开发的仿真测试服务器进行测试调度。
使用简单的输入文件,测试数据有很高的维护性,测试数据采用原始的工程数据源表为测试的数据输入,通过相应的数据导入工具,转换为测试数据库数据具体过程,如图3所示。
图3 数据脚本自动生成流程
根据不同的测试场景,生成测试的临时限速信息(TSR),存放在数据脚本中,根据生成的TSR信息计算预期结果并且和实际的结果进行对比。
生成的测试序列,采用python格式进行存储。定义基本的数据结构信息TSRInfo:
class TSRInfo:
def __init__(self):
self.TSRDesc =""
self.Rule =""
self.Is_execable =False
self.TSROwner_TCCCollections = []
self.TSROwner_RBCCollections = []
self.TSROwner_CTCCollections = []
self.TSROwner_AdjaTSRSCollections = []
self.TSROwner_CvTCCCollections = []
临时限速关联设备TSROwner结构如下所示:
class TSROwner:
def __init__(self):
self.devname =""
self.begin_cover_flag=0
self.end_cover_flag=0
以上描述了生成的临时限速信息以及该临时限速关联的设备以及覆盖标志等信息,接下来重点分析测试的场景以及在不同场景下数据的生成方法。
3.2 测试场景分析及测试数据生成规则
3.2.1 TCC侧线限速数据生成
为了测试TSRS对于当前管辖的所有车站侧线限速处理的正确性,需要生成侧线限速的临时限速序列。
在生成侧线限速的测试序列时,主要是针对不同车站的不同侧线区域,生成测试命令,并且预期该测试命令的接受设备和接收到的指令信息如图4所示。
3.2.2 TCC/RBC临时限速管辖范围自动化测试序列数据生成
在进行测试的过程中,边界点是最容易出现问题的地方,并且占据测试人员80%的测试时间。在进行TCC、RBC管辖边界测试时,定义了如下的取点原则。
如某TCC或RBC管辖范围为[min,max],min为管辖范围的最小值,max为管辖范围的最大值,利用边界值分析,取得如下限速,分别为起点跨边界(min-X,min+X),起点边界外(min-X,min),起点边界内(min,min+X),终点跨边界(max-x,max+x),终点边界外(max,max+x)终点边界内(max-x,max),测试限速完全覆盖和完全不在和部分覆盖该TCC/RBC管辖范围内时的情况,如图5所示。
图4 侧线限速选点示意图
图5 TCC/RBC临时限速管辖范围临时限速测试示意图
3.2.3 TSRS管辖范围自动化测试序列数据生成
以TCC和RBC边界点的最大值作为TSRS管辖范围的边界值,如图6所示。选取原则同3.2.2。目前,自动化测试平台仅针对调度台管界和TSRS管界相同情况下进行测试。
图6 TSRS管辖范围测试示意图
3.2.4 CTC管辖范围自动化测试序列数据生成
如图7所示,如某CTC管辖范围为[min,max],min为管辖范围的最小值,max为管辖范围的最大值,利用边界值分析,取得如下限速,假设CTC管辖范围起终点为(min,max),X为用户可选长度,选取临时限速范围为:跨CTC管辖范围起点(min-X,max),跨CTC管辖范围终点(min,max+X),以及覆盖CTC管辖范围(min,max),以测试调度台处理TSRS处理管辖范围内和跨管辖范围起点或是终点时,对于数据的处理情况。
图7 调度台管辖范围选点测试示意图
3.2.5 长链点和短链点自动化数据序列生成
如图8所示,限速设置规则进行长短链点的测试。假设某长短链的起终点为(min,max),限速长度为X长短链长度为CL。分别取点起点外到起点(min-X,min),起点外到起点内(min-X+1,min+1),起点外到终点(min-1,max),终点到终点外(max,max+X),终点内到终点外(max-1,max+X-1),起点到终点外(min,max+1),起点到终点(min,max),起点到起点内(min,min+ X),终点内到终点(max-X,max),长短链内(min+1,max-1)。以测试TSRS对于长短链边界点的执行情况。
图8 长链点选点示意图
3.2.6 里程标系转换点自动化测试数据序列生成
如图9所示,A系转换点和B系转换点实际为同一个点,为防止A点或是B点配置错误,导致A 和B点不为同一个点,生成如下4个限速。假设A点里程标系为mileA,B点里程标系为mileB,X为可选参数,限速一为转换点外到转换点内(mileA-X,mileA+X),其中mileA+X为与A点的里程标系相同而虚拟的坐标值,该限速执行结果应为失败。限速二为坐标转换点外到坐标转换点(mileA-X,mileA)。限速三为转换点内到转换点外(mileB-X,mileB+X), 其中mileB-X为与B系坐标系相同而虚拟的坐标值,限速四为坐标转换点到坐标转换点外(mileB,mileB+X)。
图9 里程标系转换点取点原则
3.3 测试数据生成算法流程
3.3.1 测试数据生成总体步骤
测试数据生成步骤如图10所示,首先能够根据上面的选点规则,正确的生成相应临时限速命令;其次能够正确计算该命令的预期结果,包括接收到的预期设备以及预期设备接收到的命令信息。
3.3.2 原始数据预处理
完成上面步骤中的生成临时限速信息和计算预期设备两大功能,直接采用工程数据表中的原始数据很难完成,这就需要对导入到数据库的工程数据源表信息进行预处理。
如图11所示,椭圆部分表示一个设备的管辖范围,其中CD为长链范围,E点为里程标系转换点。由于在普通点和长链点以及里程标系转换点中,不能直接进行里程值的转换,于是将整个管辖范围进行处理,分成几个管辖范围的结合,(A,C)、(C,D)、(D,E)。数据预处理流程如图12所示。
图1O 测试数据生成步骤
图11 管辖范围内特殊点示意图
图12 管辖范围内特殊点示意图
对每个设备的管辖范围根据长短链、坐标系转换点进行分段是实现整个数据预处理的关键,其流程如图13所示。
3.3.3 计算预期设备
根据不同的场景生成测试规则后,需要预期某条限速接受到的设备和接受到临时限速信息,在前面进行数据预处理的工作下,只需要按照不同设备的不同管辖范围分段进行顺序查找即可,假设生成的临时限速信息为(Point1,Point2),判断起点和终点是否在某个设备的管辖范围之内,针对TCC或是RBC时,需进行覆盖标志判断。填充2.1节中的TSROwner对象如图14所示。
图13 管辖范围分段计算流程
图14 计算预期设备
结合软件自动化测试理论,提出基于数据驱动测试框架的TSRS自动化测试平台自动测试序列生成方法,实现了测试逻辑和测试数据的分离。实验结果表明,采用本文介绍的数据生成方法,结合自动化测试平台,覆盖了大部分的TSRS测试,提高了测试效率,具有广阔的应用前景。
[1]郭伟,开祥宝,李士祥,等.临时限速服务器自动测试平台的研究与实现[J].铁路计算机应用,2012(10):26-29.
[2]石坤,穆建成,叶峰.基于数据驱动的列控中心报文自动化测试研究[J].铁路计算机应用,2011(8):47-49.
In the automatic test based on data-driven, the expected testing result is determined by generating a scientifi c and accurate test data script and covering all test scenarios. So the paper introduces a method of generating an accurate data script applied in the TSRS integrated automation testing platform.
automation testing; data-driven; data compilation
10.3969/j.issn.1673-4440.2015.06.007
2015-07-13)
北京全路通信信号研究设计院集团有限公司科研重点项目(2300-K1150003-7-ZYY)