一种流量回放测试方法、装置、计算机设备和存储介质与流程

    专利2022-07-07  137


    本申请涉及软件测试技术领域,特别是涉及一种流量回放测试方法、装置、计算机设备和存储介质。



    背景技术:

    测试是保障网络设备可靠性和稳定性的关键环节。流量回放方法是一种将真实网络流量存储记录并进行还原回放的网络测试方法,通过将捕获得到的真实网络流量还原回放到测试网络,可以再现实际的网络场景,达到考察被测系统在实际网络环境中的功能和性能的目的。

    目前,大多服务接口是通过json格式来传递数据,并且需要利用json对比工具进行对比来实现回归测试,而对于使用protobuf格式来传递数据的服务接口,现有的json对比工具无法满足测试需求。



    技术实现要素:

    基于此,有必要针对上述技术问题,提供一种流量回放测试方法、装置、计算机设备和存储介质。

    第一方面,提供了一种流量回放测试方法,所述方法包括:

    从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对所述目标服务的流量对比请求,将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    进一步地,所述将所述请求报文序列化为protobuf格式数据并存储至数据库之前,所述方法还包括:

    获取所述目标服务对应的预设请求参数;

    根据所述预设请求参数,对所述请求报文中的至少一项请求参数进行修改,得到修改后的请求报文;

    将所述请求报文序列化为protobuf格式数据并存储至数据库,包括:

    将所述修改后的请求报文序列化为protobuf格式数据进行存储至数据库。

    进一步地,所述第一请求报文与所述第二请求报文的数量均为多个,所述将所述第一请求报文与所述第二请求报文分别发送至提供所述目标服务的新版本服务器以及旧版本服务器,包括:

    采用多线程并发的方式将多个所述第一请求报文发送至所述新版本服务器以及将多个所述第二请求报文发送至所述旧版本服务器。

    进一步地,所述目标服务用于业务推荐,所述第一响应对象包含第一推荐结果列表,所述第二响应对象包含第二推荐结果列表,所述比对所述第一响应对象和第二响应对象,获得对比结果,包括:

    对所述第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对所述第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,所述第一分组与所述第二分组分别具有预设数量的推荐结果;

    针对每一个所述第一分组,按照分组顺序对所述第一分组与对应的所述第二分组进行取交集,并将取交集结果分别与所述第一分组、所述第二分组进行差集计算,获得第一差异值以及第二差异值。

    进一步地,所述方法还包括:

    分别对所述第一差异值、所述第二差异值与预设误差阈值进行比较;

    若比较结果指示所述第一差值或所述第二差值超过所述预设误差阈值,则生成告警信息,并输出所述告警信息。

    第二方面,提供了一种流量回放测试装置,所述装置包括:

    预处理模块,用于从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    第一接收模块,用于接收针对所述目标服务的流量对比请求;

    封装模块,用于将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文;

    发送模块,用于将所述第一请求报文与所述第二请求报文分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    第二接收模块,用于接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    对比模块,用于分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    进一步地,所述预处理模块还用于:

    获取所述目标服务对应的预设请求参数;

    根据所述预设请求参数,对所述请求报文中的至少一项请求参数进行修改,得到修改后的请求报文;

    将所述修改后的请求报文序列化为protobuf格式数据进行存储至数据库。

    进一步地,所述发送模块具体用于:

    采用多线程并发的方式将多个所述第一请求报文发送至所述新版本服务器以及将多个所述第二请求报文发送至所述旧版本服务器。

    进一步地,所述目标服务用于业务推荐,所述第一响应对象包含第一推荐结果列表,所述对比模块具体用于:

    对所述第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对所述第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,所述第一分组与所述第二分组分别具有预设数量的推荐结果;

    针对每一个所述第一分组,按照分组顺序对所述第一分组与对应的所述第二分组进行取交集,并将取交集结果分别与所述第一分组、所述第二分组进行差集计算,获得第一差异值以及第二差异值。

    进一步地,所述装置还包括:

    告警模块,用于分别对所述第一差异值、所述第二差异值与预设误差阈值进行比较,若比较结果指示所述第一差值或所述第二差值超过所述预设误差阈值,则生成告警信息,并输出所述告警信息。

    第三方面,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如下步骤:

    从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对所述目标服务的流量对比请求,将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如下步骤:

    从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对所述目标服务的流量对比请求,将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    本发明提供的流量回放测试方法、装置、计算机设备和存储介质,当从目标服务的流量日志数据中解析出的请求报文是由protobuf格式数据转换得到的日志格式数据时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库;并在接收到针对目标服务的流量对比请求时,将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供目标服务的新版本服务器以及旧版本服务器,以及接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文;最后分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果,由此解决了现有对比工具无法满足使用protobuf格式来传递数据的服务接口的测试需求,实现了高效地自动执行流量回放测试的目的,同时也能够有效发现新旧版本服务器之间的差异变化。

    附图说明

    图1示出了一个实施例中流量回放测试方法的流程示意图;

    图2示出了图1所示方法中步骤105的流程示意图;

    图3示出了一个实施例中流量回放测试装置的流程示意图;

    图4示出了一个实施例中计算机设备的内部结构图。

    具体实施方式

    为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅用以解释本申请,并不用于限定本申请。

    需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。

    此外,在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。

    在一个实施例中,提供了一种流量回放测试方法,该方法可以由流量回放测试装置执行,该装置可以采用软件和/或硬件的方式实现。

    如图1所示,流量回放测试方法可以包括以下步骤:

    101,从目标服务的流量日志数据中解析出请求报文,当请求报文是由protobuf格式数据转换得到的日志格式数据时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库。

    其中,目标服务的接口支持protobuf格式数据。protobuf数据格式是google开源的一款数据交换格式,其内部数据是纯二进制格式。

    目标服务接收客户端发送的protobuf格式数据的请求报文并返回响应报文,其中,请求报文中为http协议的请求报文,请求报文中包含但不限于请求参数、服务名称、接口名称和版本号信息。目标服务可以用于对用户提供个性化推荐,当请求报文用于请求个性化推荐(例如,商品推荐或者档期推荐)时,请求报文中的请求参数包含用户的基础标签和行为标签,其中,基础标签包括但不限于年龄、性别、账户信息等,行为标签包括但不限于业务标识、时间区间、ip地址、发起位置等。

    当目标服务接收到protobuf格式数据的请求报文后,会将protobuf格式数据的请求报文转换为日志格式数据存储在流量日志中,例如记录在nginx日志文件里。这里,日志格式数据包括httpget请求参数。

    具体地,可以通过定时脚本对目标服务的流量日志存储的流量数据进行解析出请求报文,将日志格式的请求报文转换化为protobuf格式数据并存储至数据库。其中,将protobuf格式数据存储到数据库时,可以对protobuf格式数据与目标服务的接口名进行对应存储,以便后续接收到针对目标服务的流量对比请求时,根据流量对比请求携带的服务接口名,直接从数据库中查询流量对比请求所对应的protobuf格式数据。

    102,接收针对目标服务的流量对比请求,将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文。

    其中,流量对比请求携带有服务接口名、需要对比的新版本服务器的ip地址以及旧版本服务器的ip地址,还可以携带有指定的请求报文的数量、时间范围等,请求报文的数量可以是一任意数值。

    新版本服务器提供的目标服务的版本高于旧版本服务器提供的目标服务的版本。

    具体地,接收终端发送的针对目标服务的流量对比请求,该流量对比请求是终端在检测到测试人员输入的流量对比指令时生成的。从流量对比请求中解析出服务接口名、需要对比的新版本服务器的ip地址以及旧版本服务器的ip地址,从数据库中读取该流量对比请求所指示的protobuf格式数据,并将protobuf格式数据转换为十六进制数据,将十六进制数据分别封装成http协议的第一请求报文与http协议的第二请求报文。其中,第一请求报文用于请求调用新版本服务器中的目标服务,第二请求报文用于请求调用旧版本服务器中的目标服务。

    103,将第一请求报文与第二请求报文分别发送至提供目标服务的新版本服务器以及旧版本服务器。

    具体地,根据流量对比请求所指示的新版本服务器的ip地址以及旧版本服务器的ip地址,将第一请求报文与第二请求报文分别发送至提供目标服务的新版本服务器以及旧版本服务器。

    104,接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文。

    其中,第一响应报文、第二响应报文均是protobuf格式数据。

    具体地,新版本服务器根据接收到的第一请求报文,通过调用目标服务返回第一响应报文;旧版本服务器根据接收到的第二请求报文,通过调用目标服务返回第二响应报文。

    105,分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果。

    具体地,对protobuf格式数据的第一响应报文以及第二响应报文分别进行反序列化,得到第一响应对象和第二响应对象,通过比对第一响应对象和第二响应对象,获得对比结果。其中第一响应对象和第二响应对象均是protobuf对象。

    本发明提供一种流量回放测试方法,当从目标服务的流量日志数据中解析出的请求报文是由protobuf格式数据转换得到的日志格式数据时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库;并在接收到针对目标服务的流量对比请求时,将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,将第一请求报文与第二请求报文分别发送至提供目标服务的新版本服务器以及旧版本服务器,以及接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文;最后分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果,由此解决了现有json对比工具无法满足使用protobuf格式来传递数据的服务接口的测试需求,实现了高效地自动执行流量回放测试的目的,同时也能够有效发现新旧版本服务器之间的差异变化。

    在一个实施例中,将请求报文序列化为protobuf格式数据并存储至数据库之前,方法还可以包括:

    获取目标服务对应的预设请求参数,根据预设请求参数,对请求报文中的至少一项请求参数进行修改,得到修改后的请求报文。

    其中,可以对目标服务预先配置预设请求参数,预设请求参数可以包括年龄、性别、业务标识、时间区间、ip地址、发起位置中的一个或多个。

    具体地,可以在接收到测试人员通过终端发送的请求参数修改指令后,根据预设请求参数,对请求报文中的至少一项请求参数进行修改。

    将请求报文序列化为protobuf格式数据并存储至数据库,可以包括:

    将修改后的请求报文转换为protobuf格式数据进行存储至数据库。

    本实施例中,通过对流量数据中的请求报文进行修改请求参数,由此可以支持更加多样化的流量回放需求,提高了流量回放测试的灵活性。

    在一个实施例中,第一请求报文与第二请求报文的数量均为多个,将第一请求报文与第二请求报文分别发送至提供目标服务的新版本服务器以及旧版本服务器,可以包括:

    采用多线程并发的方式将多个第一请求报文发送至新版本服务器以及将多个第二请求报文发送至旧版本服务器。

    其中,可以根据请求报文的数量灵活调整并发的线程数。

    本实施例中,通过采用多线程并发的方式进行流量回放测试,极大地提升了测试效率。

    在一个实施例中,目标服务用于业务推荐,第一响应对象包含第一推荐结果列表,第二响应对象包含第二推荐结果列表,如图2所示,上述步骤105中比对第一响应对象和第二响应对象,获得对比结果,该过程可以包括:

    1051,对第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,第一分组与第二分组分别具有预设数量的推荐结果。

    其中,推荐结果列表中的推荐结果具有推荐顺序,推荐顺序用于指示推荐优先级,推荐顺序越靠前,推荐优先级越高,推荐结果可以是商品或档期,预设数量可以根据实际需要进行设定。

    1052,针对每一个第一分组,按照分组顺序对第一分组与对应的第二分组进行取交集,并将取交集结果分别与第一分组、第二分组进行差集计算,获得第一差异值以及第二差异值。

    其中,将取交集结果分别与第一分组、第二分组进行差集计算,获得第一差异值以及第二差异值,该过程可以包括:

    将取交集结果与第一分组进行差集计算得到第一差集结果,将取交集结果与第二分组进行差集计算得到第二差集结果,对第一差集结果、第二差集结果分别与预设数量进行比值计算,获得第一差异值以及第二差异值。

    示例性地,第一推荐结果列表、第二推荐结果列表均包含1000个推荐商品,可以根据商品推荐顺序对第一推荐结果列表、第二推荐结果列表各自的1000个推荐商品以每100个商品为一组,拆分成第一推荐结果列表的有序的10个分组,依次为:分组a1、分组a2、…分组a10,以及拆分成第二推荐结果列表的有序的10个分组,依次为:分组b1、分组b2、…分组b10。根据分组顺序,对分组an与分组bn进行取交集,并对取交集结果分别与分组an、分组bn进行差集计算,得到分组an对应的第一差集结果以及分组bn对应的第二差集结果,这里n为介于1至10之间的整数值,最后对第一差集结果、第二差集结果分别与取值100的预设数量进行比值计算,得到第一差异值和第二差异值。

    本实施例中,在对比测试过程中通过对推荐结果列表按推荐顺序进行分组,并对分组进行取交集以及差集计算,可以提高个性化推荐结果的校验准确率,避免采用通过对推荐结果列表进行直接对比而导致校验准确率低的问题。

    在一个实施例中,方法还包括:

    分别对第一差异值、第二差异值与预设误差阈值进行比较,若比较结果指示第一差值或第二差值超过预设误差阈值,则生成告警信息,并输出告警信息。

    其中,预设误差阈值可以根据实际需要进行设定。

    本实施例中,当第一差值和第二差值中的任意一个超过预设误差阈值时,表示差异结果过大,则生成告警信息,输出告警信息至测试人员所属终端,以指示测试人员及时核验差异过大原因。

    应该理解的是,虽然图1-2的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-2中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

    在一个实施例中,如图3所示,提供了一种流量回放测试装置,装置包括:

    预处理模块301,用于从流量数据中解析出请求报文,当请求报文用于请求调用目标服务时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    第一接收模块302,用于接收针对目标服务的流量对比请求;

    封装模块303,用于将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文;

    发送模块304,用于将第一请求报文与第二请求报文分别发送至提供目标服务的新版本服务器以及旧版本服务器;

    第二接收模块305,用于接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文;

    对比模块306,用于分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果。

    在一个实施例中,预处理模块301还用于:

    获取目标服务对应的预设请求参数;

    根据预设请求参数,对请求报文中的至少一项请求参数进行修改,得到修改后的请求报文;

    将修改后的请求报文进行二进制处理为protobuf格式数据进行存储至数据库。

    在一个实施例中,发送模块304具体用于:

    采用多线程并发的方式将多个第一请求报文发送至新版本服务器以及将多个第二请求报文发送至旧版本服务器。

    在一个实施例中,目标服务用于业务推荐,第一响应对象包含第一推荐结果列表,对比模块306具体用于:

    对第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,第一分组与第二分组分别具有预设数量的推荐结果;

    针对每一个第一分组,按照分组顺序对第一分组与对应的第二分组进行取交集,并将取交集结果分别与第一分组、第二分组进行差集计算,获得第一差异值以及第二差异值。

    在一个实施例中,装置还包括:

    告警模块,用于分别对第一差异值、第二差异值与预设误差阈值进行比较,若比较结果指示第一差值或第二差值超过预设误差阈值,则生成告警信息,并输出告警信息。

    关于流量回放测试装置的具体限定可以参见上文中对于流量回放测试方法的限定,在此不再赘述。上述流量回放测试装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

    在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图4所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储备用测试数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种流量回放测试方法。

    本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

    在一个实施例中,提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:

    从流量数据中解析出请求报文,当请求报文用于请求调用目标服务时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对目标服务的流量对比请求,将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供目标服务的新版本服务器以及旧版本服务器;

    接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文;

    分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果。

    在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:

    从流量数据中解析出请求报文,当请求报文用于请求调用目标服务时,将请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对目标服务的流量对比请求,将数据库存储的与流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供目标服务的新版本服务器以及旧版本服务器;

    接收新版本服务器基于第一请求报文返回的第一响应报文以及旧版本服务器基于第二请求报文返回的第二响应报文;

    分别对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对第一响应对象和第二响应对象,获得对比结果。

    本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。

    以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

    以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。


    技术特征:

    1.一种流量回放测试方法,其特征在于,所述方法包括:

    从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    接收针对所述目标服务的流量对比请求,将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    2.根据权利要求1所述的方法,其特征在于,所述将所述请求报文序列化为protobuf格式数据并存储至数据库之前,所述方法还包括:

    获取所述目标服务对应的预设请求参数;

    根据所述预设请求参数,对所述请求报文中的至少一项请求参数进行修改,得到修改后的请求报文;

    将所述请求报文序列化为protobuf格式数据并存储至数据库,包括:

    将所述修改后的请求报文序列化为protobuf格式数据进行存储至数据库。

    3.根据权利要求1所述的方法,其特征在于,所述第一请求报文与所述第二请求报文的数量均为多个,所述将所述第一请求报文与所述第二请求报文分别发送至提供所述目标服务的新版本服务器以及旧版本服务器,包括:

    采用多线程并发的方式将多个所述第一请求报文发送至所述新版本服务器以及将多个所述第二请求报文发送至所述旧版本服务器。

    4.根据权利要求1至3任一所述的方法,其特征在于,所述目标服务用于业务推荐,所述第一响应对象包含第一推荐结果列表,所述第二响应对象包含第二推荐结果列表,所述比对所述第一响应对象和第二响应对象,获得对比结果,包括:

    对所述第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对所述第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,所述第一分组与所述第二分组分别具有预设数量的推荐结果;

    针对每一个所述第一分组,按照分组顺序对所述第一分组与对应的所述第二分组进行取交集,并将取交集结果分别与所述第一分组、所述第二分组进行差集计算,获得第一差异值以及第二差异值。

    5.根据权利要求4所述的方法,其特征在于,所述方法还包括:

    分别对所述第一差异值、所述第二差异值与预设误差阈值进行比较;

    若比较结果指示所述第一差值或所述第二差值超过所述预设误差阈值,则生成告警信息,并输出所述告警信息。

    6.一种流量回放测试装置,其特征在于,所述装置包括:

    预处理模块,用于从目标服务的流量日志数据中解析出请求报文,当所述请求报文是由protobuf格式数据转换得到的日志格式数据时,将所述请求报文进行二进制处理为protobuf格式数据并存储至数据库;

    第一接收模块,用于接收针对所述目标服务的流量对比请求;

    封装模块,用于将所述数据库存储的与所述流量对比请求对应的protobuf格式数据封装成第一请求报文与第二请求报文;

    发送模块,用于将所述第一请求报文与所述第二请求报文分别发送至提供所述目标服务的新版本服务器以及旧版本服务器;

    第二接收模块,用于接收所述新版本服务器基于所述第一请求报文返回的第一响应报文以及所述旧版本服务器基于所述第二请求报文返回的第二响应报文;

    对比模块,用于分别对所述第一响应报文与所述第二响应报文进行反序列化,得到第一响应对象和第二响应对象,比对所述第一响应对象和第二响应对象,获得对比结果。

    7.根据权利要求6所述的装置,其特征在于,所述预处理模块还用于:

    获取所述目标服务对应的预设请求参数;

    根据所述预设请求参数,对所述请求报文中的至少一项请求参数进行修改,得到修改后的请求报文;

    将所述修改后的请求报文序列化为protobuf格式数据进行存储至数据库。

    8.根据权利要求6或7所述的装置,其特征在于,所述目标服务用于业务推荐,所述第一响应对象包含第一推荐结果列表,所述第二响应对象包含第二推荐结果列表,所述对比模块具体用于:

    对所述第一推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第一分组,对所述第二推荐结果列表中的推荐结果按照推荐顺序进行拆分成有序的多个第二分组,所述第一分组与所述第二分组分别具有预设数量的推荐结果;

    针对每一个所述第一分组,按照分组顺序对所述第一分组与对应的所述第二分组进行取交集,并将取交集结果分别与所述第一分组、所述第二分组进行差集计算,获得第一差异值以及第二差异值。

    9.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至5中任一所述方法的步骤。

    10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至5中任一项所述的方法的步骤。

    技术总结
    本申请涉及一种流量回放测试方法、装置、计算机设备和存储介质。方法包括:从目标服务的流量日志数据中解析出请求报文,当请求报文是由ProtoBuf格式数据转换得到的日志格式数据时,将请求报文进行二进制处理为ProtoBuf格式数据并存储至数据库;接收针对目标服务的流量对比请求,将数据库存储的与流量对比请求对应的ProtoBuf格式数据封装成第一请求报文与第二请求报文,并分别发送至提供目标服务的新版本服务器以及旧版本服务器;接收新版本服务器返回的第一响应报文及旧版本服务器返回的第二响应报文;对第一响应报文与第二响应报文进行反序列化,得到第一响应对象和第二响应对象并比对,获得对比结果。本申请能够对使用ProtoBuf格式来传递数据的服务接口满足其测试需求。

    技术研发人员:张扬
    受保护的技术使用者:广州品唯软件有限公司
    技术研发日:2020.12.02
    技术公布日:2021.03.12

    转载请注明原文地址:https://wp.8miu.com/read-8518.html

    最新回复(0)