APP下载

基于半实物仿真的抄表系统自动化测试平台设计

2022-12-26刘宏伟

计算机测量与控制 2022年12期
关键词:测试用例脚本工装

刘宏伟

(陕西交通控股集团有限公司 宝鸡分公司,陕西 宝鸡 721013)

0 引言

随着智能电网的快速普及,智能化的抄表技术日益成熟,相比于过去费时费力的人工抄表,目前普遍使用的低压集中抄表系统具有快速、准确的优点,且可以利用电力消费数据进行统计分析,完善阶梯电价政策,预测国民经济发展水平[1]。由于电力计量涉及消费者的切身利益,对差错具有极低的容忍度,因此,保证抄表系统的稳定性和计量准确性就显得尤为重要。

现今国内的抄表系统生成厂家众多,各地电网的输配电结构也存在差异,故抄表系统在上市前需要进行完备、严苛和有效的测试[2]。目前主流的测试平台大多采用现场实景测试,人工控制并再现各种用例,功能覆盖面和测试效率都难以适应当前快速发展的电力行业。随着集中抄表系统整合的功能越来越多,测试工作量十分庞大,每次系统升级需要完成的测试条目高达2 400多条,如此庞大的工作很难依靠纯人工完成,因此,引入自动化测试将是未来的一个主流方向。

文献[3]分析了抄表核算自动化模式的构成要素,以及各模块之间的耦合关系。文献[4]针对电力线传输的不稳定性,通过软件方式建立信道模拟平台,实现对载波通信性能的测试,但该平台全部使用软件模拟,尽管开发效率高,也可以实现整个测试流程的自动化,但很难重现真实场景,尤其是复杂时变的电磁环境,测试准确度难以保证。而采用全实物测试,不同厂家开发的抄表系统中的各模块之间存在强耦合性,开放的测试I/O通道少,需要为每个版本的系统独立开发一套测试设备和测试软件,存在测试设备价格昂贵、开发周期长、测试人员的专业化要求高等缺点[5]。而半实物仿真就可以很好的平衡二者的关系,文献[6]根据IEEE 1641和IEEE 1671两个面向信号自动测试系统的国际标准,设计了基于自动测试标记语言(ATML)的半实物仿真测试标准族,定义了测试信息交换的XML Scheme 模式,但并没有针对行业应用给出具体实操说明。

文献[7]提出基于RT-LAB实时仿真系统的半实物仿真测试平台。将待测对象的硬件通过I/O物理接口和Modbus通信连接到RT-LAB测试平台,实现协同仿真,但由于采用传统的集中式过程控制模式,占用系统资源较多。

文献[8]提出了一种基于分布式仿真测试环境的嵌入式软件自动化测试系统;该系统以实时仿真机为核心,模块化定制接口,实现对系统动态特性的半实物仿真软硬件环境,很好地解决了嵌入式系统内存资源较少,与硬件紧密相关等问题。

为了尽可能减少测试平台的开销,通过测试用例的脚本化,极大地减轻测试开发人员的负担,测试脚本的可移植性也保证了测试平台的可重用性,提高了软件系统的可维护性[9]。

文献[10]采用“一主多从”的分布式体系结构,模拟变电站的运行环境,并采用脚本技术实现自动化的回归测试。

文献[11]提出一套应用于列车运行监控系统的基于半实物仿真技术和测试脚本技术的自动化测试系统,可以极大提高测试效率。

针对目前自动测试平台和待测抄表系统耦合性高、测试平台适应面窄、抄表系统功能升级后兼容性差的问题,本文借鉴文献[6]中的半实物仿真的思路,并遵从XML Scheme模式,开发一种基于嵌入式通用化、自动化测试平台,将待测单元与测试平台分离,通过统一的工装协议,降低各模块之间的耦合性。另外,本文借鉴文献[9]和[11]中的模块化的脚本测试技术,通过测试脚本的可移植性和可重用性,提高测试平台的普适性,缩短了功能升级后的平台开发周期。同时,增加测试用例的覆盖面和灵活性,提高测试效率和准确度。

1 测试平台的总体设计框架

低压集中抄表系统主要包括:载波电表、载波模块(STA,station)、中央协调器(CCO, central coordinator)和集中器,四个模块之间的逻辑关系如图1所示。载波电表主要实现电力的计量;载波模块主要将计量数据调制到电力载波进行通信;中央协调器实现多路载波信号的多路复用;而集中器主要实现本小区数据的集中上传。

