一种电力保护装置HMI自动化闭环测试方法及系统与流程

摘要: 本发明涉及电力系统二次设备的测试,特别涉及一种电力保护装置hmi自动化闭环测试方法及系统。背景技术:1、电力保护装置的人机界面(hmi)程序在电力系统运行中承担...
一种电力保护装置HMI自动化闭环测试方法及系统与流程

本发明涉及电力系统二次设备的测试,特别涉及一种电力保护装置hmi自动化闭环测试方法及系统。

背景技术:

1、电力保护装置的人机界面(hmi)程序在电力系统运行中承担着状态显示、参数配置、日志记录等关键功能,其可靠性直接关系到电力系统的安全性。随着功能复杂度的提升,传统人工测试方式效率低、覆盖率不足,难以满足电力系统对高可靠性和快速迭代的需求。因此,自动化测试方法逐渐成为研究和应用的重点,现有技术主要包括坐标录制与脚本回放类、虚拟设备触控测试类、控件操作覆盖类和覆盖率度量与用例生成类。

2、坐标录制与脚本回放类通过录制基于坐标的用户行为,转换为虚拟键盘脚本并回放执行,实现回归测试,该方法降低了脚本维护成本,但测试过程独立于开发流程,缺乏与版本管理系统的闭环联动,测试结果无法直接驱动缺陷修复。

3、虚拟设备触控测试类通过创建虚拟设备、封装坐标事件数据包并注入内核,实现高精度触控界面测试,该方法保证了测试的可复现性,但主要针对通用触控设备,测试过程依赖外部事件注入,无法直接获取hmi程序的内部页面状态,效率和准确性受到限制。

4、控件操作覆盖类通过逐一执行控件支持的操作来实现测试覆盖,避免遗漏。该方法提高了测试全面性,但测试用例的生成依赖固定控件集合,缺乏根据页面元素灵活组合的能力,难以适应电力保护装置hmi程序的复杂菜单树结构。

5、覆盖率度量与用例生成类通过录制人工操作生成脚本,并结合代码调用关系图计算覆盖率,该方法提升了测试投入产出比,但测试过程仍然停留在外部操作层面,未能嵌入开发流程,缺乏自动反馈与工单生成机制。

6、综上,现有技术存在以下不足:测试结果无法自动反馈至版本管理系统,缺少工单生成与迭代修复的自动化流程;测试过程独立于程序运行,依赖外部识别页面或控件,效率和准确性不足;现有方法多依赖固定脚本或控件集合,缺乏根据页面元素自组织、自由组合测试用例的能力。

技术实现思路

1、本发明的目的在于克服现有技术中测试过程独立于开发流程、缺乏闭环机制、测试用例生成方式受限等问题,提供一种电力保护装置hmi自动化闭环测试方法及系统,实现了测试过程与开发迭代的直接联动,减少人工介入,提高缺陷修复效率,测试过程不依赖外部识别页面或事件注入,避免了识别误差,提升了页面状态获取的准确性和实时性,实现了测试用例的自组织和自由组合,增强了测试的适应性和扩展性,在测试效率和覆盖率上均有提升。

2、为解决上述技术问题,本发明是采用下述技术方案实现的:

3、第一方面,本发明提供一种电力保护装置hmi自动化闭环测试系统,包括被测hmi装置、测试服务器、电力测试仪和git服务器;

4、所述被测hmi装置内存储有hmi程序;所述hmi程序用于在debug模式下解析hmi程序内置的menu.json文件以生成菜单树并自动创建测试子线程;所述测试子线程作为udpclient,用于将所述测试服务器执行测试时下发的操作指令转发至所述hmi程序的ui展示层执行,并将执行后的页面状态以及基于所述电力测试仪输出的模拟量信号产生的测试数据反馈至所述测试服务器;

5、所述测试服务器作为udp server,用于根据所述git服务器提供的开发阶段信息切换测试模式;向所述测试子线程请求菜单树信息以生成测试用例;根据所述测试用例执行测试,基于测试子线程反馈的页面状态和测试数据生成测试结果,根据测试结果生成工单并上传至所述git服务器;

6、所述电力测试仪用于根据所述测试服务器执行测试时下发的输出设定参数,向所述被测hmi装置输出模拟量信号;

7、所述git服务器用于向所述测试服务器提供当前hmi程序的开发阶段信息,根据所述测试服务器上传的工单形成开发任务,实现闭环迭代。

8、可选的,所述根据所述测试用例执行测试,包括:

9、所述测试服务器根据测试用例生成测试键值指令并按序下发至所述测试子线程,将所述测试子线程反馈的页面状态与预期页面进行比对以验证页面定位;

10、若当前测试页面为查看类页面,所述测试服务器生成随机数作为输出设定参数下发至所述电力测试仪,将所述测试子线程反馈的测试数据与所述随机数进行比对以验证显示是否在误差范围内;

11、若当前测试页面为设置类页面,所述测试服务器向所述测试子线程请求当前测试页面的初始值/整定值,根据测试子线程反馈的初始值/整定值生成预置随机数;根据所述预置随机数与所述初始值/整定值的差值生成对应的键值顺序并依序下发修改键值操作命令至所述测试子线程,指示所述测试子线程将初始值/整定值修改为所述预置随机数;向所述测试子线程下发确认键值操作命令进行保存;将所述测试子线程反馈的测试数据与所述预置随机数进行比对以验证显示是否一致。

12、可选的,所述hmi程序还包括通信管理层、loop层和数据管理层;

13、所述通信管理层用于与所述测试服务器建立udp通信连接;

14、所述loop层用于与外部硬件交互,包括向所述ui展示层转发来自外部按键/触控驱动的操作指令,向lcd屏转发来自所述ui展示层需要显示的buffer数组,以及向所述ui展示层转发来自所述数据管理层的数据;

