多功能电表通信协议测试用例的生成方法、装置及设备与流程

文档序号:17901090发布日期:2019-06-13 16:33阅读:339来源:国知局
多功能电表通信协议测试用例的生成方法、装置及设备与流程

本申请涉及通信领域,特别涉及一种多功能电表通信协议测试用例的生成方法、装置、设备及计算机可读存储介质。



背景技术:

电能计量自动化系统是智能用电领域最核心、最关键的系统,是建设智能电网的着力点和落脚点。随着国内电力自动化技术的飞速发展,具有自主知识产权的电力自动化设备也随之开发成功,设备性能也逐渐提升。但由于生产这些设备的厂商不同,通信采用的工业控制协议不同,设备早期设计的重点不同等多种原因,造成自动化设备存在一些功能性或安全性的逻辑缺陷,这些就构成了电能计量自动化系统的漏洞,一旦某些较严重的漏洞被攻击者发现,就有可能被其利用,在未授权的情况下访问或破坏整个系统。因此,先于恶意攻击者发现并分析自动化设备的安全漏洞,及时针对漏洞制定相应保护策略,可有效减少来自外部网络的威胁。

协议测试技术是安全测试技术的一种,通过构造畸形数据包输入数据使得终端发生异常等情况,从而发现通信协议存在的安全问题。目前,测试用例的生成主要分为两大类,一类是基于生成,另一类基于变异,而无论是基于生成或者基于变异都有各自的缺点:基于生成的方法中,倘若规约复杂,则比较难构造,而且构造出来的包也难以覆盖全部的漏洞;基于变异的生成方法只对报文进行部分变异,产生的测试用例大多不符合规约要求。

可见,基于传统测试用例生成方法生成的测试用例难以测试出新的漏洞,或存在较多因不符合规约而无法完成测试的问题,因此测试效率较低。



技术实现要素:

本申请的目的是提供一种多功能电表通信协议测试用例的生成方法、装置、设备及计算机可读存储介质,用以解决传统测试用例生成方法生成的测试用例难以测试出新的漏洞,或存在较多因不符合规约而无法完成测试的问题,因此测试效率较低。

为解决上述技术问题,本申请提供了一种多功能电表通信协议测试用例的生成方法,包括:

随机生成报文;

将所述报文修改为符合多功能电表通信协议的报文;

利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文;

确定所述能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。

可选的,所述确定所述能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例,包括:

将所述能够测试出漏洞的报文作为基础报文,利用遗传算法根据所述基础报文实现对报文字段的随机组合,得到新的报文以作为测试用例。

可选的,所述得到新的报文以作为测试用例,包括:

计算新的报文与所述基础报文的相似度;

判断所述相似度是否满足预设要求;

若满足,则将该报文作为测试用例。

可选的,所述计算新的报文与所述基础报文的相似度,包括:

调用pythonfuzzywuzzy函数计算新的报文与所述基础报文的相似度。

可选的,所述随机生成报文,包括:

利用多段伪随机方法随机生成报文。

可选的,所述将所述报文修改为符合多功能电表通信协议的报文,包括:

将所述报文修改为符合dl/t645-2007多功能电表通信协议的报文。

本申请还提供了一种多功能电表通信协议测试用例的生成装置,包括:

随机生成模块:用于随机生成报文;

报文修改模块:用于将所述报文修改为符合多功能电表通信协议的报文;

报文筛选模块:用于利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文;

随机组合模块:用于确定所述能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。

可选的,所述随机组合模块具体用于:

将所述能够测试出漏洞的报文作为基础报文,利用遗传算法根据所述基础报文实现对报文字段的随机组合,得到新的报文以作为测试用例。

此外,本申请还提供了一种多功能电表通信协议测试用例的生成设备,包括:

存储器:用于存储计算机程序;

处理器:用于执行所述计算机程序,以实现如上任意一项所述的一种多功能电表通信协议测试用例的生成方法的步骤。

最后,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项所述的一种多功能电表通信协议测试用例的生成方法的步骤。

本申请所提供的一种多功能电表通信协议测试用例的生成方法,首先随机生成报文,然后将报文修改为符合多功能电表通信协议的报文,再利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文,最后确定能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。可见,该方法采用随机变异与生成相结合的方式,从随机生成的报文中筛选出漏洞报文,并基于漏洞报文生成更多新的报文作为测试用例,由于漏洞报文为符合规约的报文,因此生成的新的报文也为符合规约的报文,且以漏洞报文为基础生成相较于盲目生成的报文更容易测出漏洞,因此该方法显著提高了测试效率。

此外,本申请还提供了一种多功能电表通信协议测试用例生成装置、设备及计算机可读存储介质,其作用与上述方法的作用相对应,这里不再赘述。

附图说明

为了更清楚的说明本申请实施例或现有技术的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请所提供的一种多功能电表通信协议测试用例的生成方法实施例一的实现流程图;