图1 低压集中抄表系统示意图

测试平台的主要工作是根据不同的应用场景和设计用例,测试上述模块之间在数据链路层的功能完备性和鲁棒性,以及相应的性能。

具体的测试内容和对应的国标协议如下:

1)载波电表与STA的交互测试,DL/T645-2007协议(简称645协议)[12]。

2)STA与CCO的交互测试,Q/GDW 11612.43-2016协议(简称11612协议)[13]。

3)CCO与集中器的交互测试,Q/GDW1376.2-2013协议(简称1376协议)[14]。

4)集中器与STA透传报文交互测试。

本文针对上述4种测试要求,设计一套由待测的硬件单元和自研的客户端软件组成的自动化测试平台。平台采用半实物仿真的服务器-客户端(C/S)架构[6],总体结构如图2所示,图中双向箭头为报文交互方向。图中左半部分是以实物形式出现的硬件测试单元,既包括测试对象STA和CCO,也包括基于ARM的测试服务器;右半部分是安装在计算机中的客户端软件,用于模拟测试的信源和信宿。而工装协议是连接硬件测试单元和客户端软件的桥梁,也是本文重点研究的内容。

图2 测试平台逻辑架构图

测试平台最主要的测试项目是协议一致性测试,测试流程如图2中的①、②、⑦序号所示。首先,客户端软件中的虚拟电表将根据不同的测试用例,通过测试脚本按步骤模拟电表发出报文信号;然后,经过嵌入式控制软件,将初始报文转换为工装协议报文后,经载波模块STA发给协调器CCO;最后,客户端软件中的虚拟集中器,根据测试脚本自动采集返回数据,并根据测试用例将测试结果与预设结果进行比对,实现回归测试目标,就可以测试STA和CCO的性能,发现存在的缺陷和不足,进而改进设计。上述的测试过程是双向的,可以是①到⑦,也可以是⑦到①。

该测试平台具有以下优点:

1)具有一般C/S架构所具有的交互性强、存取安全、响应速度快、支持大数据处理等优点。

2)基于Modbus协议规范,将进出STA和CCO的通讯报文统一为工装协议,统一并减少硬件接口,降低硬件测试单元和客户端软件之间的耦合度。

3)硬件测试单元,主要实现待测对象STA和CCO的交互,这部分涉及大量的时序电路和电磁兼容,用硬件实物测试,可以反映真实抄表环境下的传输时延和电磁干扰,充分暴露故障隐患。

4)因为客户端软件已经集成了虚拟电表和虚拟集中器,这是测试平台的信源和信宿,若要添加新的测试用例,只需根据新的测试功能,在客户端软件上编写特定的报文脚本,调用工装协议中已有的API接口函数,而无须重新开发程序,提高了平台的开放性,缩短了开发周期。

2 硬件测试单元设计

硬件测试单元包括三部分:待测单元,强电控制单元(简称:强电单元)和弱电测试控制单元(简称:弱电单元),其硬件结构如图3所示。

图3 硬件结构图

待测单元包括载波模块STA和中央协调器CCO,是测试平台的测试对象。

强电单元的功能包括两部分,一方面为其他单元提供工作电压,将AC220 V变为直流电压后,为STA和CCO提供DC12 V,为ARM核心板提供DC3.3 V。另一方面,AC220 V也是低压宽带电力线载波的通信媒介。

弱电单元是测试平台的核心,主要功能包括:

1)通过ARM控制STA和CCO:首先,ARM核心板发出电气控制指令,在电气控制模块中包括4个继电器,其中两个继电器用来控制CCO和STA的DC12 V工作电源通断,另两个继电器用来控制CCO和STA的AC220 V载波电力线的通断。

2)通过RS485接口和待测单元通信:ARM输出的控制信号,经两路TTL转RS485接口电路,并基于UART协议,通过控制引脚电平对STA和CCO进行通讯或硬件复位,实现各种用例的测试。

3)通过以太网和客户端连接:ARM核心板通过以太网模块和安装客户端软件的计算机连接,使用W5500芯片的SPI接口来实现TCP/IP协议栈,实现基于工装协议的测试通信[15]。

3 工装报文协议

客户端软件需要通过硬件测试单元中的弱电单元控制待测单元,这就需要根据不同的测试用例,发送不同的测试指令。既要控制STA和CCO的电源、波特率、硬件复位等底层硬件,又需要对通信的报文进行打包和转发操作。