15、所述数据管理层用于存储和管理所述hmi程序中的数据。

16、可选的,所述测试服务器包括指令生成模块、udp server模块、测试结果生成模块、数据生成模块、git模块和ssh通信模块;

17、所述udp server模块用于与所述测试子线程建立udp通信连接;

18、所述指令生成模块用于根据所述菜单树信息和当前测试模式生成测试用例,并根据所述测试用例生成操作指令序列;

19、所述数据生成模块用于生成随机数/预置随机数以用于执行测试;

20、所述测试结果生成模块用于基于比对结果生成测试结果;

21、所述git模块用于向所述git服务器请求当前hmi程序的开发阶段信息,接收所述git服务器返回的开发阶段信息,以及所述工单上传至所述git服务器;

22、所述ssh通信模块用于与所述电力测试仪建立ssh连接。

23、可选的,所述测试模式包括健壮度测试模式、新功能测试模式和漏洞修复测试模式;

24、在健壮度测试模式下,操作指令间隔缩短至100ms,随机组合所有键值进行压力测试,直至hmi程序生成core dump文件为止,以程序是否崩溃作为测试通过依据;

25、在新功能测试模式下,根据版本差异信息定位新增页面或元素生成功能验证测试用例;

26、在漏洞修复测试模式下,根据修复记录定位已修复的页面元素生成回归测试用例。

27、可选的,所述菜单树信息包括菜单结构、页面类型、页面id、页面元素及数据索引;

28、所述页面类型包括查看类和设置类;

29、当页面类型为查看类时,所述测试用例包含方向键值和跳页键的组合;

30、当页面类型为设置类时,所述测试用例包含方向键值、跳页键、修改键值和确认键的组合;其中,所述修改键值用于修改当前页面的初始值/整定值,所述确认键值用于在所述修改键值下发后执行保存操作。

31、可选的,所述输出设定参数包括电压设定值、电流设定值或开关量状态中的至少一种。

32、可选的,所述测试服务器通过虚拟git账号将所述工单上传至git服务器。

33、第二方面,本发明提供一种电力保护装置hmi自动化闭环测试方法,应用于第一方面任一项所述的电力保护装置hmi自动化闭环测试系统,执行主体为测试服务器,包括:

34、根据git服务器提供的开发阶段信息切换测试模式;

35、向测试子线程请求菜单树信息,根据接收到的所述菜单树信息生成测试用例;

36、根据测试用例执行测试,包括:

37、根据测试用例生成测试键值指令并按序下发至所述测试子线程,将所述测试子线程反馈的页面状态与预期页面进行比对以验证页面定位;

38、若当前测试页面为查看类页面,生成随机数作为输出设定参数下发至所述电力测试仪,将所述测试子线程反馈的测试数据与所述随机数进行比对以验证显示是否在误差范围内;

39、若当前测试页面为设置类页面,向所述测试子线程请求当前测试页面的初始值/整定值,根据测试子线程反馈的初始值/整定值生成预置随机数;根据所述预置随机数与所述初始值/整定值的差值生成对应的键值顺序并依序下发修改键值操作命令至所述测试子线程,指示所述测试子线程将初始值/整定值修改为所述预置随机数;向所述测试子线程下发确认键值操作命令进行保存;将所述测试子线程反馈的测试数据与所述预置随机数进行比对以验证显示是否一致;

40、根据对比结果生成测试结果,并基于测试结果生成工单信息;

41、将所述工单信息上传至所述git服务器。

42、第三方面,本发明提供一种电力保护装置hmi自动化闭环测试方法,应用于第一方面任一项所述的电力保护装置hmi自动化闭环测试系统,执行主体为存储有hmi程序的被测hmi装置,包括:

43、在debug模式下解析hmi程序内置的menu.json文件以生成菜单树并自动创建测试子线程;

44、向测试服务器发起udp通信连接请求,与所述测试服务器建立udp通信连接;

45、接收所述测试服务器下发的菜单树信息请求,根据所述请求向所述测试服务器返回所述菜单树信息;

46、接收所述测试服务器执行测试时下发的操作指令,将所述操作指令转发至所述hmi程序的ui展示层执行,将执行后的当前页面状态反馈至所述测试服务器;

47、将基于所述电力测试仪输出的模拟量信号产生的测试数据反馈至所述测试服务器。

48、与现有技术相比,本发明所达到的有益效果:

49、1、通过在测试服务器中配置虚拟git号,将测试结果和缺陷信息自动生成工单并上传至git服务器,实现闭环测试流程,确保测试结果直接嵌入开发迭代过程,解决了现有技术的测试过程通常停留在脚本回放或控件操作层面,测试结果仅供人工分析,缺乏与版本管理系统的自动联动,测试结果无法形成闭环的问题;

50、2、在hmi程序的 debug模式下自动创建测试子线程,该线程直接接收测试服务器的操作命令并反馈当前页面状态和数据,相当于在程序内部建立测试通道,避免了外部识别的不确定性,提高了测试过程的实时性和准确性,解决了现有技术未嵌入hmi程序运行,依赖外部识别页面或事件注入,无法直接获取hmi程序的内部状态,导致效率和准确性不足的问题;

51、3、利用hmi程序的menu.json文件,解析菜单树、页面类型、页面元素等信息,根据页面元素的不同属性自动生成测试用例,并支持健壮度测试、新功能测试和漏洞修复测试三种模式,使测试用例能够自组织,根据页面元素自由组合,提升了测试覆盖率和适应性,解决了现有技术多依赖固定脚本或控件集合,缺乏灵活组合能力,测试用例生成方式受限的问题。