一种嵌入式操作系统电能表应用程序的测试方法及系统与流程

文档序号:31514769发布日期:2022-09-14 11:47阅读:316来源:国知局
一种嵌入式操作系统电能表应用程序的测试方法及系统与流程

1.本发明涉及电能表检测技术领域,并且更具体地,涉及一种嵌入式操作系统电能表应用程序的测试方法及系统。


背景技术:

2.随着电能表技术的发展,国网发布了最新的智能物联表相关技术规范与功能规范,最新的智能物联表搭载国产自主研发的统一嵌入式实时操作系统,形成软硬件解耦的系统平台。智能物联电能表操作系统为一款微内核架构的实时嵌入式系统,具备应用进程动态加载、应用隔离功能;运行于具有安全隔离功能(mpu内存保护单元)的arm cortex-m硬件平台,以二进制文件形式提供给开发者。
3.微内核只提供最基础的服务,比如多进程调度,多进程通信(ipc)等。其中进程通信是作为连接应用与用户态系统服务的桥梁。
4.智能物联电能表软件框架为boot、系统内核、驱动、应用分离架构,系统层:实现嵌入式操作系统多任务调度、任务间通信、内存资源分配及保护等;实现设备驱动框架及外设接口等组件,对应用层提供统一接口;驱动层:包括外设驱动及主控驱动,可兼容多种硬件架构,对上提供统一接口,实现“硬件平台化”,由应用开发商实现;硬件平台和启动层:实现智能物联电能表硬件运行环境,实现硬件初始化,引导内核启动,由应用开发商实现。
5.智能物联表操作系统提供了标准的驱动接口定义、系统与应用api接口说明,电表厂商在标准规范的电能表软件框架下开发满足电表功能的应用程序(application,简称app,后文app等同于应用程序)。智能物联表应用程序包括如下几种应用:应用层:包含系统应用、业务应用、扩展应用三类;由应用开发商实现。系统应用:分为系统管理app、安全服务app;实现电能表系统应用管理、外部通信接口与表内应用间的消息转发管理以及安全服务管理等。业务应用:基表业务app,实现电能表业务功能。扩展应用:实现电能表扩展和增强功能应用。因为定义了统一的系统和应用接口,以及统一标准的技术规范和功能规范,运行在电表上的应用程序可以根据统一标准接口开发,满足互换性要求。
6.当前电能表的主要测试方法是搭建检测台体或装置,检测电表整体功能。电能表应用程序测试,现在只是体现在各厂商在电表软件设计开发过程中的白盒测试、静态测试及仿真测试等。电表厂商设计开发过程中的白盒测试、静态测试及仿真测试,没有明确的评价内容和指标,甚至有没有做,做的好坏与否无法有效评估。
7.在智能物联表引入实时操作系统,以及多任务,多进程机制后,电能表的系统变得更加复杂灵活,功能多样化。电能表是一个重要的计量产品,对稳定性可靠性要求非常高;同时,电能表因为成本原因,内部资源是有限的。因此评价一个应用程序是否满足电能表需求,是否安全可靠,是否资源使用合理,是否性能满足要求,开展应用程序测试非常重要。


技术实现要素:

8.本发明提出一种嵌入式操作系统电能表应用程序的测试方法及系统,以解决如何
高效地实现电能表应用程序测试的问题。
9.为了解决上述问题,根据本发明的一个方面,提供了一种嵌入式操作系统电能表应用程序的测试方法,所述方法包括:
10.上位机检测软件下发测试用例请求至测试代理app;
11.测试代理app解析所述测试用例请求,获取当前测试用例id,并与测试app进行交互,以进行测试用例的软件执行,完成相应测试功能;
12.测试代理app通知驱动当前测试用例id,以使得驱动根据测试用例id执行对应的监控;
13.上位机检测软件获取测试代理app返回的测试数据;其中,所述测试数据,包括:功能测试数据和驱动测试数据。
14.优选地,其中所述测试代理app包括:
15.协议模块,用于与上位机进行协议通信,完成测试用例协议交互,同时也用于负责与待测app之间的数据通信;
16.核心测试模块,用于具体测试用例的执行,产生具体测试用例的测试条件,以及采集测试统计数据和结果;
17.系统模块,用于调用操作系统的接口,读取app的内存和cpu使用情况;
18.容器模块,用于与计量模组通信,完成真实的电表计量功能,在部分测试用例需要干预容器通信时,进行模拟干预。
19.优选地,其中测试用例包括以下至少一个方面:系统接口测试、驱动接口测试、性能测试、安全测试、app基本功能测试和互换性测试。
20.优选地,其中所述系统接口测试,包括:使用系统hook函数,统计内存与共享内存使用情况、保活统计、文件操作频率、文件读写最大长度,以判断应用程序安全性;进行定时器正确使用、临界区正确使用统计和系统资源统计,以评估应用程序是否正确合理使用系统资源;
21.所述驱动接口测试,包括:测试和统计应用程序在访问相关驱动接口时cmd是否使用正确,应用程序访问驱动的命令时序是否正确,以及应用程序对驱动的控制参数是否使用正确;
22.所述性能测试,包括:app初始化时间统计、资源统计、最大通信队列测试、掉电性能测试、文件系统性能测试、电表清0性能测试,以评估应用程序在电表运行过程中的性能指标;
23.所述安全测试,包括:进行通道容错能力测试、驱动设备访问情况、app重启次数统计,以评估应用程序是否能长时间稳定可靠运;
24.所述app基本功能测试,包括:容器数据同步测试、管理模组费率电能数据备份测试、扩展模组广播校时测试、ui显示通道相关测试、应用程序数据变更通知测试和断路器上报应答协议测试;
25.所述互换性测试,包括:在app互换后,判断相关数据是否保存,保存的数据与格式是否正确,同时测试app互换时数据保存性能,包括读写数据时长,记录互换数据保存后,app退出时间;测试应用程序作为新的app加载后,是否从互换文件中读取相关数据恢复以及恢复数据需要时长性能。
26.优选地,其中所述容器数据同步测试,包括:统计容器同步的定时周期、时间同步的精确性、补分钟冻结测试、同步rtc和m_time测试、容器同步中系统状态字确认测试。
27.根据本发明的另一个方面,提供了一种嵌入式操作系统电能表应用程序的测试系统,所述系统包括:
28.上位机检测软件,用于下发测试用例请求至测试代理app;用于获取测试代理app返回的测试数据;其中,所述测试数据,包括:功能测试数据和驱动测试数据;
29.测试代理app,用于解析所述测试用例请求,获取当前测试用例id,并与测试app进行交互,以进行测试用例的软件执行,完成相应测试功能;用于通知驱动当前测试用例id,以使得驱动根据测试用例id执行对应的监控。
30.优选地,其中所述测试代理app包括:
31.协议模块,用于与上位机进行协议通信,完成测试用例协议交互,同时也用于负责与待测app之间的数据通信;
32.核心测试模块,用于具体测试用例的执行,产生具体测试用例的测试条件,以及采集测试统计数据和结果;
33.系统模块,用于调用操作系统的接口,读取app的内存和cpu使用情况;
34.容器模块,用于与计量模组通信,完成真实的电表计量功能,在部分测试用例需要干预容器通信时,进行模拟干预。
35.优选地,其中测试用例包括以下至少一个方面:系统接口测试、驱动接口测试、性能测试、安全测试、app基本功能测试和互换性测试。
36.优选地,其中所述系统接口测试,包括:使用系统hook函数,统计内存与共享内存使用情况、保活统计、文件操作频率、文件读写最大长度,以判断应用程序安全性;进行定时器正确使用、临界区正确使用统计和系统资源统计,以评估应用程序是否正确合理使用系统资源;
37.所述驱动接口测试,包括:测试和统计应用程序在访问相关驱动接口时cmd是否使用正确,应用程序访问驱动的命令时序是否正确,以及应用程序对驱动的控制参数是否使用正确;
38.所述性能测试,包括:app初始化时间统计、资源统计、最大通信队列测试、掉电性能测试、文件系统性能测试、电表清0性能测试,以评估应用程序在电表运行过程中的性能指标;
39.所述安全测试,包括:进行通道容错能力测试、驱动设备访问情况、app重启次数统计,以评估应用程序是否能长时间稳定可靠运;
40.所述app基本功能测试,包括:容器数据同步测试、管理模组费率电能数据备份测试、扩展模组广播校时测试、ui显示通道相关测试、应用程序数据变更通知测试和断路器上报应答协议测试;
41.所述互换性测试,包括:在app互换后,判断相关数据是否保存,保存的数据与格式是否正确,同时测试app互换时数据保存性能,包括读写数据时长,记录互换数据保存后,app退出时间;测试应用程序作为新的app加载后,是否从互换文件中读取相关数据恢复以及恢复数据需要时长性能。
42.优选地,其中所述容器数据同步测试,包括:统计容器同步的定时周期、时间同步
的精确性、补分钟冻结测试、同步rtc和m_time测试、容器同步中系统状态字确认测试。
43.本发明提供了一种嵌入式操作系统电能表应用程序的测试方法及系统,包括:上位机检测软件下发测试用例请求至测试代理app;测试代理app解析所述测试用例请求,获取当前测试用例id,并与测试app进行交互,以进行测试用例的软件执行,完成相应测试功能;测试代理app通知驱动当前测试用例id,以使得驱动根据测试用例id执行对应的监控;上位机检测软件获取测试代理app返回的测试数据;其中,所述测试数据,包括:功能测试数据和驱动测试数据。本发明可以测试电能表整表功能测不到的细节内容与指标,包括:1)应用程序所占用的资源统计情况,如rom、内存、cpu占用、堆栈大小,设备访问情况等;2)应用程序系统与驱动接口标准使用测试:系统与驱动接口正常合理访问和使用,以实现正确的app功能,同时便于后续可能的app升级互换;3)app性能数据:测试app运行过程中的响应时间,资源占用情况等,以便评估app设计是否合理正确使用资源;4)app安全性:包括数据和设备使用上的安全,比如文件操作非法越界,设备非法访问、协议使用安全等均有测试;5)app稳定健状性测试:测试一些异常处理,比如超时处理等,确定app是否有容错设计,运行过程中是否异常重启等,以确定app能长期稳定运行。本发明通过内核、驱动、嵌入app测试代码、上位机检测软件四者配合,能够深度测试电能表应用程序,为评估应用程序是否满足电能表需求,是否安全可靠,是否资源使用合理,以及是否性能满足要求,提供了理论依据和测试数据,可应用于智能电能表开发生产阶段或正式挂网运行之前的检测,为现网电能表稳定可靠运行提供保障,并为未来智能电能表在现场运行时应用程序的灵活配置和升级互换,提供基础保证。
附图说明
44.通过参考下面的附图,可以更为完整地理解本发明的示例性实施方式:
45.图1为根据本发明实施方式的嵌入式操作系统电能表应用程序的测试方法100的流程图;
46.图2为根据本发明实施方式的嵌入式操作系统电能表应用程序的测试系统原理图;
47.图3为根据本发明实施方式的应用程序测试系统框架图;
48.图4为根据本发明实施方式的上位机检测软件与测试app交互机制流程图;
49.图5为根据本发明实施方式的测试装置及台体硬件结构组成示意图;
50.图6为根据本发明实施方式的嵌入式操作系统电能表应用程序的测试系统600的结构示意图。
具体实施方式
51.现在参考附图介绍本发明的示例性实施方式,然而,本发明可以用许多不同的形式来实施,并且不局限于此处描述的实施例,提供这些实施例是为了详尽地且完全地公开本发明,并且向所属技术领域的技术人员充分传达本发明的范围。对于表示在附图中的示例性实施方式中的术语并不是对本发明的限定。在附图中,相同的单元/元件使用相同的附图标记。
52.除非另有说明,此处使用的术语(包括科技术语)对所属技术领域的技术人员具有
通常的理解含义。另外,可以理解的是,以通常使用的词典限定的术语,应当被理解为与其相关领域的语境具有一致的含义,而不应该被理解为理想化的或过于正式的意义。
53.针对智能电能表应用程序测试需求,目前没有针对智能电能表应用程序的测试方法和方案,无法对应用于智能电能表的应用程序进行功能符合性以及性能可靠性验证。本发明用于检测评估智能电能表上运行的应用程序是否满足电能表需求,是否安全可靠,是否资源使用合理,以及是否性能满足要求。
54.图1为根据本发明实施方式的嵌入式操作系统电能表应用程序的测试方法100的流程图。如图1所示,本发明实施方式提供的嵌入式操作系统电能表应用程序的测试方法,可以测试电能表整表功能测不到的细节内容与指标,包括:1)应用程序所占用的资源统计情况,如rom、内存、cpu占用、堆栈大小,设备访问情况等;2)应用程序系统与驱动接口标准使用测试:系统与驱动接口正常合理访问和使用,以实现正确的app功能,同时便于后续可能的app升级互换;3)app性能数据:测试app运行过程中的响应时间,资源占用情况等,以便评估app设计是否合理正确使用资源;4)app安全性:包括数据和设备使用上的安全,比如文件操作非法越界,设备非法访问、协议使用安全等均有测试;5)app稳定健状性测试:测试一些异常处理,比如超时处理等,确定app是否有容错设计,运行过程中是否异常重启等,以确定app能长期稳定运行。本发明通过内核、驱动、嵌入app测试代码、上位机检测软件四者配合,能够深度测试电能表应用程序,为评估应用程序是否满足电能表需求,是否安全可靠,是否资源使用合理,以及是否性能满足要求,提供了理论依据和测试数据,可应用于智能电能表开发生产阶段或正式挂网运行之前的检测,为现网电能表稳定可靠运行提供保障,并为未来智能电能表在现场运行时应用程序的灵活配置和升级互换,提供基础保证。
55.本发明实施方式提供的嵌入式操作系统电能表应用程序的测试方法100,包括:
56.步骤101,上位机检测软件下发测试用例请求至测试代理app。
57.优选地,其中所述测试代理app包括:
58.协议模块,用于与上位机进行协议通信,完成测试用例协议交互,同时也用于负责与待测app之间的数据通信;
59.核心测试模块,用于具体测试用例的执行,产生具体测试用例的测试条件,以及采集测试统计数据和结果;
60.系统模块,用于调用操作系统的接口,读取app的内存和cpu使用情况;
61.容器模块,用于与计量模组通信,完成真实的电表计量功能,在部分测试用例需要干预容器通信时,进行模拟干预。
62.本发明提供了一种带实时操作系统的智能电能表应用程序测试方法,以解决现有技术中因为缺少智能电能表实时操作系统应用程序测试方法及装置而难以开展测试工作的问题。本发明提供的智能电能表应用程序测试方法,包括:应用程序测试系统方案、测试用例及主要内容。其中测试系统方案定义了电表应用程序测试的主要测试目标与方向,定义了测试方法的总体设计框架方案。在确定总体设计方案后,进一步明确了电能表应用程序测试方法中的测试内容及具体用例,包括应用程序的性能测试、系统接口测试、驱动接口测试、安全测试、功能测试、应用程序互换性测试等。
63.本发明带实时操作系统智能电能表中的应用程序(app)不同于手机中的应用app,物联电能表中的app具有关联性和依赖性,可以把所有的app看成一个大业务app,对某个
app的测试等同于对这个大业务app的单元测试。
64.本发明是在电能表中开发一个测试代理app,直接与上位机进行通信,负责解析上位机的具体测试用例请求,测试代理app负责与待测试app进行交互,并执行一些测试用例的软件执行,完成测试任务。为了减少测试差异性,app测试装置模拟电能表软件环境测试,相当于标准电表上搭建代理测试app测试真实电表物理环境上的app功能与性能。
65.本发明系统设计原理,采用开发测试代理app(简称测试app)来测试待测app的设计原理,以便在真实的电表环境运行测试应用程序。如图2所示,协议模块负责与上位机进行协议通信,完成测试用例协议交互,同时也负责与待测app之间的数据通信;心测试模块负责具体用例执行,产生具体用例的测试条件,采集测试统计数据和结果;系统模块调用操作系统的接口,读取app的内存和cpu使用情况;容器模块负责与计量模组通信,完成真实的电表计量功能,在部份测试用例需要干预容器通信时,进行模拟干预。还包括:升级模块用于升级待测app,以便测试不同厂家的app程序。测试代理app尽量少操作文件,减少对待测试app的性能干扰。
66.步骤102,测试代理app解析所述测试用例请求,获取当前测试用例id,并与测试app进行交互,以进行测试用例的软件执行,完成相应测试功能。
67.步骤103,测试代理app通知驱动当前测试用例id,以使得驱动根据测试用例id执行对应的监控。
68.步骤104,上位机检测软件获取测试代理app返回的测试数据;其中,所述测试数据,包括:功能测试数据和驱动测试数据。
69.优选地,其中测试用例包括以下至少一个方面:系统接口测试、驱动接口测试、性能测试、安全测试、app基本功能测试和互换性测试。
70.优选地,其中所述系统接口测试,包括:使用系统hook函数,统计内存与共享内存使用情况、保活统计、文件操作频率、文件读写最大长度,以判断应用程序安全性;进行定时器正确使用、临界区正确使用统计和系统资源统计,以评估应用程序是否正确合理使用系统资源;
71.所述驱动接口测试,包括:测试和统计应用程序在访问相关驱动接口时cmd是否使用正确,应用程序访问驱动的命令时序是否正确,以及应用程序对驱动的控制参数是否使用正确;
72.所述性能测试,包括:app初始化时间统计、资源统计、最大通信队列测试、掉电性能测试、文件系统性能测试、电表清0性能测试,以评估应用程序在电表运行过程中的性能指标;
73.所述安全测试,包括:进行通道容错能力测试、驱动设备访问情况、app重启次数统计,以评估应用程序是否能长时间稳定可靠运;
74.所述app基本功能测试,包括:容器数据同步测试、管理模组费率电能数据备份测试、扩展模组广播校时测试、ui显示通道相关测试、应用程序数据变更通知测试和断路器上报应答协议测试;
75.所述互换性测试,包括:在app互换后,判断相关数据是否保存,保存的数据与格式是否正确,同时测试app互换时数据保存性能,包括读写数据时长,记录互换数据保存后,app退出时间;测试应用程序作为新的app加载后,是否从互换文件中读取相关数据恢复以
及恢复数据需要时长性能。
76.优选地,其中所述容器数据同步测试,包括:统计容器同步的定时周期、时间同步的精确性、补分钟冻结测试、同步rtc和m_time测试、容器同步中系统状态字确认测试。
77.结合图3所示,完成电能表的功能、性能、资源测试,测试app还需要与系统、驱动配合,完成一些系统及驱动资源的性能统计与状态统计。
78.a).os内核hook机制:电能表管理模组操作系统架构是应用、驱动、内核分离的,内核相关为国产自主研发操作系统,驱动由各厂家实现,但是app测试,需要统计的系统资源及状态,工作量较大,所以设计了向os提特殊需求,提供一个特殊os版本,系统接口调用时,采用hook调用形式,在驱动层和测试app中实现系统资源与状态的统计功能。多芯模组电能表操作系统为国产自主研发的国网定制的操作系统,所以os的需求和功能是可以适当扩充的,一些系统及资源的统计hook函数,在不增加操作系统特别大工作量时,是可行的。
79.具体的os特殊需求和主要hook功能包括内存分配与释放函数、共享内存(进程间通信用的内存)分配与释放函数,保活操作函数、文件读写操作函数、临界调用函数、以及常用操作系统功能接口,包括线程、读写锁、消息队列、定时器、互斥量、信号量、驱动设备打开。该部份hook,由于内核与应用分离,一部分在驱动调用,一部份在测试app调用。
80.hook函数进行统计时,为了不影响测试性能,具体的hook只在上位机下发具体某个测试用例命令时,才调用,否则不调用,比如只有在测试共享内存使用情况用例时,才调用共享内存的hook函数,其它hook函数不调用,而且hook函数尽量简短,快进快出,这样可以最大地还原应用程序的真实测试环境,且不影响性能。
81.b).驱动状态与数据统计:驱动层除了实现hook函数统计功能,还要进一步实现一些驱动相关的接口测试,包括控制命令与数据监控测试等。
82.c).具体app测试功能,由app模拟测试软件实现一些功能逻辑处理。
83.d).上位机一方面通知测试app当前测试用例omd(相当于测试用例id),一方面配合app测试过程,产生一些测试报文,发送状态,以便测试app不用构造太多测试报文,同时也方便展示测试过程报文数据。在一个测试用例完成后,从测试app读取测试结果,并展示。一些数据可能还要在上位机上进行比较,以判断测试结果是否合格。
84.在本发明中,app测试内容分为四大类:
85.a).app接口测试
86.a.测试app访问系统ipc交互接口的正确性与安全性
87.b.测试app访问外设驱动接口的正确性与安全性
88.b).app性能与安全测试
89.a.app占用的资源统计,例如内存,cpu使用率等
90.b.app对某些特殊功能处理的效率。如大文件读写效率、分钟冻结的读写时间、抄读数据的响应时间等。
91.c.一些异常场景下的容错安全处理,如系统或驱动异常返回处理,如通道发送超时,共享内存访问失败等。
92.c).app基本功能测试
93.尽管大部份app基本功能可以在整表上测试,但一些应用程序之间的交互,应用程序在实现电能表功能时,与驱动的交互等内部处理逻辑,在电表整表功能测试不到或不方
便测试的,在应用程序功能测试项目中进行测试。同时也为了测试的全面性,以及数据的准确性,增加少数用例进行电能表的功能测试,比如容器数据的精确性、电量累加的精确性、管理模组电表时间是否完全采用计量模组时间、拉合闸处理逻辑、掉上电处理,显示与低功耗处理等。为了避免与整表功能测试重叠,此项内容仍然是测试一些整表功能不方便测试的项目,相当于app功能单元与集成测试。
94.d).app互换性测试
95.app设计规范中明确了应用程序数据存储格式与文件地址要求,以便app进行互换,因此进行app数据互换性的测试,在更换app时,确定前一个app文件数据保存内容和结构是否正确。同时在新的app替换时,测试是否会从规定的数据存储位置中恢复原有app的数据与参数。
96.具体测试用例与测试方法步骤如下所示:
97.其中,根据电能表功能需求,以及电能表实时操作系统提供的系统接口(api)及驱动接口,本发明系统主要有如下测试方法及内容。
98.a)系统接口测试项目
99.根据特殊os版本或原有os自带的hook进行系统资源及接口的测试统计,包括以下步骤和内容:
100.a.内存使用情况统计:最大申请的内存大小、申请频率、是否正确释放,如果有过多申请内存未正确释放,则认为可能存在程序稳定性风险。
101.b.共享内存使用情况统计:最大申请的共享内存大小、申请频率、是否正确释放,共享内存在整个系统的资源有限(16k),供多个app同时使用,所以如果共享内存没有及时释放或申请过大,则认为程序处理是有风险和不合理的。
102.c.保活统计:统计保活调用时间(最大保活时间),以及频率。统计在一些重要时间节点(如结算时间),保活是否及时正确,如果保活时间过长,则该应用程序会被系统强制结束,存在风险。
103.d.文件操作:统计应用程序文件操作频率、文件读写最大长度、所有使用的文件个数与文件名、文件大小。由于物联表电能表操作系统使用的是litefs文件系统,大文件或过多文件会影响文件操作性能与效率。待测应用程序中的一个文件过大,或一次文件读写长度过大,则认为也是不合理的,如果写文件太频繁,则可能会影响外部存储设备寿命,则也是不合理的。
104.e.临界区使用:临界是否正确成对使用,统计从enter到exit的最大用时,以评估是否合理使用。
105.f.其它系统资源统计,包括:线程、读写锁、消息队列、定时器、互斥量、信号量等,通过这些资源统计,评估该应用程序所占用的系统资源情况,重点统计一些系统资源使用过程中是否有超时等,以评估程序是否存在隐藏风险。
106.b)驱动接口测试项目
107.驱动接口测试主要测试和统计应用程序在访问相关驱动接口时cmd是否使用正确,应用程序访问驱动的命令时序是否正确,以及应用程序对驱动的控制参数是否使用正确等。包括以下内容与步骤:
108.a.rtc驱动:
109.rtc驱动cmd使用是否正确:
110.是否有进行set(比如除电表业务应用程序外,其它应用程序不能进行set),而电表业务应用程序必须要进行设置。
111.set的参数值多少?有没有不合理的,参数值必须是2000年之后的数值。
112.驱动rtc值故意返回错误值时,rtc是否马上更新。
113.b.cpu time:基本上与rtc驱动相同,理论上更新周期在0.5秒-1秒为佳。
114.c.掉电设备驱动:业务app不能直接访问掉电设备,应该由系统app访问掉电设备,在获取掉电状态后,通知业务app进入掉电状态。
115.d.脉冲通道选择驱动:通过多功能控制命令,确定app访问多功能输出控制是否正确,如控制枚举值是否正确,需量和时段输出时,应该先切模式,然后write脉宽,并在驱动记录脉宽值,等待上位机检测软件抄读展示。
116.e.背光控制驱动:监控命令是否正确,是否有关闭和打开之外的命令。在背光报警时,应用程序是否点亮背光,报警消失后,是否熄灭背光;按键时是否亮背光,背光亮后,定时熄灭是否控制正确。
117.f.按键驱动:按键是否使用poll还是定时读取,应用程序读取按键的周期,通过在驱动中监控lcd的写操作来判断应用程序是弹起响应还是按下响应。
118.g.事件状态上报控制驱动:此引脚与跟随上报有关,所以测试在跟随上报时是否控制此引脚,控制方式是否正确,关闭跟随上报后,是否控制此驱动为关闭。
119.h.电表液晶(lcd)驱动:统计液晶驱动使用了哪些控制命令,驱动监控每次刷新的数据内容,并保存整屏lcd数据,以便上位机可以随时读取所有lcd点阵值,在上位机界面上直观展示;统计刷屏周期或自检周期;统计液晶刷新是区域更新还是整屏更新。
120.i.eeprom和flash驱动:统计每次读写最大长度、访问的地址范围有没有越界、读写频率。如果每次读写长度过长,或访问地址超过电能表存储设备最大值,则认为是不合格的。
121.j.在驱动程序中增加测试功能,暂存所有驱动设备的前64条命令,用于上位机检测软件读取应用程序访问外部驱动的命令时序,以判断应用程序是否合理正确驱动。
122.k.驱动设备访问统计:统计该应用程序所有访问的驱动设备名称,以确定该应用程序是安全合法地访问外部设备,有没有越权访问不属于该应用程序访问的设备。
123.c)性能测试
124.app性能测试内容包括两个部分:第一部分是app占用的系统资源统计,例如内存,cpu使用率等,统计包括最大值、最小值、平均值等。第二部分是app对某些特殊功能处理的效率。具体包括以下测试步骤与内容:
125.a.app初始化时间统计:统计app初始化时间性能:在测试app启动待测app成功时,记录启动时间,然后统计该应用程序的channel通道建立时间、channel第一个容器同步时间、channel第一个报文应答时间、驱动里第一次lcd驱动控制时间,计算该四项app初始化时间指标,评估app初始化效率。
126.b.资源统计:使用系统接口,分别统计普通场景、结算日前后、通信压力测试时app的cpu和ram使用情况,并用来比较不同场景下的资源使用。
127.c.最大通信队列测试:同时发送1-6个数据到channel通道,看应用程序是否正确
应答(物联电能表同时有9个外部通道),最终统计能正确应答的数据通道个数。
128.d.掉电性能测试:测试代理app通知待测app进入掉电状态,然后在驱动统计该应用程序是否有掉电存数处理,掉电后eeprom与flash的写停止时间与长度,掉电后app的最晚退出时间。
129.e.文件系统性能测试:测试应用程序在处理大文件时的读写性能,如99屏显示列表文件时的读写处理性能。
130.f.电表清0测试性能:电表运行一段时间后,测试存在较多文件时,电表清零时,待测app的文件处理性能和效率。
131.d)安全测试
132.app安全测试主要测试app是否存在非法访问其他的设备或者数据的行为,以及在一些系统访问返回异常(如超时,或长度返回-1或0)之后,是否有容错处理,以及是否可以自行恢复,以评估应用程序长时间运行的稳定性与健壮性。举例包括以下测试步骤与内容:
133.a.通道交互容错能力测试:电能表的应用程序通道(channel),包括基础通道与ui显示通道,分别测试通道发送数据超时处理,接收与应答不及时,app是否容错处理,会不会崩溃。
134.b.统计驱动设备访问情况:确定应用程序是否非法访问设备。
135.c.app重启次数统计:任何程序都可能存在一些隐藏bug,当前电能表操作系统提供了保活机制,可以及时判断app是否异常重现,在测试代理app中调用系统接口,根据应用程序app保活情况,确认app是否未能及时保活,如未及时保活,则说明应用程序可能已异常,会重新启动该app,从而统计app重启次数,在每个测试用例完成后,监控该重启次数,如果有重启,则及时上报上位机检测软件,告知存在隐藏风险。
136.e)app基本功能测试
137.应用程序测试的功能测试内容主要测试电表整表功能测试不到,或不易测试的内容。举例包括以下测试步骤与内容:
138.a.容器数据同步测试:容器数据同步为新的物联表管理模组与计量模组定时同步数据内容,容器数据的同步由管理模组应用程序发起,同步成功后,更新管理模组数据。容器数据同步是管理模组与计量模组数据分离后电表可靠运行的关键处理,没有容器同步数据,电表管理模组运行不再有意义,所以容器同步数据的测试非常重要,该项测试包括以下内容:
139.统计容器同步的定时周期:同步周期不能太短,占用系统资源和通道,同时间隔太长,会影响数据的实时更新,一般以0.5秒左右为佳,具体测试时,在控源走字状态下,分别统计正常场景和结算日冻结繁忙状态下的定时同步周期。
140.时间同步的精确性:为了保持管理模组与计量模组冻结数据的一致性,管理模组需要完全采用计量模组时间,即容器同步数据不更新,则管理模组时间基础业务app时间不变。
141.补分钟冻结测试:由于管理模组与计量模组采用硬件spi通信,任何通信都可能存在偶尔干扰的情况,所以容器同步的spi通信也一样。但电表对冻结数据要求较高,要求电表管理模组的冻结数据需要与计量保持一致。容器同步数据中包括了计量模组的分钟冻结数据,如果偶尔丢包,是可以通过容器同步数据中的分钟冻结及时补冻结的。因此补分钟冻
结测试方法为整分时刻在测试代替app模拟构造丢包场景,然后过几秒后恢复正常,测试恢复正常后,应用程序是否正确补分钟冻结、日冻结、月冻结、结算日冻结、整点冻结数据等。
142.同步rtc和m_time测试:容器同步成功后,应用程序需要同步到rtc设备和m_time设备。
143.容器同步中系统状态字确认测试:容器同步中的计量模组系统状态字bit16~31为计量模组事件发生标志,事件一旦发生置对应的应,管理模组应用程序在收到后,需要发送确认命令及时清除,以便后续产生新的状态和事情。
144.b.管理模组费率电能数据备份测试:管理模组每天1时5分定时备分费率电能数据到计量模组,因此本测试步骤方法为设置时间到凌晨1时4分30秒,监听是否有备份报文,以及检查备分的费率电能是否正确,同时监听应用程序启动后,是否读取备份电能用来从上次备份时间开始到上电时所增加的电能数据,在上电时默认加到当前日时段表中费率号最大的有效费率上,完成费率电能数据的同步及处理。
145.c.扩展模组广播校时测试:新的电能表有多个扩展模组,需要在主站给电表设置时间后,及时通知扩展模组更新时间。主站设置计量模组时间,产生计量模组校时标志给管理模组,测试代理app监听应用程序报文,在校时后的10秒内是否有收到广播校时扩展模组报文(通过应用程序交互结构中的字段(portnum为0xff)通知负责消息路由的系统管理app发送广播校时报文给扩展模组)。
146.d.ui显示通道相关测试:根据ui通道设计功能,一些状态提示可以通过ui通道控制液晶显示,如通信符号显示、报警状态显示、全屏显示、液晶查看测试、蓝牙连接显示,蓝牙检定显示等,检测软件与测试代理app模拟发送ui通道显示数据,然后通过读取驱动液晶显示数据的形式判断应用程序是否正确处理显示通知。
147.e.应用程序数据变更通知测试:在电能表中,有多个应用程序,其它应用程序的一些参数或数据会通过app数据变更协议通知基础应用程序更新及记录编程事件,这些数据是电表内部交互的,整表功能无法测试变更协议及数据内容是否正确,因此放在应用程序测试处理,主要测试内容步骤包括电能表地址更新,表号更新、密钥更新、蓝牙连接通知、内部认证状态通知等测试。
148.f.断路器上报应答协议测试:断路器状态变化时,会通过上报通知,通知应用程序,应用程序需要组织响应报文应答断路器,整个过程是在电表与断路器之间进行,整表功能测试较为麻烦,因此测试app通过模拟断路器上报,然后监听应用程序的应答报文,以确定应用程序是否正确处理。
149.f)app互换性测试
150.新的智能电能表引入操作系统后,因为接口定义的标准化,存在后续应用程序升级和互换的需求,因此需要测试应用程序互换的正确性。主要包括app互换后,相关数据是否保存,保存的数据与格式是否正确,同时测试app互换时数据保存性能,包括读写数据时长,记录互换数据保存后,app退出时间。另外也测试应用程序作为新的app加载后,是否从互换文件中读取相关数据恢复,以及恢复数据需要时长性能。
151.在本发明中,根据测试内容,上位机与电能表测试模块可以有多种交互机制,本发明设计一种较为简单易扩展的通信协议交互机制。见图4,具体步骤说明如下:
152.a.定义一套自定义扩展协议:oi为0xfe00开始的dl/t698.45 oad或omd协议,并且
定义扩展逻辑地地址为126,代表上位机检测软件与测试代替app进行通信交互协议。测试代理app收到该部份扩展协议,则表示与上位机检测软件交互,测试app将该部份报文转给内部测试模块处理应用程序测试用例流程。因为上位机检测软件采用的是dl/t698.45协议,可以使用原有电表的dl/t698.45数据库。采用此方式,检测软件的开发与电能表协议召测处理流程基本一致,改动不大,且数据容易处理与保存。
153.b.扩展协议及属性分配:性能测试、系统接口测试、驱动接口测试、安全测试、功能测试用例各自占用48个oi,每个oi的方法1表示检测软件通知测试代理app开始此用例,方法1可以带测试用例入参。每个oi中的具体属性为测试状态与测试统计结果,例如驱动接口中,属性2为64字节驱动读写序列(即命令先后顺序),可以得到最后一次操作时间及驱动访问过程;属性3为当前状态或值;其它属性为扩展属性,包括测试结果与统计数据等。
154.c.测试检测交互流程:测试用例每个oi相当于一条测用例进程id,检测软件根据测试用例,依次通过上位机协议数据库配置的协议分配,通知测试代理app当前测试用例oi,即id号,然后测试代理app进行对应测试任务,如果有需要驱动配合监控任务,亦通知驱动当前测试用例id号,驱动根据测试用例需要,执行相关监控,同时调用驱动中的hook监控函数,根据测试用例功能进行处理,如果当前测试用例不需在测试hook中处理,则不调用,避免系统消耗和占用cpu执行时间,不影响系统运行性能。
155.d.如果是由测试代理app自动完成的测试任务,上位机检测软件延时相应时间,待测试任务完成后,读取对应协议属性,读取测试结果,并在检测软件上展示结果。检测软件根据测试结果数据及统计的特性,以报表或状态图、过程图等形式现象展示结果。
156.本发明总体测试装置主要用于检测各厂家电能表app的通用性,硬件结构如图5所示,包括:
157.单三相物联表区域:可以方便切换单三相物联表,支持蓝牙、232及宽带载波通信;
158.蓝牙通讯模块:与物联表进行蓝牙通信,支持两主三从通信模式,通过串口与主台系统通信;
159.程控功率源:支持远程控制与本地控制,单三相兼容,可程控分别给单/三相物联表供电;测试装置输出电压电流,以便测试过程中产生一些电能量或事件数据,同时测试过程中,加载电压电流,模拟电表真实挂网运行环境,进行电能表走字状态测试;
160.串口服务器:通过以太网与主台系统连接。
161.另外,装置提供下载口和打印口,提供io口资源,便于更新测试app软件及打印log分析测试过程;通讯模块方便测试应用程序多通道接口通信能力。
162.图6为根据本发明实施方式的嵌入式操作系统电能表应用程序的测试系统600的结构示意图。如图6所示,本发明实施方式提供的嵌入式操作系统电能表应用程序的测试系统600,包括:上位机检测软件601和测试代理app 602。
163.优选地,所述上位机检测软件601,用于下发测试用例请求至测试代理app;用于获取测试代理app返回的测试数据;其中,所述测试数据,包括:功能测试数据和驱动测试数据。
164.优选地,所述测试代理app602,用于解析所述测试用例请求,获取当前测试用例id,并与测试app进行交互,以进行测试用例的软件执行,完成相应测试功能;用于通知驱动当前测试用例id,以使得驱动根据测试用例id执行对应的监控。
165.优选地,其中所述测试代理app包括:
166.协议模块,用于与上位机进行协议通信,完成测试用例协议交互,同时也用于负责与待测app之间的数据通信;
167.核心测试模块,用于具体测试用例的执行,产生具体测试用例的测试条件,以及采集测试统计数据和结果;
168.系统模块,用于调用操作系统的接口,读取app的内存和cpu使用情况;
169.容器模块,用于与计量模组通信,完成真实的电表计量功能,在部分测试用例需要干预容器通信时,进行模拟干预。
170.优选地,其中测试用例包括以下至少一个方面:系统接口测试、驱动接口测试、性能测试、安全测试、app基本功能测试和互换性测试。
171.优选地,其中所述系统接口测试,包括:使用系统hook函数,统计内存与共享内存使用情况、保活统计、文件操作频率、文件读写最大长度,以判断应用程序安全性;进行定时器正确使用、临界区正确使用统计和系统资源统计,以评估应用程序是否正确合理使用系统资源;
172.所述驱动接口测试,包括:测试和统计应用程序在访问相关驱动接口时cmd是否使用正确,应用程序访问驱动的命令时序是否正确,以及应用程序对驱动的控制参数是否使用正确;
173.所述性能测试,包括:app初始化时间统计、资源统计、最大通信队列测试、掉电性能测试、文件系统性能测试、电表清0性能测试,以评估应用程序在电表运行过程中的性能指标;
174.所述安全测试,包括:进行通道容错能力测试、驱动设备访问情况、app重启次数统计,以评估应用程序是否能长时间稳定可靠运;
175.所述app基本功能测试,包括:容器数据同步测试、管理模组费率电能数据备份测试、扩展模组广播校时测试、ui显示通道相关测试、应用程序数据变更通知测试和断路器上报应答协议测试;
176.所述互换性测试,包括:在app互换后,判断相关数据是否保存,保存的数据与格式是否正确,同时测试app互换时数据保存性能,包括读写数据时长,记录互换数据保存后,app退出时间;测试应用程序作为新的app加载后,是否从互换文件中读取相关数据恢复以及恢复数据需要时长性能。
177.优选地,其中所述容器数据同步测试,包括:统计容器同步的定时周期、时间同步的精确性、补分钟冻结测试、同步rtc和m_time测试、容器同步中系统状态字确认测试。
178.本发明的实施例的嵌入式操作系统电能表应用程序的测试系统600与本发明的另一个实施例的嵌入式操作系统电能表应用程序的测试方法100相对应,在此不再赘述。
179.已经通过参考少量实施方式描述了本发明。然而,本领域技术人员所公知的,正如附带的专利权利要求所限定的,除了本发明以上公开的其他的实施例等同地落在本发明的范围内。
180.通常地,在权利要求中使用的所有术语都根据他们在技术领域的通常含义被解释,除非在其中被另外明确地定义。所有的参考“一个/所述/该[装置、组件等]”都被开放地解释为所述装置、组件等中的至少一个实例,除非另外明确地说明。这里公开的任何方法的
步骤都没必要以公开的准确的顺序运行,除非明确地说明。
[0181]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0182]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0183]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0184]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0185]
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1