由于在通信过程中涉及到的硬件接口、通信协议和测试协议较多,如果采用分离式的思路,在客户端对协议的解析非常复杂,因此有必要设计一套通用的通信协议。考虑到CCO和STA采用一对多的主从结构,且物理接口采用RS485差分信号以支持长距离传输,因此,本文设计的工装报文协议通过Modbus协议规范将不同类型的协议报文统一打包和转发,在客户端根据协议类型字段来区分不同的协议报文[16]。报文类型的定义如表1所示。

表1 报文类型的定义

Modbus协议主要包括起始符、帧长度、报文类型、报文地址、数据域起始符、数据域及CRC校验和结束符8部分。工装报文协议中的字段长度和具体功能的定义如下:

1)起始符:0xED,代表一帧报文开始。

2)帧长度:2字节,(报文类型+报文地址+数据域起始符+数据域+校验)的总字节数。

3)报文类型:用1字节来定义13个报文类型的功能,如表1中所示。

4)报文地址:报文传输对应的设备地址,此处对应槽位编号,0xEE表示工装平台,0x01代表载波模块,0x02代表中央协调器。

5)数据域起始符:0xEE,增加起始符,用以降低解析错误概率。

6)数据域:长度不确定,由该报文对应的功能类型决定。

7)CRC校验:报文之前所有字节直接求和,取8bit,忽略溢出(从起始符开始)。

8)结束符:0xEE,代表一帧报文结束。

4 软件系统设计

自动化测试平台的软件包括部署在硬件测试单元ARM核心板的嵌入式控制软件和安装在远程计算机的客户端软件。

4.1 嵌入式控制软件

嵌入式控制软件是连接硬件测试单元和远程客户端的桥梁,是实现工装报文协议的载体,也是半实物仿真的关键。它作为C/S架构中的服务器,一方面模拟产生虚拟电表和集中器,连接硬件测试单元,另一方面响应客户端软件的请求。虚拟的客户端指令通过嵌入式软件来控制实体的STA和CCO。

嵌入式控制软件的主要功能包括:

1)嵌入式软件的初始化、与客户端软件建立TCP连接。

2)接收并转发客户端下发的指令,封装为工装协议报文后,发给待测单元,最后将测试响应反馈给客户端。从信号与系统的角度看,对应自动化测试平台的输入激励和输出响应。

客户端软件下发的工装报文主要有三类。

(1)虚拟电表回复给STA的645协议报文,槽位编号为0x01;

(2)虚拟集中器发送给CCO的1376协议报文,槽位编号为0x02。

(3)客户端软件对工装平台的命令报文,槽位编号为0xEE。

其中第(1)种和第(2)种报文属于透传命令,报文类型为0x01,第三种属于工装控制命令。当ARM核心板收到客户端的工装协议报文后,需要对报文中包含的3种不同协议进行解析处理,接收到客户端软件后的报文处理流程如图4所示。

图4 工装报文处理流程

3)ARM核心板收发工装报文:当ARM核心板通过两路RS485分别收到STA的645协议报文和CCO的1376协议报文时,首先判断报文的合法性,然后将它们打包为工装协议报文,此时报文类型为0x01,槽位编号对应报文来源设备(虚拟电表或虚拟集中器)的编号。

4.2 客户端软件

客户端软件安装在远程计算机,主要实现自动化功能测试和脚本测试。即运用客户端软件运行的测试脚本来实现对测试流程的完全控制,并通过测试结果和预期结果的差异对比,发现抄表系统存在的功能缺陷或性能短板。客户端软件的功能包括四部分。

1)人机交互:操作人员根据测试用例,通过交互界面,下达测试指令;

2)工装控制:连接工装,工装停/上电,485通讯波特率切换;

3)脚本管理:包括脚本的下载、编辑和执行操作。

4)常规功能:包括用户图形界面、测试信息监视、测试报告存储管理、通信设置等模块。

客户端软件的主要功能如图5所示,其中:系统主控模块主要用于协调整个测试平台的正常运作,根据用户要求选择测试方式和测试用例;测试用例管理模块,用于控制不同测试方式下测试用例的树形拓扑;端口配置模块,用于用户根据相关协议完成对端口参数的配置;测试进度更新模块,用于实时更新UI中所选测试用例的执行进度,包括已执行测试例个数,已失败测试例个数,已用时长等信息;文件管理模块,用于管理测试用例信息、测试日志和测试报告。

