基于智能电表的数据路由测试方法、装置和计算机设备
技术领域
本申请涉及系统测试技术领域,特别是涉及一种基于智能电表的数据路由测试方法、装置、计算机设备和存储介质。
背景技术
智能电表是电力系统中一个重要的设备,目前,全国范围内的电力系统已经基本实现了智能电表的全覆盖。现行智能电表均是通过嵌入式代码实现相关功能的,除了电能计量外,还可以实现其他功能。
近年来,随着能源互联网的不断发展和电力市场化改革的不断深入,新时期涌现的全新业务场景对智能电表的性能均提出更高要求,IR46的提出也为新一代智能电表的发展指明了方向。目前,利用智能电表的数据路由功能实现电表内部高频数据交互已经成为智能电表必须实现的功能要求,并且新一代智能电表新增了例如分钟冻结、秒数据同步等新功能,这些功能对新一代智能电表的数据路由功能提出了更高的要求,即智能电表的数据路由功能已经成为影响数据交互功能实现的关键因素,因此,对智能电表的数据路由开展测试工作并形成科学可量化的评测体系已经成为新一代智能电表研发过程中的一个重要环节。然而,目前对于智能电表的检测仅仅局限于对于整表功能和性能的检测,对于电表系统层面的数据路由功能检测工作目前仍处于空白阶段。
因此,如何实现对智能电表数据路由功能的测试成为目前亟需解决的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够实现对智能电表数据路由进行测试的基于智能电表的数据路由测试方法、装置、计算机设备和存储介质。
一种基于智能电表的数据路由测试方法,所述方法包括:
获取待测试代码;所述待测试代码包括所述智能电表中用于实现数据路由的代码;
对所述待测试代码进行测试,得到对应的测试结果;所述测试包括针对所述待测试代码的功能测试、性能测试以及防护性测试;所述功能测试基于所述待测试代码对所述数据路由的实现方式进行;所述性能测试基于所述待测试代码对数据的传输效率进行;所述防护性测试基于所述待测试代码对所述数据的传输压力进行;
根据所述测试结果,输出针对所述数据路由的测试报告。
在其中一个实施例中,所述对所述待测试代码进行测试,得到对应的测试结果,包括:
对所述待测试代码进行功能测试,得到功能测试结果;所述功能测试包括管道创建测试和基于所述智能电表中的管道的数据分发测试中的至少一种;
对所述待测试代码进行性能测试,得到性能测试结果;所述性能测试包括管道性能测试和基于所述管道的数据分发时效测试中的至少一种;
对所述待测试代码进行防护性测试,得到防护性测试结果;所述防护性测试包括多管道并发测试、基于所述管道的吞吐量测试和极限管道数测试中的至少一种。
在其中一个实施例中,所述对所述待测试代码进行功能测试,得到功能测试结果,包括:
根据所述智能电表中的软件、硬件与所述待测试代码的关联性,将所述智能电表的系统划分为多个模块;所述多个模块包括外部通信模块、双芯交互模块、软件升级模块、基础功能模块以及扩展功能模块中的至少两种;
从所述多个模块中确定第一测试模块以及第二测试模块,打开所述第一测试模块的管道监控功能;所述第一测试模块和第二测试模块不同;
通过所述第一测试模块,向所述待测试代码发送由所述第二测试模块接收的数据帧,以使所述待测试代码将所述数据帧分发至所述第二测试模块;所述数据帧用于指示所述第二测试模块与所述第一测试模块以及所述待测试代码建立管道;
通过所述第二测试模块,向所述待测试代码发送由所述第一测试模块接收的回应帧,以使所述待测试代码将所述回应帧分发至所述第一测试模块;所述回应帧用于应答所述第一测试模块以建立所述第一测试模块、所述待测试代码以及所述第二测试模块之间的管道;
若所述多个模块中存在未被选取作为所述第二测试模块的模块,从所述多个模块中选取新的第二测试模块,返回通过所述第一测试模块,向所述待测试代码发送由所述第二测试模块接收的数据帧,以使所述待测试代码将所述数据帧分发至所述第二测试模块的步骤;所述新的第二测试模块为所述多个模块中未被选取过作为所述第二测试模块的模块;
若所述多个模块中存在未被选取作为所述第一测试模块的模块,且不存在未被选取作为所述第二测试模块的模块,从所述多个模块中选取新的第一测试模块,并将所述多个模块均重新确定为未被选取作为所述第二测试模块的模块,返回打开所述第一测试模块的管道监控功能的步骤;所述新的第一测试模块为所述多个模块中未被选取过作为所述第一测试模块的模块;
若所述多个模块均被选取过作为所述第一测试模块以及所述第二测试模块,结束所述功能测试;根据所述多个模块与所述待测试代码建立的管道,得到所述功能测试结果。
在其中一个实施例中,所述对所述待测试代码进行功能测试,得到功能测试结果,包括:
通过所述第一测试模块,向所述待测试代码发送接收地址为所述第二测试模块的通信指令,以使所述待测试代码将所述通信指令进行分发;
获取所述待测试代码发送的回应指令;
若所述多个模块中存在未被选取作为所述第二测试模块的模块,从所述多个模块中选取新的第二测试模块,返回通过所述第一测试模块,向所述待测试代码发送接收地址为所述第二测试模块的通信指令,以使所述待测试代码将所述通信指令进行分发的步骤;所述新的第二测试模块为所述多个模块中未被选取过作为所述第二测试模块的模块;
若所述多个模块中存在未被选取作为所述第一测试模块的模块,且不存在未被选取作为所述第二测试模块的模块,从所述多个模块中选取新的第一测试模块,并将所述多个模块均重新确定为未被选取作为所述第二测试模块的模块,返回通过所述第一测试模块,向所述待测试代码发送接收地址为所述第二测试模块的通信指令,以使所述待测试代码将所述通信指令进行分发的步骤;所述新的第一测试模块为所述多个模块中未被选取过作为所述第一测试模块的模块;
若所述多个模块均被选取过作为所述第一测试模块以及所述第二测试模块,根据预设通信协议,更换所述通信指令的形式,返回所述通过所述第一测试模块,向所述待测试代码发送接收地址为所述第二测试模块的通信指令,以使所述待测试代码将所述通信指令进行分发的步骤,直至所有形式的通信指令均进行过测试;
将预设错误帧发送至所述待测试代码,监控所述待测试代码是否分发所述预设错误帧;
根据所述待测试代码对多种形式的通信指令的分发状态以及对所述预设错误帧的发送状态,得到所述功能测试结果。
在其中一个实施例中,所述对所述待测试代码进行性能测试,得到性能测试结果,包括:
获取所述待测试代码对应的测试用例;所述测试用例包括多个不同长度的数据帧;
根据所述测试用例,获取所述待测试代码对所述多个不同长度的数据帧的多个收发时间;
获取所述多个收发时间的平均收发时间,作为所述性能测试结果。
在其中一个实施例中,所述对所述待测试代码进行性能测试,得到性能测试结果,包括:
根据所述待测试代码,生成短帧数据指令以及长帧数据指令;
根据所述待测试代码,将所述短帧数据指令以及所述长帧数据指令分别通过单个所述管道和多个所述管道进行多次分发;
分别获取所述短帧数据指令和长帧数据指令多次分发的平均时间,得到所述性能测试结果。
在其中一个实施例中,所述对所述待测试代码进行防护性测试,得到防护性测试结果,包括:
分别基于同一预设数据帧和不同预设数据帧,通过所述管道对所述待测试代码进行并发处理,得到并发测试结果;
按照第一预设时间间隔,通过所述管道向所述待测试代码多次发送预设数据帧,获取所述待测试代码的多次回应,得到回应测试结果;
根据所述并发测试结果以及所述回应测试结果,得到多管道并发测试结果;
按照第二预设时间间隔,多次向所述待测试代码发送所述预设数据帧,获取所述待测试代码基于所述预设数据帧的吞吐量,得到吞吐量测试结果;
根据每个所述管道,向所述待测试代码发送所述预设数据帧,获取所述预设数据帧的传输结果;
若所述传输结果为传输成功,增加所述管道,返回根据每个所述管道,向所述待测试代码发送所述预设数据帧,获取所述预设数据帧的传输结果的步骤;
若所述传输结果为传输失败,获取当前管道数量,得到管道数量测试结果;
根据所述多管道并发测试结果、所述吞吐量测试结果以及所述管道数量测试结果,得到所述防护性测试结果。
一种基于智能电表的数据路由测试装置,所述装置包括:
获取模块,用于获取待测试代码;所述待测试代码包括所述智能电表中用于实现数据路由的代码;
测试模块,用于对所述待测试代码进行测试,得到对应的测试结果;所述测试包括针对所述待测试代码的功能测试、性能测试以及防护性测试;所述功能测试基于所述待测试代码对所述数据路由的实现方式进行;所述性能测试基于所述待测试代码对数据的传输效率进行;所述防护性测试基于所述待测试代码对所述数据的传输压力进行;
输出模块,用于根据所述测试结果,输出针对所述数据路由的测试报告。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述的方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述的方法的步骤。
上述基于智能电表的数据路由测试方法、装置、计算机设备和存储介质,通过获取智能电表中用于实现数据路由的待测试代码,对待测试代码进行功能测试、性能测试和防护性测试,分别得到对应的测试结果,其中功能测试基于待测试代码对数据路由的实现方式进行;性能测试基于待测试代码对数据的传输效率进行;防护性测试基于待测试代码对数据的传输压力进行;并根据上述多个测试结果,输出上述数据路由的测试报告。相较于目前的无法对智能电表中的数据路由进行测试,本方案通过基于实现数据路由的代码以及管道等数据进行测试,从而可以实现对智能电表中的数据路由进行测试。
附图说明
图1为一个实施例中基于智能电表的数据路由测试方法的应用环境图;
图2为一个实施例中基于智能电表的数据路由测试方法的流程示意图;
图3为一个实施例中功能测试步骤的流程示意图;
图4为一个实施例中性能测试步骤的流程示意图;
图5为一个实施例中防护性测试步骤的流程示意图;
图6为另一个实施例中基于智能电表的数据路由测试方法的流程示意图;
图7为一个实施例中基于智能电表的数据路由测试装置的结构框图;
图8为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请提供的基于智能电表的数据路由测试方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。终端102可以从本地获取上述用于实现数据路由的待测试代码,也可以从服务器104中获取上述待测试代码,终端102可以对上述待测试代码进行测试,包括功能测试、性能测试和防护性测试,得到相应的测试结果,并根据测试结果,输出针对智能电表中的数据路由的测试报告。其中,终端102可以是上述智能电表管理芯软件测试装置,服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在一个实施例中,如图2所示,提供了一种基于智能电表的数据路由测试方法,以该方法应用于图1中的终端为例进行说明,包括以下步骤:
步骤S202,获取待测试代码;待测试代码包括所述智能电表中用于实现数据路由的代码。
其中,待测试代码可以是智能电表软件系统在开发设计过程中,负责实现数据路由相关功能的代码。由于智能电表本身软件系统代码通常以一个整体存在,即使是引入嵌入式操作系统的智能电表,代码也会以分层的形式每个层级以一个整体存在。终端102可以在获取到智能电表整体代码的基础上,通过头文件分析和函数定位,即可获取数据路由功能实现的相关代码,作为上述待测试代码。其中,待测试代码中可以包括管道创建与数据分发功能的设计源码等。
步骤S204,对待测试代码进行测试,得到对应的测试结果;测试包括针对待测试代码的功能测试、性能测试以及防护性测试;功能测试基于待测试代码对数据路由的实现方式进行;性能测试基于待测试代码对数据的传输效率进行;防护性测试基于待测试代码对数据的传输压力进行。
其中,待测试代码可以是上述智能电表中用于实现数据路由功能的代码,终端102可以对上述待测试代码进行测试,并得到对应的测试结果。上述测试可以包括多项测试,例如针对待测试代码的功能测试、性能测试和防护性测试等。
其中,功能测试可以是体现上述数据路由具体功能实现的测试,具体可以是基于上述待测试代码和智能电表中的管道的连接性进行的测试,例如管道的创建测试和管道的数据分发测试等;性能测试可以是上述数据路由在实现其功能时,体现实时性程度的测试,具体可以是基于上述待测试代码对上述管道的数据的传输效率进行的测试,例如管道性能测试和管道的数据分发时效测试等;防护性测试可以是体现智能电表中的数据路由在特定或极端情况下的处理能力的测试,具体可以是基于上述待测试代码对管道的数据的传输压力进行的测试,例如并发测试、吞吐量测试和管道数测试等。其中上述管道可以是智能电表中各个硬件或软件模块与数据路由进行通信而形成的管道,智能电表中的管道可以包括多个。
步骤S206,根据测试结果,输出针对数据路由的测试报告。
其中,测试结果可以根据多个测试对应的测试结果得到,例如可以包括上述功能测试、性能测试和防护性测试等,终端102可以在上述功能测试、性能测试和防护性测试均完成后,根据各个子项的测试结果和预先设定的评判准则进行对比分析,进而自动化生成智能电表数据路由功能的测试报告。需要说明的是,针对上述测试项目设计中的各个子项,在测试过程完成以后,测试报告可产生与之一一对应的定量测试结果,即终端102可以对每项测试生成对应的测试结果,还可以将各项测试的测试结果整合为包括所有测试项的测试结果的测试报告。
上述基于智能电表的数据路由测试方法中,通过获取智能电表中用于实现数据路由的待测试代码,对待测试代码进行功能测试、性能测试和防护性测试,分别得到对应的测试结果,其中功能测试基于待测试代码对数据路由的实现方式进行;性能测试基于待测试代码对数据的传输效率进行;防护性测试基于待测试代码对数据的传输压力进行;并根据上述多个测试结果,输出上述数据路由的测试报告。相较于目前的无法对智能电表中的数据路由进行测试,本方案通过基于实现数据路由的代码以及管道等数据进行测试,从而可以实现对智能电表中的数据路由进行测试。
在一个实施例中,对待测试代码进行测试,得到对应的测试结果,包括:对待测试代码进行功能测试,得到功能测试结果;功能测试包括管道创建测试和基于智能电表中的管道的数据分发测试中的至少一种;对待测试代码进行性能测试,得到性能测试结果;性能测试包括管道性能测试和基于管道的数据分发时效测试中的至少一种;对待测试代码进行防护性测试,得到防护性测试结果;防护性测试包括多管道并发测试、基于管道的吞吐量测试和极限管道数测试中的至少一种。
本实施例中,终端102可以对待测试代码进行多项测试,并得到相应的测试结果。终端102对待测试代码的测试可以包括功能测试、性能测试和防护性测试等。具体地,首先,如图3所示,图3为一个实施例中功能测试步骤的流程示意图。功能测试可以包括管道创建测试和基于智能电表中的管道的数据分发测试中的至少一种,其中管道创建测试可以是数据路由与智能电表中的各个模块形成的管道进行的遍历性测试,基于管道的数据分发测试可以是起止遍历测试、指令测试、二级分发及广播点播测试、错误帧测试的至少一种,终端102可以通过对上述待测试代码进行上述管道创建测试和基于管道的数据分发功能测试,得到上述功能测试对应的测试结果。其中,上述模块可以有多个,上述模块可以是负责实现智能电表中各个功能对应的模块。
其次,如图4所示,图4为一个实施例中性能测试步骤的流程示意图。性能测试可以是智能电表的数据路由在实现其功能的过程中,体现数据路由实时性程度的测试,具体地,可以是基于上述数据路由对应的待测试代码与智能电表中的管道的数据的传输效率进行。性能测试可以包括管道性能测试和基于上述管道的数据分发时效测试中的至少一种,其中管道性能测试可以是对管道的平均收发时间的测试,具体地,管道平均收发时间可以是对于各个通道长短帧数据收发预设次数,例如100次的处理时间的平均值;基于管道的数据分发时效性测试可以是对将短帧数据利用单个上述管道分发、将长帧数据利用单个上述管道分发、将短帧数据利用多个上述管道分发以及将长帧数据利用多个上述管道分发四种分发方式时效性的遍历性测试。终端102可以通过对上述待测试代码进行上述管道性能测试和基于管道的数据分发时效测试,得到性能测试的测试结果。
另外,如图5所示,图5为一个实施例中防护性测试步骤的流程示意图。防护性测试可以是对智能电表在特定或极端情况下的处理能力的测试。防护性测试可以包括多管道并发测试、基于管道的吞吐量测试和极限管道述测试中的至少一种。多管道并发测试可以是终端102利用上述智能电表管理芯中的各个模块,同时向数据路由发送数据帧的并发处理能力测试;基于管道的吞吐量测试可以是按照一定发送周期,利用上述管道向数据路由模块发送数据帧的极限处理能力测试;极限管道数测试可以是不造成系统崩溃前提下,终端102可以维持的最大管道数测试。终端102可以对上述待测试代码进行上述多管道并发测试、基于上述管道的吞吐量测试和极限管道数测试,得到防护性测试对应的测试结果。
通过本实施例,终端102可以通过对上述待测试代码进行功能测试、性能测试和防护性测试,从而实现对智能电表中的数据路由进行测试的效果,解决了目前无法对智能电表中的数据路由进行测试的问题。
在一个实施例中,对待测试代码进行功能测试,得到功能测试结果,包括:根据智能电表中的软件、硬件与待测试代码的关联性,将智能电表的系统划分为多个模块;多个模块包括外部通信模块、双芯交互模块、软件升级模块、基础功能模块以及扩展功能模块中的至少两种;从多个模块中确定第一测试模块以及第二测试模块,打开第一测试模块的管道监控功能;第一测试模块和第二测试模块不同;通过第一测试模块,向待测试代码发送由第二测试模块接收的数据帧,以使所述待测试代码将数据帧分发至第二测试模块;数据帧用于指示所述第二测试模块与第一测试模块以及待测试代码建立管道;通过第二测试模块,向待测试代码发送由第一测试模块接收的回应帧,以使待测试代码将回应帧分发至第一测试模块;回应帧用于应答第一测试模块以建立第一测试模块、待测试代码以及第二测试模块之间的管道;若多个模块中存在未被选取作为第二测试模块的模块,从多个模块中选取新的第二测试模块,返回通过所述第一测试模块,向待测试代码发送由第二测试模块接收的数据帧,以使待测试代码将数据帧分发至第二测试模块的步骤;新的第二测试模块为多个模块中未被选取过作为第二测试模块的模块;若多个模块中存在未被选取作为第一测试模块的模块,且不存在未被选取作为第二测试模块的模块,从多个模块中选取新的第一测试模块,并将多个模块均重新确定为未被选取作为第二测试模块的模块,返回打开所述第一测试模块的管道监控功能的步骤;新的第一测试模块为多个模块中未被选取过作为第一测试模块的模块;若多个模块均被选取过作为第一测试模块以及第二测试模块,结束功能测试;根据多个模块与待测试代码建立的管道,得到功能测试结果。
本实施例中,终端102可以对上述待测试代码进行功能测试,其中功能测试中可以包括管道性能测试。具体地,终端102可以首先根据内部软硬件交互机制,将与数据路由功能交互的部分划分为多个模块,例如模块1:双芯交互模块、模块2:软件升级模块、模块3:基础功能模块以及模块4:扩展功能模块中的至少两种。另外还可以包括外部通信模块,外部通信模块可以用于实现智能电表的外部通信。终端102可以对上述各个模块与数据路由交互的管道创建功能进行遍历性测试。管道性能测试的具体测试方法,可以如下所示:
1、终端102中的上位机与HPLC、蓝牙、红外、微功率无线等通信方式连接;其中HPLC、蓝牙、红外、微功率无线等均可以是终端102中的设备或应用;
2、终端102打开上述所述各个模块的管道监控功能;
3、终端102可以从上述多个模块中确定第一测试模块和第一测试模块,例如可以将上述模块1确定为第一测试模块,模块2确定为第二测试模块,并控制第一测试模块向数据路由模块发送读取第二测试模块数据帧;
4、数据路由模块将数据帧进行分发;
5、终端102等待预设时间,例如100ms后,获取判定结果1;
6、终端102控制第二测试模块,向数据路由模块发送对第一测试模块数据帧的正确回应帧;
7、数据路由模块将数据帧进行分发;
8、终端102等待预设时间,例如100ms后,获取判定结果2;
9、终端102可以在等待预设时间,例如500ms后,进行结果综合判定。当上述数据路由成功分发上述各个数据帧时,可以建立数据路由和各个模块间的管道。
10、用模块3、模块4、模块5分别代替上述第二测试模块,重复步骤1~9进行遍历性测试;
11、用模块2、模块3、模块4、模块5分别代替上述第一测试模块,参考步骤1~10进行遍历性测试;
12、终端102统计分析测试结果,得到管道创建功能测试结果,还可以输出相应的测试报告。
其中,终端102对管道创建测试的测试结果可以有对应的评价标准,具体地,评价标准可以包括:数据路由模块主动与终端102中的模块1~模块5的管道创建能否成功;上述模块1~模块5主动与数据路由模块的管道创建能否成功。终端102可以根据上述评价标准,得到管道创建测试对应的测试结果。
通过本实施例,终端102可以利用管道遍历的方法,对管道创建功能进行测试,从而实现对智能电表中的数据路由进行测试的效果。
在一个实施例中,对待测试代码进行功能测试,得到功能测试结果,包括:通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发;获取待测试代码发送的回应指令;若多个模块中存在未被选取作为第二测试模块的模块,从多个模块中选取新的第二测试模块,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤;新的第二测试模块为多个模块中未被选取过作为第二测试模块的模块;若多个模块中存在未被选取作为第一测试模块的模块,且不存在未被选取作为第二测试模块的模块,从多个模块中选取新的第一测试模块,并将多个模块均重新确定为未被选取作为第二测试模块的模块,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤;新的第一测试模块为多个模块中未被选取过作为第一测试模块的模块;若多个模块均被选取过作为第一测试模块以及第二测试模块,根据预设通信协议,更换通信指令的形式,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤,直至所有形式的通信指令均进行过测试;将预设错误帧发送至待测试代码,监控待测试代码是否分发预设错误帧;根据待测试代码对多种形式的通信指令的分发状态以及对预设错误帧的发送状态,得到功能测试结果。
本实施例中,终端102可以对上述待测试代码进行基于管道的数据分发测试,数据分发测试可以是基于通信指令的测试,包括数据帧起止遍历性测试、数据帧指令形式遍历性测试、错误帧测试、二级分发和点播广播测试等,需要说明的是,通常数据路由模块在接收到数据帧之后,会判断目标地址是否已经明确,若已经明确,则说明是回复帧,根据源地址CA,回发给CA通道数据;如果目标地址SA没有明确,则说明是请求数据,可根据数据标识DI3进行一级数据分发,明确目标地址的,通过写相应目标地址管道,把数据分发到各个模块;而对于一级分发确定不了目的地址的,根据645帧控制码以及结合DI0~DI3组合方式二级分发,确定目的地址SA的,可以通过写相应目标地址管道,把数据分发到各个模块;对于二级分发确定不了目标地址的,说明扩展数据标识,则采用点播轮询或直接广播各个通道的方式进行数据发送;等待数据回复后,转发回源地址通道。因此,在进行上述起止遍历性测试和数据帧指令形式遍历性测试的过程中,可完全涵盖对于二级分发和点播广播测试的测试内容。
上述基于管道的数据分发测试,具体测试方法可以如下所示:
1、终端102中的上位机与上述HPLC、蓝牙、红外、微功率无线等智能电表通信方式连接;
2、终端102中的测试APP控制上述第一测试模块向数据路由模块发送地址为上述第二测试模块的通信指令;其中第一测试模块和第二测试模块可以从上述各个模块中确定,例如第一测试模块可以首先选取为上述模块1,第二测试模块可以首先选取为上述模块2;
3、数据路由模块将数据进行分发;
4、终端102中的测试APP将数据路由模块回应的数据发送给终端102中的上位机;
5、上位机根据结果进行判定;
6、更换上述指令发送与接收的模块,重复上述步骤1~5进行起止遍历性测试,得到判定结果1;
7、以645协议及其扩展协议为依据,更换上述指令形式,进行指令的形式遍历性测试,得到判定结果2;
8、终端102可以构造典型错误帧,例如帧头错误、帧内容错误、攻击数据帧三种形式等,发送到数据路由模块,同时终端102可以打开所有的管道监控,延时预设时间,例如100ms后,获取对应的数据,终端102可以根据结果进行判定,得到判定结果3;
9、终端102统计分析测试结果,并可以输出上述数据分发测试的测试报告。
上述基于管道的数据分发测试中,终端102可以根据相应的测试标准得到测试报告,具体地,基于管道的数据分发测试的测试准则可以包括:进行起止遍历测试时,数据是否正确分发;进行指令形式遍历性测试时,数据指令能否正确分发;进行错误帧测试时,数据指令是否能够不被分发。终端102可以根据上述测试标准得到基于管道的数据分发测试对应的测试报告。
通过本实施例,终端102可以对上述数据路由对应的待测试代码进行基于管道的数据帧起止遍历性测试、数据帧指令形式遍历性测试、错误帧测试、二级分发和点播广播测试等测试,从而可以实现对智能电表中数据路由进行测试的效果。
在一个实施例中,对待测试代码进行性能测试,得到性能测试结果,包括:获取待测试代码对应的测试用例;测试用例包括多个不同长度的数据帧;根据测试用例,获取待测试代码对多个不同长度的数据帧的多个收发时间;获取多个收发时间的平均收发时间,作为性能测试结果。
本实施例中,终端102可以对性能测试,性能测试包括管道性能测试,管道性能测试可以是对数据指令的收发处理时效性水平,例如基于收发时间对待测试代码进行测试。具体地,终端102对待测试代码进行的管道性能测试可以如下所示:
1、终端102运行iot studio(物联网开发服务)加载数据路由模块程序以及仿真运行的测试程序;
2、终端102运行数据路由模块程序meter 1;
3、终端102控制各个通道长短帧数据收发预设次数,例如100次,并统计收发处理时间,并求出其平均值;
4、终端102输出管道平均收发处理时间;
5、终端102可以从报文打印中观察测试结果,得到上述管道性能测试对应的测试结果,还可以输出管道性能测试报告。
上述管道性能测试的测试报告可以根据一定测试标准来确定,具体地,管道性能测试的评价准则可以包括:管道平均收发时间是否低于预设值,例如是否低于50ms,其中预设值可以根据实际情况设定。
通过本实施例,终端102可以利用测试用例对上述待测试代码进行收发时间的管道性能测试,从而实现了对智能电表中的数据路由进行测试的效果。
在一个实施例中,对待测试代码进行性能测试,得到性能测试结果,包括:根据待测试代码,生成短帧数据指令以及长帧数据指令;根据待测试代码,将短帧数据指令以及长帧数据指令分别通过单个所述管道和多个管道进行多次分发;分别获取短帧数据指令和长帧数据指令多次分发的平均时间,得到性能测试结果。
本实施例中,终端102可以对上述待测试代码进行性能测试,例如可以进行基于管道的数据分发时效测试,上述数据分发时效测试可以包括短帧单通道分发时效性测试、长帧单通道分发时效性测试、短帧多通道分发时效性测试、长帧多通道分发时效性测试等测试内容。具体地,基于管道的数据分发时效测试的具体步骤可以如下所示:
1、终端102运行iot studio加载数据路由模块的程序以及仿真运行测试程序;
2、终端102运行待测程序meter 1;
3、终端102控制短帧通过单个管道分发数据指令,统计收发预设次数,例如100次的时间,并计算其平均值,得到分发时效性测试结果1;
4、终端102控制长帧通过单个管道分发数据指令,统计收发预设次数,例如100次的时间,并计算其平均值,得到分发时效性测试结果2;
5、终端102控制短帧通过多个管道分发数据指令,统计收发预设次数,例如100次的时间,并计算其平均值,得到分发时效性测试结果3;
6、终端102控制长帧通过多个管道分发数据指令,统计收发预设次数,例如100次的时间,并计算其平均值,得到分发时效性测试结果4;
7、终端102统计分析测试结果,输出数据分发时效性的测试报告。
其中上述预设次数可以根据实际情况设定。终端102可以根据预设的测试标准,得到上述数据分发时效测试的测试报告,具体地,上述数据分发时效测试的评价准则可以包括:数据分发平均时间是否低于预设值,例如50ms,该预设值可以根据实际情况设定。
通过本实施例,终端102可以利用单个管道和多个管道对待测试代码进行数据分发的时效性测试,从而可以实现对智能电表中的数据路由进行测试的效果。
在一个实施例中,对待测试代码进行防护性测试,得到防护性测试结果,包括:分别基于同一预设数据帧和不同预设数据帧,通过管道对所述待测试代码进行并发处理,得到并发测试结果;按照第一预设时间间隔,通过管道向待测试代码多次发送预设数据帧,获取待测试代码的多次回应,得到回应测试结果;根据并发测试结果以及回应测试结果,得到多管道并发测试结果;按照第二预设时间间隔,多次向待测试代码发送预设数据帧,获取待测试代码基于预设数据帧的吞吐量,得到吞吐量测试结果;根据每个管道,向待测试代码发送预设数据帧,获取预设数据帧的传输结果;若传输结果为传输成功,增加管道,返回根据每个管道,向待测试代码发送预设数据帧,获取预设数据帧的传输结果的步骤;若传输结果为传输失败,获取当前管道数量,得到管道数量测试结果;根据多管道并发测试结果、吞吐量测试结果以及管道数量测试结果,得到防护性测试结果。
本实施例中,终端102可以对上述待测试代码进行防护性测试,包括多管道并发测试、吞吐量测试和管道数量测试等,其中,多管道并发测试可以是基于管道的并发测试和基于管道的回应测试进行的测试,例如可以包括多管道不同数据并发处理功能测试、多管道统一数据并发处理功能测试、统一数据帧前后不一样数据内容测试等测试内容,吞吐量测试可以是基于数据的吞吐量进行的测试,管道数量测试可以是基于管道数量的测试。具体地,上述防护性测试的具体步骤,可以如下所示:
1、终端102中的上位机与HPLC、蓝牙、红外、微功率无线等智能电表通信方式连接;
2、终端102的测试APP控制上述模块1~5同时向数据路由模块发送不同的数据帧;
3、数据路由模块根据数据帧指令进行分发;
4、终端102从上述测试APP中获取数据路由模块回应的数据;
5、终端102根据回应的结果进行判断,得出多管道并发处理测试结果1;
6、终端102将上述模块1~5发送的数据帧改为同一数据帧后,重复步骤2~5,得出多管道并发处理测试结果2;
7、上述终端102中的测试APP控制上述模块1~5向数据路由模块发送抄读数据帧,延时预设时间,例如10ms后,向数据路由模块再发送一次相同的抄读数据帧;
8、终端102从上述测试APP中获取数据路由模块两次的回应帧;
9、终端102根据结果进行判断,得出多管道并发处理测试结果3;
10、终端102综合多管道并发处理测试结果1、2、3,输出多管道并发处理测试报告;
11、终端102中的测试APP连续向数据路由模块发送数据帧(发送周期为5ms、10ms、50ms、100ms,可修改),发送次数不小于500次;
12、终端102通过上述测试APP监控数路由模块的处理效果并获取结果统计,输出吞吐量测试报告;
13、终端102中的测试APP与数据路由模块创建多条管道,并在管道创建成功后,向数据路由模块发送数据,监控管道创建情况;
14、终端102通过上述测试APP获取监测的情况,并输出极限管道数测试报告。
上述终端102可以根据相应标准得到防护性测试对应的测试报告,具体地,上述防护性测试的评价准则可以包括:多管道不同数据并发处理能否正常进行而不相互影响;多管道同一数据并发处理能否正常进行而不相互影响;同一数据帧前后数据内容不同时,能否正确回应;高频率数据处理能否正常进行,以及最大管道数下数据帧回应是否正确。
通过本实施例,终端102可以通过多管道并发测试、吞吐量测试以及管道数量测试,对上述待测试代码进行防护性测试,从而实现对智能电表中的数据路由进行测试的效果。
在一个实施例中,如图6所示,图6为另一个实施例中基于智能电表的数据路由测试方法的流程示意图。本实施例中,
步骤301,终端102可以首先通过获取终端102中与智能电表数据路由相关的待测试代码。
步骤302,终端102可以利用上述待测试代码进行功能测试,其中功能测试包括3021管道功能测试、3022数据分发功能测试,具体地,管道功能测试可以包括管道创建遍历性测试、数据分发功能测试可以包括起止遍历性测试、数据帧指令形式遍历性测试、错误帧测试、二级分发和点播广播测试。
步骤303,终端102还可以对上述待测试代码进行性能测试,包括3031管道性能测试和3032数据分发性能测试,其中,管道性能测试可以包括管道平均收发时间测试、数据分发性能测试可以包括短帧单通道分发时效性测试、长帧单通道分发时效性测试、短帧多通道分发时效性测试和长帧多通道分发时效性测试。
步骤304,终端102还可以对待测试代码进行防护性测试,包括3041多管道并发测试、3041吞吐量测试和3043极限管道数测试。其中,多管道并发测试可以包括多管道不同数据并发处理功能测试、多管道统一数据并发处理功能测试以及统一数据帧前后不一样数据内容测试。
步骤305,终端102还可以根据上述各项测试结果,统计分析测试结果并生成相应的测试报告。
通过本实施例,终端102可以对待测试代码进行功能测试、性能测试和防护性测试,从而可以实现对智能电表中的数据路由进行测试的效果。
应该理解的是,虽然图2-图6的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-图6中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图7所示,提供了一种基于智能电表的数据路由测试装置,包括:获取模块500、测试模块502和输出模块504,其中:
获取模块500,用于获取待测试代码;待测试代码包括所述智能电表中用于实现数据路由的代码。
测试模块502,用于对待测试代码进行测试,得到对应的测试结果;测试包括针对待测试代码的功能测试、性能测试以及防护性测试;功能测试基于待测试代码对数据路由的实现方式进行;性能测试基于待测试代码对数据的传输效率进行;防护性测试基于待测试代码对数据的传输压力进行。
输出模块504,用于根据测试结果,输出针对数据路由的测试报告。
在一个实施例中,上述测试模块502,具体用于对待测试代码进行功能测试,得到功能测试结果;功能测试包括管道创建测试和基于智能电表中的管道的数据分发测试中的至少一种;对待测试代码进行性能测试,得到性能测试结果;性能测试包括管道性能测试和基于管道的数据分发时效测试中的至少一种;对待测试代码进行防护性测试,得到防护性测试结果;防护性测试包括多管道并发测试、基于管道的吞吐量测试和极限管道数测试中的至少一种。
在一个实施例中,上述测试模块502,具体用于根据智能电表中的软件、硬件与待测试代码的关联性,将智能电表的系统划分为多个模块;多个模块包括外部通信模块、双芯交互模块、软件升级模块、基础功能模块以及扩展功能模块中的至少两种;从多个模块中确定第一测试模块以及第二测试模块,打开第一测试模块的管道监控功能;第一测试模块和第二测试模块不同;通过第一测试模块,向待测试代码发送由第二测试模块接收的数据帧,以使所述待测试代码将数据帧分发至第二测试模块;数据帧用于指示所述第二测试模块与第一测试模块以及待测试代码建立管道;通过第二测试模块,向待测试代码发送由第一测试模块接收的回应帧,以使待测试代码将回应帧分发至第一测试模块;回应帧用于应答第一测试模块以建立第一测试模块、待测试代码以及第二测试模块之间的管道;若多个模块中存在未被选取作为第二测试模块的模块,从多个模块中选取新的第二测试模块,返回通过所述第一测试模块,向待测试代码发送由第二测试模块接收的数据帧,以使待测试代码将数据帧分发至第二测试模块的步骤;新的第二测试模块为多个模块中未被选取过作为第二测试模块的模块;若多个模块中存在未被选取作为第一测试模块的模块,且不存在未被选取作为第二测试模块的模块,从多个模块中选取新的第一测试模块,并将多个模块均重新确定为未被选取作为第二测试模块的模块,返回打开所述第一测试模块的管道监控功能的步骤;新的第一测试模块为多个模块中未被选取过作为第一测试模块的模块;若多个模块均被选取过作为第一测试模块以及第二测试模块,结束功能测试;根据多个模块与待测试代码建立的管道,得到功能测试结果。
在一个实施例中,上述测试模块502,具体用于通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发;获取待测试代码发送的回应指令;若多个模块中存在未被选取作为第二测试模块的模块,从多个模块中选取新的第二测试模块,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤;新的第二测试模块为多个模块中未被选取过作为第二测试模块的模块;若多个模块中存在未被选取作为第一测试模块的模块,且不存在未被选取作为第二测试模块的模块,从多个模块中选取新的第一测试模块,并将多个模块均重新确定为未被选取作为第二测试模块的模块,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤;新的第一测试模块为多个模块中未被选取过作为第一测试模块的模块;若多个模块均被选取过作为第一测试模块以及第二测试模块,根据预设通信协议,更换通信指令的形式,返回通过第一测试模块,向待测试代码发送接收地址为第二测试模块的通信指令,以使待测试代码将通信指令进行分发的步骤,直至所有形式的通信指令均进行过测试;将预设错误帧发送至待测试代码,监控待测试代码是否分发预设错误帧;根据待测试代码对多种形式的通信指令的分发状态以及对预设错误帧的发送状态,得到功能测试结果。
在一个实施例中,上述测试模块502,具体用于获取待测试代码对应的测试用例;测试用例包括多个不同长度的数据帧;根据测试用例,获取待测试代码对多个不同长度的数据帧的多个收发时间;获取多个收发时间的平均收发时间,作为性能测试结果。
在一个实施例中,上述测试模块502,具体用于根据待测试代码,生成短帧数据指令以及长帧数据指令;根据待测试代码,将短帧数据指令以及长帧数据指令分别通过单个所述管道和多个管道进行多次分发;分别获取短帧数据指令和长帧数据指令多次分发的平均时间,得到性能测试结果。
在一个实施例中,上述测试模块502,具体用于分别基于同一预设数据帧和不同预设数据帧,通过管道对所述待测试代码进行并发处理,得到并发测试结果;按照第一预设时间间隔,通过管道向待测试代码多次发送预设数据帧,获取待测试代码的多次回应,得到回应测试结果;根据并发测试结果以及回应测试结果,得到多管道并发测试结果;按照第二预设时间间隔,多次向待测试代码发送预设数据帧,获取待测试代码基于预设数据帧的吞吐量,得到吞吐量测试结果;根据每个管道,向待测试代码发送预设数据帧,获取预设数据帧的传输结果;若传输结果为传输成功,增加管道,返回根据每个管道,向待测试代码发送预设数据帧,获取预设数据帧的传输结果的步骤;若传输结果为传输失败,获取当前管道数量,得到管道数量测试结果;根据多管道并发测试结果、吞吐量测试结果以及管道数量测试结果,得到防护性测试结果。
关于基于智能电表的数据路由测试装置的具体限定可以参见上文中对于基于智能电表的数据路由测试方法的限定,在此不再赘述。上述基于智能电表的数据路由测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是终端,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器、通信接口、显示屏和输入装置。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的通信接口用于与外部的终端进行有线或无线方式的通信,无线方式可通过WIFI、运营商网络、NFC(近场通信)或其他技术实现。该计算机程序被处理器执行时以实现一种基于智能电表的数据路由测试方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入装置可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图8中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述的基于智能电表的数据路由测试方法。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的基于智能电表的数据路由测试方法。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-Only Memory,ROM)、磁带、软盘、闪存或光存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic Random Access Memory,DRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。