袁瑞铭,巨汉基,汪萍萍,宋锡强,丁恒春,刘岩
(1. 国网冀北电力有限公司电力科学研究院,北京 100045; 2. 华立科技股份有限公司,杭州 310023)
智能电网的发展对智能电能表功能设计提出越来越多的要求,软件的规模及复杂性随之增加[1],因而软件引起的设备故障率逐步攀升。因为软件引发的故障都是批量故障,所以研究智能电能表软件可靠的测试方法已经成为当务之急[2]。目前智能电能表软件测试主要集中在常规功能符合性测试和通信规约一致性测试,也有研究机构开展了针对电能表软件特定功能的白盒测试或灰盒测试[3]。上述方法一般以手工测试为主,测试效率低,对于软件深层次缺陷点难以触及,测试的覆盖率、深度不够,不能有效控制智能电能表软件质量。
分析了智能电能表典型软件故障模式,在此基础上提出了基于黑盒技术的电能表软件测试方法,设计了针对各种故障模式的测试用例,提高了测试的深度和测试覆盖率。在此基础上,研制了智能电能表软件黑盒测试平台,开展了大量的试验,验证了该方法的可行性和合理性。
通过对105例电能表软件故障案例进行分析(现场运行故障50例,实验室激发故障55例),电能表功能故障主要为通信、电量、显示、费控、时钟、时段费率故障,占总故障概率的70%以上。软件故障模式主要包括数据故障、程序故障、产品特性影响的停电、上下电故障和硬件或外界环境干扰所导致的软件故障。其中数据类故障含通信数据类故障、输入型数据故障、输出型数据故障、数据存储类故障,程序故障含异常复位、逻辑控制故障、功能缺失、功能设计与需求不符[4-5]。
结合对电能表软件故障模式的分析,综合利用各种方法设计测试用例[6-10]。
使用功能分析法将电能表的主要功能进行逐层分解,细化到每一个具体的小功能点,对每个测试点设计测试用例。主要功能点包括计量、结算日、时钟、需量、时段、费率、冻结、通信等。
使用有效等价类划分法将每个功能点的全部输入数据划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件。使用少量代表性的测试数据取得较好的测试结果[11]。
针对特殊数据(边界、容错、极限等)和特殊处理场景(正异常停上电),使用无效等价类法、边界值法、极限法设计深度测试用例,设计方法如下:
(1)使用无效等价类法,选择电能表计量、结算日、时钟、时段费率、冻结等模块功能点的无效数据作为输入,验证非合理输入情况下软件的容错性能;
(2)使用边界值法,对电能表各模块程序选取在输入域、输出域、状态转换、功能界限的等于、刚刚大于或刚刚小于边界的值作为测试数据;
(3)使用极限法,分析电能表各模块程序可能存在的极限状态下的错误,列出可能有错误或容易发生故障的情况,验证在并发和极限输入状态下是否还能正常工作。
根据105例软件故障案例分析,通信故障、计量故障、结算日故障是故障率较高的三大功能模块,占比20%、25%、15%。所以文中以通信波特率边界测试、结算日容错及干扰转存测试、极限负荷及全费率切换计量测试为例,介绍如何采用无效等价类法、边界值法、极限法、场景法进行电能表软件测试用例设计。
正常通信波特率值为2 400 bps、4 800 bps、9 600 bps,由于现场环境及电磁干扰,导致默认波特率值发生改变,造成通信失败。
应用边界值分析法,设计波特率边界数据:2 400 bps±3%、4 800 bps±3%、9 600 bps±3%,验证不同波特率情况下通信成功率,试验中观察终端是否出现复位、通信口死掉等现象。测试流程如图1所示。
应用无效等价类设计结算日参数容错测试用例。
(1)参数设置与容错
应用有效等价类设计1日~28日、0~23点的测试用例,电能表软件应返回正确应答帧,回抄参数与设置参数一致。应用无效等价类设计月份、日、整点、进制容错测试用例,例如设置为13月、29日、24点、0A、0B等数值,电能表软件应返回错误应答帧,回抄参数不变。
图1 波特率边界值测试流程图
(2)极限或特殊场景下的转存验证
应用极限法设计极限电压、极限负载及大数据处理情况下测试用例。利用场景设计上电、下电特殊场景下的测试用例,验证转存可靠性。
测试用例包括:
(1)连续施加485或载波等通讯干扰;
(2)设置定时冻结、日冻结、整点冻结与结算日转存为同一时刻;
(3)施加极限电压(如0.7Un、1.2Un);
(4)施加不同负载;
(5)在转存前停电,跨过结算日后上电。
测试流程如图2所示。
图2 极限场景下的转存验证流程图
应用极限法和边界值分析法设计测试用例,验证极限负载及全费率切换条件下分时、分相计量和存储的准确度。
测试用例包括电量进位、全费率切换、上下电、极限负载长时间运行等情况下的计量准确度。
详细测试方案设计如下:
根据设定的走字时间(如:4小时),预置时段费率参数(如:9点00分-尖、9点15分-峰、9点30分-平、9点45分-谷),配置极限负载点(如:Imin及Imax),在功率因数1.0条件下进行正向有功走字试验。在走字期间:
(1)根据设定的间隔(如1分钟)自动读取标准表的功率,并按平均功率计算理论电量;
(2)根据设定的间隔(如:1小时),通过RS485、载波等通讯方式自动读取被测表当前电量,验证能量递增情况;
(3)通过修改时间确保每个费率进行走字测试;
(4)自动控制台体改变负载点,验证每个负载点的准确度。
走字时间到后自动切换为无负载运行:
(1)比对理论电量与电能表记录电量的误差;
(2)比较总电量与分时电量之和的一致性;
(3)比较总电量与分相电量之和的一致性。
正向有功走字试验完成后自动切换到反向有功走字试验,测试方案同正向有功走字试验。测试流程如图3所示。
图3 计量准确度测试流程图
软件黑盒测试平台能够完成测试方案管理、自动测试、协议配置、档案管理、设备调试、报告生成、故障信息录入。平台采用基于.NET平台的多层技术架构,提高系统的灵活性、可扩展性、安全可靠性,软件开发使用C#语言,数据库为MySQL,业务架构设计主要包括支持层、数据层和应用层,如图4所示。
图4 软件黑盒测试平台业务架构
测试平台由测试软件和测试台体、服务器及加密机组成。测试台体包括电能表检验台体、自动机械手、大功率无线电近场辐射模块、多通道通信检测及信号干扰注入模块、负载纹波检测模块等。测试软件基于脚本技术,实现黑盒测试用例的方案编写,根据面向对象不同制定五大类基础操作规范,包括表计操作、台体操作、加密机操作、函数运算、信息提示,从而使测试方案编制结构化、标准化。首先根据测试方案设计每个测试用例的测试步骤,每个测试步骤会对应一个最小单元的基础操作,将所有测试步骤按照基础操作编制,即形成可实施的动测试方案。加密机提供智能电能表费控功能加密服务,服务器提供数据访问存储服务。
测试流程如图5所示,测试软件首先根据对被测的电表测试需求、信息进行项目配置,定义测试项、测试步骤、测试计划,建立测试项目,然后软件下达测试项目及命令,根据对应项目的测试方案对测试台体和电能表进行控制和数据通信,协同各设备逐个完成一系列测试用例的自动化测试,并记录测试数据和结果,上传给测试软件,测试软件进行测试结果分析及产生测试报告,报告为word和excel格式。
测试平台可兼容不同厂家的单、三相电能表,方案可编辑、组合和配置,通信协议可扩展。
图5 自动化测试流程
按照以上黑盒测试用例设计思路,重点采用无效等价类、边界值、极限法等方法设计18项测试用例,主要包括计量、结算日、时钟、需量、时段费率、冻结、拉合闸、通信、规约遍历、负荷记录、事件记录、存储等功能模块的容错、边界及极限、上下电类测试用例。测试项目如表1所示。
表1 电能表软件测试项目
选取实验室常规检测已合格的24个厂家的电能表进行以上18个项目的深度测试,发现各厂家的电能表软件均存在缺陷。表3列举了部分较严重的不合格项,包括极限情况下电量少计、停上电时电量未转存或记录错乱、时段费率优先级设置错误、掉电事件记录出错、波特率边界值时通信失败、上电时日冻结不补冻、广播校时容错性差、需量周期设置错误等。
表2 部分严重不合格项记录
测试结果充分验证了测试平台可有效检测出电能表软件的错误,提高软件质量可靠性。并且以上测试项目可以自动执行,1天时间即可完成,测试效率高。
首先对电能表软件故障模式进行分析,在此基础上研究软件黑盒测试方法,采用无效等价类法、边界值分析法、极限法等方法设计测试用例,覆盖电能表软件的各种典型故障模式。开发了软件黑盒测试平台,实现了测试的自动化。测试结果表明,该测试平台达到了设计目的,验证了方法的可行性和合理性,可有效触发电能表软件的各类深层次缺陷,显著提升电能表软件质量。