图5 客户端软件的功能结构

测试指令适配器主要完成工装协议报文的解析,它是客户端软件和被测对象的数据交互接口,它是双向测试接口。若被测对象为CCO,则用软件模拟集中器;若被测对象为STA,则用软件模拟电能表。

4.3 客户端软件报文处理流程

客户端软件报文处理部分主要分为报文接收处理和下发处理两部分。

4.3.1 报文接收处理模块

客户端软件运行时,会不断收到来自硬件测试单元的报文,这些报文根据功能分为三类,分别为工装确认报文、透传1376协议报文和透传645协议报文。在对报文进行下一步处理前,需要先判断报文是否属于上述这三类,即判断工装协议报文的合法性,然后再分发到合适的异步队列中等待处理。

本测试平台使用基于生产者-消费者模式的异步队列,报文分发处理模块作为生产者,所有需要验证报文回复的部分均作为消费者。通过3个异步队列作为仓库,也就是缓冲区。可以降低报文接收和报文处理的时序相关,达到各环节之间的解耦。这样设计的原因在于:在测试过程中,生产数据和处理数据的速度不同,生产数据较快时,可以将消费者来不及处理的数据暂存于缓冲区中,等待生产者的速度慢下来,消费者再慢慢处理队列中的缓存数据。报文接收处理流程如图6所示。

图6 报文分发处理流程图

4.3.2 报文下发处理模块

客户端软件运行时,将产生的3种协议类型报文打包为工装协议报文,统一下发给硬件测试单元。3种协议类型报文包括:由工装产生的工装控制类报文;由虚拟集中器产生的1376协议报文;由虚拟电表产生的645协议报文。这3种报文的处理流程如图7所示。

图7 报文处理下发流程图

4.4 脚本系统

测试脚本的开发语言的不同,将直接影响测试平台的开销和性能。测试用例的脚本化可极大地减轻测试开发人员的负担,提高软件系统的可维护性。同时,测试脚本的可移植性也保证了测试平台的可重用性。本测试平台采用Python语言,Python是一种具有解释性,编译性、互动性和面向对象的脚本语言,同时具有很强的数据处理能力和跨平台特性,其中Python具有丰富和强大的库,常被称为胶水语言,能够把用其他语言编写的各个模块粘合在一起,使得模块之间具有很强的粘合度,特别适用于脚本系统的开发[17]。

本平台以基础测试块(Block)生成测试用例的方式,通过测试人员在系统UI界面上直接进行拖拽,将多个Block进行组合,形成一个完整的测试用例。通过后台运行引擎,对UI界面的内容进行翻译、保存和运行[18]。每个Block都具有统一的输入输出格式,保证了Block间的数据流动。

首先,本平台选用XML(可扩展标记语言)作为测试脚本的保存和读取、上传和重载语言。XML是一种用于标记电子文件、使其具有结构性的标记语言,具有极其简单的语法规则和严密的数据格式,被广泛应用数据保存和数据交换[19]。采用XML语言,不仅保证了测试脚本的关键信息能够在传递过程中不丢失,而且在测试脚本的XML文件中记录各个Block的连接方式和各个模块的参数配置信息,方便不同测试人员对测试流程的重现。

其次,利用Python的面向对象特性,将Block进行对象实例化,而XML保存的各个关键信息作为Block对象实例化的初始化条件,这样在开发和重新载入过程就能保证各个Block的关键信息的一致性。

最后,利用UUID(通用唯一识别码)的唯一性,在模块第一次实例化时将系统当前UUID作为该Block实例的唯一标识码,后续再进行测试用例的传递和重用时,该标识码都不再变化,保证了每个测试用例中Block实例的唯一性和不变性。脚本测试流程如图8所示。

图8 脚本测试流程图

5 典型应用和效果分析

本测试平台的典型应用是协议一致性测试,根据11612协议、645协议和1376协议的具体内容设计测试用例,并通过半实物仿真平台进行测试,判别该协议的实现是否与其协议的标准描述一致。主要过程如图2所示,在虚拟的STA和虚拟集中器模拟生成输入激励,并通过工装协议,输入到实物待测单元,并对测试输出响应进行一致性评判。同时跟踪测试日志信息,将所有测试log进行存储,并自动生成测试报告。

根据不同的测试目标以及适用协议的不同研发阶段,设计了单模块测试、板级测试和虚拟测试3个层次。

