张 少 迪
[1.上海电器科学研究所(集团)有限公司, 上海 200063; 2.上海市智能电网需求响应重点实验室, 上海 200063]
作为我国电力需求响应试点之一,国网上海电力公司(简称上海公司)于2014年开始组织和开展试点工作。为了规范电力需求响应系统建设,自2018年开始按照由国家智能电网用户接口标委会(TC549)发布的电力需求响应标准体系建设省级电力需求响应管理平台(简称管理平台),并要求负荷集成商按照国家电力行业标准DL/T 1867—2018《电力需求响应信息交换规范》要求接入管理平台。
DL/T 1867—2018是国家智能电网用户接口标委会(TC549)于2018年正式发布的互操作标准规范,该标准采用面向对象的信息建模方法,具有模型抽象、应用灵活等特点。在虚拟电厂运营商接入初期,广泛存在对协议理解错误、报文格式错误等问题。为了保障管理平台正式生产环境的可靠运行,避免由于负荷集成商误接导致的系统错误,管理平台需要设计并开发面向负荷集成商的接口功能一致性测试验证系统(简称测试系统)。
测试系统的设计需求主要包括:① 自动化测试验证负荷集成商开发的接口是否符合DL/T 1867—2018的规范要求;② 针对不符合要求的负荷集成商需要提出整改建议;③ 测试结果需要同步至管理平台的正式生产环境,作为负荷集成商能否接入的依据。
DL/T 1867—2018发布的时间不久,虽然有国内对该标准的解读[1],但是对该标准的功能一致性测试方法的研究还处于空白。对于国际上应用广泛的电力需求响应信息交换规范——开放式自动需求响应[2],已经开展了标准一致性测试的研究,如文献[3]从一致性测试的理论角度以及开放式自动需求响应的信息模型给出测试的方法,但是缺少对测试系统实现的描述,尤其是在如何解决测试用例增加而无需程序重构方面缺少论述。微服务架构[4]是近期流行的软件架构,可以通过组建的方式实现灵活开发和部署,已经在电力行业开展应用[5]。本文探索基于主流微服务架构的测试系统解决方案。
本文组合微服务框架下的服务注册组件、服务调用组件、流程引擎、服务跟踪组件、网关安全组件,并使用容器管理工具划分网络并容器化部署数据库服务端等。测试系统微服务架构如图1所示。
图1 测试系统微服务架构
(1) 服务注册与发现组件:组合应用服务注册组件和服务调用组件,其中服务注册组件可分为服务端和客户端,服务端利用docker单独部署,客户端与测试程序捆绑,在测试程序中加入服务调用组件依赖,实现对接口服务的注册和发现。
(2) 测试入口:应用网关组件,一方面对外屏蔽测试系统内部的各个服务和接口,另一方面增加传输层安全加密,实现对经密钥授权的待测系统加密接入。
(3) 测试流程引擎:采用自动化测试流程,组合应用流程引擎组件和工作调度组件实现基于时间序列的自动化测试,并利用sleuth进行服务追踪,实现对验证失败的实时追踪并记录。
(4) 容器化数据库:为了实现待测系统的历史查询,对待测系统的测试流程数据进行完整记录,采用非结构化数据库,并利用容器管理工具容器化部署。
测试流程引擎是整个管理平台测试系统的核心组成部分,对待测系统的接入能力进行全方位的测试和验证,采用有限状态机技术设计测试引擎。有限状态机技术是对复杂系统功能进行分解的重要手段,在测试流程引擎的设计方面,通常包含有限个状态,即当有信号输入时,会推动状态转移并产生对应的输出信号,从而实现测试流程的自动化进行。有限状态机通常包括输入输出集合、状态集合、状态初始值等,通过状态机进行状态转移表示。对于自动化测试需求,可以针对DL/T 1867—2018中的UN角色采用有限状态机模型进行描述。测试状态机如图2所示。
图2 测试状态机
对于DL/T 1867—2018规定的五种信息交换模型,即轮询、注册、报告、事件和选择,测试系统用例库设计九个测试用例涵盖这五种信息交换模型,每种测试用例都需要配套相关规定作为测试验证是否通过的标准,只有所有用例都通过标准,才能够验证通过。这九个测试用例的内容和标准如表1所示。
表1 测试用例内容及标准
本文用例库设计规则满足待测系统/设备互联测试需求,在保障待测系统/设备一致性测试设计完整性、规范性及适用性的前提下,满足各种场景下需求响应业务测试需求。针对多级聚合服务于差异化接口的测试需求,实现测试通信层及功能层逻辑框架的分层设计,然后拟定用例架构及用例模型,根据测试目标中的测试需求提取共性及特性用例集,最后采用启发式算法、规划算法等构建满足不同测试需求形成复杂业务测试用例库。状态机和用例库的一致性测试方法逻辑框图如图3所示。
图3 一致性测试方法逻辑图
在考虑动态特性测试过程的设计中,按照ISO/IEC 9646《开放系统互联:一致性测试方法》的技术要求,待测系统应提供协议实现的一致性声明(PICS)和协议实现声明(PIXIT)。其中一致性声明主要描述待测协议所具有的功能,在测试过程中用于比较一致性要求,已完成静态一致性检查过程;实现声明提供协议参数,如通信能力等测试需要的参数。基于上述考虑本文设计的测试过程如图4所示。
图4 测试过程
设计进行连接测试、能力测试以及行为测试。其中连接测试指的是待测系统的连接能力,即是否能够完成基本的信息交互过程;能力测试是用来确定待测系统可观察到的能力,如报文能否正确解析、能够按规范进行时序交互以及对主站指令相应正确性等,需要与一致性测试声明相比较;行为测试是将测试集输入到待测系统中,完成一致性测试,并分析测试结果给出结论。
测试系统与管理平台位于同一公网IP,但是不同端口,待测系统可以通过互联网直接连接测试系统,进入功能一致性测试与验证。为了能够全方位验证待测系统的接口功能,按照测试流程安排测试时序,测试系统时序如表2所示。
表2 测试系统时序
待测系统需要对时序中每个步骤做出准确响应,才能通过测试验证,一旦响应错误都会进行记录。
本文提出的测试系统部署在上海市需求响应管理平台的虚拟映射端口上,上海市负荷集成商在接入省级管理平台之前都需要通过该测试系统进行验证,截至目前已经有三家负荷集成商通过测试验证,在测试过程中也经历过错误和改进,本文选取一些典型的测试错误结果,测试系统实例如表3所示。
表3 测试系统实例
负荷集成商可以在线反复进行测试,测试通过后会在测试系统中留下标记,当正式接入管理平台前,管理平台会查询该标记,只有标记通过的才能够正式接入。负荷集成商在测试过程中逐步发现接口开发中的缺陷,通过改进完成验证。
本文立足于负荷集成商在按照电力行标DL/T 1867—2018接入上海市需求响应管理平台应用场景,针对负荷集成商接口开发乱象造成的管理平台系统风险,提出一种基于微服务架构的自动化功能一致性测试验证方法,通过测试架构设计、流程设计和测试报告设计,准确测试出待测系统的接口错误并给出直接整改建议。通过实际测试表明,可以大大减少管理平台系统风险,帮助负荷集成商完善接口开发,在实际的电力需求响应试点中成为必不可少的辅助工具。