本发明涉及数据采集技术领域,具体涉及一种针对播发数据的抽样采集自动化验证方法。
背景技术:
传统的播发系统是走tcp协议的网络数据播发长连接系统,每次验证每一笔数据的数据结构是否正确,还需要根据相关配置验证每笔数据的相隔频率,以及是否属于同一个星历。目前业界对于每笔数据本身的验证都有完美的解决方案,但是对于播发系统的这种每笔数据之间相互关联的模式,没有相应的自动化验证解决方案,主要采用抽样采集一段时间的数据,然后对采集的数据进行分析的方式进行自动化验证。
现有技术存在的缺点在于,对于播发系统的这种每笔数据之间相互关联的模式,没有相应的自动化验证解决方案。
技术实现要素:
本发明通过采集一段时间内的数据,然后对采集的数据进行分析断言来进行自动化验证,解决了对播发数据的自动化验证的技术问题,可以解放人力无需手动做回归测试。
基于此,本发明采用的技术方案如下:
一种针对播发数据的抽样采集自动化验证方法,包括以下步骤:
步骤1,播发系统给用户播发消息;
步骤2,测试消息频率;
步骤3,测试数据标识是否正确。
进一步地,步骤1中播发系统根据mysql数据库里mountpoint表的配置来给用户播发消息。
进一步地,所述步骤2具体包括以下步骤:
步骤s21,定义抽样数据的时间段为i*n秒,其中i为所有消息的最大间隔时间,n为当前消息的接收次数,令当前消息的播发频率为r,当收到消息时,记录消息类型为an,时间为bn;
步骤s22,判断是否是第一次收到,如果是,则记录消息类型为a1,时间为b1,收到的次数为y1;如果不是第一次收到,则令同一消息间隔时间为t=b(n+1)-bn,b(n+1)为第n+1次收到消息的时间,判断t=r+offset1是否成立,offset1表示1秒之内的误差可以接受,取值在正负1之间,如果不成立则测试失败,如果成立则判断所有消息的接收总次数m是否等于(i*n)/r+offset2,offset2表示允许有1次以内的误差次数,取值为正1或者负1,如果相等则测试通过,否则测试失败。
进一步地,播发消息的每组数据有一个标识sync表示当前历元数据是否结束,sync=1代表未结束,sync=0代表结束。
进一步地,所述消息类型在同一历元,同时收到同一历元的消息类型。
进一步地,在收到消息an后进行判断,若0.5秒内未收到数据,那么an为所述同一历元的最后一条数据,sync=0。
进一步地,所述步骤3具体包括以下步骤:
当收到消息an时,判断是否是同一历元,如果是,则把消息an记录下来,然后判断0.5秒内是否有数据,如果有,消息an的sync=1,消息a(n+1)是否等于an,如果是,则报错,如果不是,然后继续判断0.5秒内是否有数据,如果有,消息a(n+1)的sync=1,消息a(n+2)是否等于消息a(n+1)或者消息an,如果是,则报错,如果不是,则继续判断0.5秒内是否有数据,如果没有,消息a(n+2)的sync=0,判断结束。
本发明的有益效果在于,可以对播发数据进行自动化验证,解放人力无需手动做回归测试。
附图说明
图1是本发明测试消息频率的流程图。
图2本发明测试同历元数据标识是否正确的流程图。
具体实施方式
本发明提供了一种针对播发数据的抽样采集自动化验证方法,针对不同配置形式,可以有不同的数据解析方式,但是判断的方式是通用的。下文中,结合附图和实施例对本发明作进一步阐述。
本发明包括以下步骤:
步骤1,播发系统会根据mysql数据库(mysql是一种开放源代码的关系型数据库管理系统)里mountpoint(挂载点)表的配置来给用户播发相应的消息(数据),如:
mountpoint名称:rtk_ggb
format:1005(10),1074(1)-1084(1)-1124(1)
此配置代表了用户订阅消息时传入的mountpoint参数为rtk_ggb时,系统会向下播发1005消息,间隔为10s,1074、1084、1124消息,间隔为1s,且1074、1084、1124用“-”符号相连,表示这3个消息类型是同一历元。
步骤2,测试消息频率方法:从上面的配置可以看出,所有消息的最大间隔时间为10s,所有在测试时定义抽样数据的时间段为10*n秒,其中n=5(n的取值可以根据需要来配置),那么,令当前消息的播发频率为r,当收到消息时,记录消息类型an,时间为bn;判断是否第一次收到,如果是,则记录其类型a1和时间b1以及收到的次数y1,如果不是第一次收到,则令同一消息间隔时间为t=b(n+1)-bn,判断t=r+offset1(offset1取值在正负1之间,表示1秒之内的误差可以接受)是否成立,如不成立则验证失败,如成立则判断总次数m是否等于(10*n)/r+offset2(offset2取值为正1或者负1,表示允许有1次以内的次数误差),相等则测试通过,否则失败;流程图如1所示。
步骤3,测试同历元数据标识是否正确,播发数据的每组数据都会有一个标识sync表示当前历元数据是否结束(1代表未结束,0代表结束),验证的思想是:由于3种消息类型在同一历元,所以这3条消息几乎会同时收到,那么判断在收到数据an后,0.5秒内未收到数据,那么an为该历元最后一条数据,sync=0;实际验证流程:当收到数据时,判断是否是1074、1084、1124其中之一,如果是,则把消息an记录下来,然后判断0.5s内是否有数据,如果有,an数据的sync=1,数据a(n+1)是否等于an,如果是,则报错,如果不是,然后继续判断0.5s内是否有数据,如果有,a(n+1)数据的sync=1,数据a(n+2)是否等于a(n+1)或者an,如果相等则报错,如果不相等则继续判断0.5s内是否有数据,如果没有,a(n+2)数据的sync=0,判断结束;流程图如图2所示。
本发明优选使用java语言,可以针对不同的配置形式展开不同的解析方式,配置可以在数据库,也可以在配置文件等;数据抽样时间段可随意调整,n>配置中最大的消息频率就可以;offset1、offset2可以视场景而定,看具体对于误差的容忍度。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。