单模块测试是从微观角度,关注物理层的集成功能和协议,通常用于故障检测和判定,可直接使用板级测试下高层协议的测试用例。

板级测试是从中观的角度,关注单元级的功能,在虚拟ARM模式下运行开发的所有单元测试用例,测量时可直接通过USB或网口与客户端软件进行数据交互。同一板级测试脚本可跨平台重复使用,无需再次开发。

虚拟测试是从宏观的角度,关注整个系统的功能相应,忽略物理层的具体实现,测试整体集成协议的一致性,效率高,但对细节的分析不够。虚拟测试将单层协议(包括应用层、网络管理子层或媒体访问控制层) 或高层集成协议加载于通用虚拟ARM中。

3种测试方法的区别体现在对被测模块的自动上下电控制及端口识别方面。

虚拟测试方式要先启动并控制客户端软件,并读取随机生成的测试点及跟踪(Trace)端口,再更新端口配置文件中的端口信息。

板级测试和单模块测试方式要先将待测设备与安装客户端软件的PC机进行连接,随后读取测试用例在PC上映射的端口,并更新端口配置文件中的端口信息,再控制被测对象上下电。 另外,单模块测试还需要额外控制矢量信号发生器。因此要实现全自动测试,系统要根据不同测试方式及被测对象自动控制对应测试方式下被测对象的上下电、端口自动读取、端口配置文件的更新及信号发生器。

客户端软件运行后,首先通过Socket与硬件测试单元建立连接,测试系统和被测CCO的数据交互流程如图9所示。

图9 数据交互流程图

测试平台运行主界面如图10所示,可以通过UI界面实时查看报文传输内容和运行状态。

图10 客户端软件运行界面

图11是测试低压电力集中抄表系统的用户电力信息瞬时冻结功能的一个测试脚本,该脚本的主要功能是瞬间冻结电表所有的电力信息,并读取电表记录的用电基础信息。

图11 脚本界面

本测试平台可在运行时实时保存报文信息和脚本运行信息,保证测试信息不会丢失,便于查询并分析历史测试信息。测试脚本在运行后部分通信报文记录如图12所示。

图12 运行脚本后的数据记录

当脚本以XML格式进行保存时,此时会在测试平台的XML目录中生成如图13所示的文本。

图13 XML格式的脚本

经过实际工程应用,本测试平台具有以下优点:

1)测试效率提高75%:针对国内各个地区的不同功能要求,本测试平台可以在保留已有的Block模块的情况下开发新的模块,同时可利用已有模块组成新的测试脚本,避免重复开发已有功能,缩短了新测试项目的开发时间。在同等条件下,相比人工测试,本测试平台的测试效率提高75%。

2)测试准确度提高40%:本测试平台会保存所有通信报文和测试结果报告,当测试不通过时,测试平台会迅速定位到测试不通过的模块,不会遗漏任何测试细节。针对低压集中抄表系统功能版本更迭较快的特性,本测试平台也可迅速做出调整。在执行相同的测试任务时,相比人工测试,本测试平台的测试准确度提高了40%。

3)功能覆盖面广,开发周期短:目前本测试平台的功能已经完备,不仅包含了常用功能,还涵盖了使用国家电网协议的多数省市测试平台中的特殊功能。在功能测试中,无论是超高次循环次数的压力测试,还是单个的功能性能测试,都可用本测试平台来完成,大幅减少了因重复功能开发而造成的人力、物力的浪费,缩短开发周期。

6 结束语

本文针对低压集中抄表系统,设计了一套自动化测试平台。首先,本平台引入半实物仿真的C/S模式,在测试准确度和测试效率方面取得了良好的折中;其次,设计了统一的工装协议,将不同协议产生的报文进行统一的打包和下发,降低硬件接口的个数,提高了平台的普适性;最后,创新性地设计了模块化的脚本系统,通过多个基本测试块组合生成新的测试脚本,在降低开发测试脚本难度的同时,增加了测试执行人员的灵活性,并缩短了开发周期。

猜你喜欢

测试用例脚本工装
酒驾
某型轴承防错工装的设计
回归测试中测试用例优化技术研究与探索
安奇奇与小cool 龙(第二回)
基于SmartUnit的安全通信系统单元测试用例自动生成
炫屹.未来家李赟 影院/智能、家装/工装,齐头并进
一种取出塑件残余量的辅助工装
快乐假期
小编的新年愿望
工装风衣