图2为本申请所提供的一种多功能电表通信协议测试用例的生成方法实施例二的实现流程图;

图3为本申请所提供的一种多功能电表通信协议测试用例的生成方法实施例二中基于多段伪随机的报文生成流程图;

图4为本申请所提供的一种多功能电表通信协议测试用例的生成方法实施例二中基于遗传算法的报文生成流程图;

图5为本申请所提供的一种多功能电表通信协议测试用例的生成装置的功能框图;

图6为本申请所提供的一种多功能电表通信协议测试用例的生成设备的结构示意图。

具体实施方式

本申请的核心是提供一种多功能电表通信协议测试用例的生成方法、装置、设备及计算机可读存储介质,实现了保证生成的测试用例符合通信协议且提高了测试用例测出漏洞概率的目的,从而提升了测试效率。

为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面对本申请提供的一种多功能电表通信协议测试用例的生成方法实施例一进行介绍,参见图1,实施例一包括:

步骤s101:随机生成报文。

上述报文指的是用于对被测设备进行测试的报文,本实施例对随机生成的方式不做具体限定,具体的,可以选取在已知报文的基础上进行随机变异的方式,也可以选取多段伪随机的生成方式。

步骤s102:将所述报文修改为符合多功能电表通信协议的报文。

因上述报文为随机生成的,因此可能存在一些不符合多功能电表通信协议的,为了避免被测设备因检测到报文不合规约,直接采取丢弃或不处理等动作,本实施例将报文修改为符合多功能电表通信协议的报文,以便于被测设备在接收到报文之后能够做出响应,实现测试的目的。具体的,本实施例可应用于dl/t645-2007多功能电表通信协议,在修改时,具体可以将报文修改为符合dl/t645-2007多功能电表通信协议的报文。

步骤s103:利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文。

通过利用修改后的报文对待测多功能电表进行测试,得到测试结果,分析测试结果,确定并筛选出测试出漏洞的报文,以供后续处理。

步骤s104:确定所述能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。

在得到测试出漏洞的报文后,以此漏洞报文作为基础报文,通过对报文的报文字段进行“杂交”,即随机组合,得到新的报文,并将新的报文作为测试用例,作为一种可选的实施方式,可以选用遗传算法实现上述步骤。值得一提的是,本实施例不限定于报文字段的随机组合,除了上述随机组合的操作之外,还可以进行适当的变异,只要在变异过程中参照通信协议进行变异以保证变异得到的报文符合通信协议即可。

本实施例所提供一种多功能电表通信协议测试用例的生成方法,首先随机生成报文,然后将报文修改为符合多功能电表通信协议的报文,再利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文,最后确定能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。可见,该方法采用随机变异与生成相结合的方式,从随机生成的报文中筛选出漏洞报文,并基于漏洞报文生成更多新的报文作为测试用例,由于漏洞报文为符合规约的报文,因此生成的新的报文也为符合规约的报文,且以漏洞报文为基础生成相较于盲目生成的报文更容易测出漏洞,因此该方法显著提高了测试效率。

下面开始详细介绍本申请提供的一种多功能电表通信协议测试用例的生成方法实施例二,实施例二基于上述实施例一实现,并在实施例一的基础上进行了一定程度上的拓展。具体的,参见图2,实施例二包括:

步骤s201:利用多段伪随机方法随机生成报文。

在普通的随机算法中,倘若要求随机的数量过大,会产生一个时间慢的问题,鉴于dl/t645—2007协议中的报文是一组16进制形式的字符串,本实施例采取多段伪随机方法。如图3所示,假设要生成x条报文时,采取分段式随机生成方法的实施过程包括:

步骤s2011:确定测试用例要划分成的段数n;

步骤s2012:确定每段要随机生成的数量

步骤s2013:根据y的数量随机生成相应数量的测试用例段,随机方法采用基础字符选择法,每次从基础字符挑出一个,直到此测试用例段满足长度要求;

其中,基础字符为0-9或a-f。

步骤s2014:把每段组合起来就能得到相应数量的测试用例。

步骤s202:将所述报文修改为符合dl/t645-2007多功能电表通信协议的报文。

步骤s203:利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文。

用最终生成的测试用例对被测设备进行发送测试,判断设备状态,从中得出触发漏洞的测试用例,作为遗传算法的基础测试用例。具体的,步骤s203和步骤s202可以以一种循环的方式进行,即:用基于变异的测试用例对被测设备进行模糊测试,经过大量的测试,倘若产生漏洞,则以漏洞报文作为遗传算法的基础报文,若否,则继续进行多段伪随机算法,直至测试出漏洞报文然后进入下一步骤。

步骤s204:将能够测试出漏洞的报文作为基础报文,利用遗传算法根据基础报文实现对报文字段的随机组合,得到新的报文作为测试用例。

需要说明的是,由于基础报文是基于已发现的漏洞报文,以此漏洞报文进行随机,生成初始种群,然后进行整个遗传算法的步骤,最终生成的报文同样符合规约要求。具体的,如图4所示,基于遗传算法的生成过程包括:

步骤s2041:初始化,生成初始种群,通过对基础漏洞报文进行随机变异,生成初始种群,种群中个体数量根据经验值不断进行修改。

步骤s2042:适应度计算,适应度值的计算采取种群中的个体与基础漏洞报文的相似度进行取值。

适应度函数采取判断与基础报文的相似度进行取值,本实施例采用的是python中的fuzzywuzzy中的算法进行取值,相似度与十六进制字符顺序、长度相关,字符越相似,适应度数值越大。需要说明的是,上述相似度的计算方式并非必要的,该方式仅作为本实施例提供的一种可选的实现方式。

步骤s2043:个体选择,通过轮盘赌的方法对个体进行选择,选择标准以适应度的大小作为标准,作为父代,以便进行下一步骤。

步骤s2044:个体的交配,子代的生成由父代中的测试用例中随机挑选父母,新生成的个体染色体前半部分采用父亲的染色体,后半部分采用母亲的染色体组合成新的测试用例。

步骤s2045:个体的变异,子代中的个体经过随机挑选部分个体进行基因变异,变异基因的位置与变异结果同样随机产生。

步骤s2046:从种群中挑选出优质适应度的个体放到优选测试用例当中。

步骤s2047:预先设置终止条件,终止条件为种群中的优选测试用例经过去重达到所需要的报文条目数量,以上循环中止。

最终,得到预期数量的报文作为测试用例。作为一种可选的实施方式,可以把得出的测试用例对被测设备进行测试,并将发现的漏洞报文作为下一次的遗传算法的基础报文,如此返复,达到通过已知的漏洞报文发现更多的漏洞报文的目的。

综上,本实施例提供的一种多功能电表通信协议测试用例的生成方法,基于变异生成报文,简称变报,然后以变报作为基础对dl/t645—2007协议进行模糊测试,在监测出漏洞报文的基础上,以漏洞报文作为遗传算法的基础报文,由交叉和变异产生新测试用例,直到生成所需要的测试用例数量为止。可见,该方法采取多段随机与遗传算法复合的技术生成测试用例,实现了在规约范围内对漏洞报文进行变异,因此生成的报文不仅符合通信协议,且更容易测试出漏洞,因而提升了测试效率。

下面对本申请实施例提供的一种多功能电表通信协议测试用例的生成装置进行介绍,下文描述的一种多功能电表通信协议测试用例的生成装置与上文描述的一种多功能电表通信协议测试用例的生成方法可相互对应参照。

如图5所示,该装置包括:

随机生成模块501:用于随机生成报文。

报文修改模块502:用于将所述报文修改为符合多功能电表通信协议的报文。

报文筛选模块503:用于利用修改后的报文对待测多功能电表进行测试,筛选得到能够测试出漏洞的报文。

随机组合模块504:用于确定所述能够测试漏洞的报文所包括的报文字段,通过对所述报文字段进行随机组合,得到新的报文以作为测试用例。

作为一种可选的实施方式,所述随机组合模块504具体用于:

将所述能够测试出漏洞的报文作为基础报文,利用遗传算法根据所述基础报文实现对报文字段的随机组合,得到新的报文以作为测试用例。

本实施例的一种多功能电表通信协议测试用例的生成装置用于实现前述的一种多功能电表通信协议测试用例的生成方法,因此该装置中的具体实施方式可见前文中的一种多功能电表通信协议测试用例的生成方法的实施例部分,例如,随机生成模块501、报文修改模块502、报文筛选模块503、随机组合模块504,分别用于实现上述一种多功能电表通信协议测试用例的生成方法中步骤s101,s102,s103,s104。所以,其具体实施方式可以参照相应的各个部分实施例的描述,在此不再展开介绍。

另外,由于本实施例的一种多功能电表通信协议测试用例的生成装置用于实现前述的一种多功能电表通信协议测试用例的生成方法,因此其作用与上述方法的作用相对应,这里不再赘述。

此外,本申请还提供了一种多功能电表通信协议测试用例的生成设备,如图6所示,该设备包括:

存储器601:用于存储计算机程序;

处理器602:用于执行所述计算机程序,以实现如上任意一项所述的一种多功能电表通信协议测试用例的生成方法的步骤。

最后,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任意一项所述的一种多功能电表通信协议测试用例的生成方法的步骤。

本实施例的一种多功能电表通信协议测试用例的生成设备、计算机可读存储介质用于实现前述的一种多功能电表通信协议测试用例的生成方法,因此该设备、计算机可读存储介质的具体实施方式可见前文中的一种多功能电表通信协议测试用例的生成方法的实施例部分,且二者的作用与上述方法相对应,此处不再赘述。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或技术领域内所公知的任意其它形式的存储介质中。

以上对本申请所提供的一种多功能电表通信协议测试用例的生成方法、装置、设备以及计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1