流式系统的测试方法及装置制造方法

文档序号:6486611阅读:109来源:国知局
流式系统的测试方法及装置制造方法
【专利摘要】本发明提出一种流式系统的测试方法及装置。其中所述方法包括以下步骤:采集流式系统中各个模块之间的第一接口数据;获取第一接口数据的类型;统计每种类型的各个特征值在第一预定时间段内的第一范围;采集流式系统中各个模块之间的第二接口数据;以及确定第二接口数据的特征值是否在第一范围内。根据本发明实施例的方法,可以实时自动采集数据,满足大数据量的模块接口和动态数据测试的需求;自动生成模块之间接口的校验规则,且当数据或测试策略发生变化时可以及时调整校验规则;实现对长期运行的流式系统的接口数据的校验;大大提高测试效率和质量,减少人力成本,规范流式系统,并且可以发现传统测试方法很多难以发现的问题。
【专利说明】流式系统的测试方法及装置
【技术领域】
[0001]本发明涉及计算机【技术领域】,尤其涉及一种流式系统的测试方法及装置。
【背景技术】
[0002]现有技术在进行流式系统测试时,首先需要人工根据流式系统中各个模块之间的接口定义格式构造不同的测试用例,包括指定输入和预期结果,然后采用人工或自动化的方式根据指定输入将流式系统所产生的结果与预期设计的标准(预期结果)进行校验,以测试各个模块之间的接口在合法以及非法情况下能否达到预期效果。
[0003]现有技术存在以下的问题:
[0004](I)无论采用人工或者自动化的方式进行校验,都需要人工维护测试用例,包括指定输入和预期结果,一旦数据或测试策略发生变化时,则无法进行准确有效的测试;
[0005](2)对于长期运行的流式系统,根据构造好的测试用例测试完一个流式系统的版本后即弃用,不能提供长期稳定的持续监控和校验测试服务;
[0006](3)不支持自动数据采集,特别是大规模的数据采集和动态更新;
[0007](4)对于多个模块构成的流式系统,特别是多个模块间的数据有直接或间接关联时,往往通过内部接口测试通过后,再采用集成测试或系统测试方法进行校验,无法实现一体式的自动验证。

【发明内容】

[0008]本发明旨在至少解决上述技术问题之一。
[0009]为此,本发明的一个目的在于提出一种可以实时自动采集数据、自动生成模块之间接口的校验规则、实现对长期运行的流式系统的接口数据的校验且效率高、人力成本低的流式系统的测试方法。
[0010]本发明的另一目的在于提出一种流式系统的测试装置。
[0011]为了实现上述目的,根据本发明的第一方面实施例的流式系统的测试方法包括以下步骤:采集所述流式系统中各个模块之间的第一接口数据;获取所述第一接口数据的类型;统计每种类型的各个特征值在第一预定时间段内的第一范围;采集所述流式系统中各个模块之间的第二接口数据;以及确定第二接口数据的特征值是否在所述第一范围内。
[0012]根据本发明实施例的流式系统的测试方法,至少具有以下有益效果:(1)实现实时自动的数据采集,满足大数据量的模块接口和动态数据测试的需求;(2)通过统计每种类型的第一接口数据的各个特征值在第一预定时间段内的第一范围,自动生成模块之间接口的校验规则,无需人工干预,并且当数据或测试策略发生变化时,能够及时调整校验规则以进行准确有效的测试;(3)实现对长期运行的流式系统的接口数据的校验;(4)大大提高测试效率和质量,减少人力成本,规范流式系统,并且可以发现传统测试方法很多较难发现的问题。
[0013]为了实现上述目的,根据本发明的第二方面实施例的流式系统的测试装置包括:第一采集模块,所述第一采集模块用于采集所述流式系统中各个模块之间的第一接口数据;获取模块,所述获取模块用于获取所述第一接口数据的类型;统计模块,所述统计模块用于统计每种类型的各个特征值在第一预定时间段内的第一范围;第二采集模块,所述第二采集模块用于采集所述流式系统中各个模块之间的第二接口数据;以及确定模块,所述确定模块用于确定第二接口数据的特征值是否在所述第一范围内。
[0014]根据本发明实施例的流式系统的测试装置,至少具有以下有益效果:(1)通过第一采集模块可以实现实时自动的数据采集,满足大数据量的模块接口和动态数据测试的需求;(2)通过统计模块统计每种类型的第一接口数据的各个特征值在第一预定时间段内的第一范围,自动生成模块之间接口的校验规则,无需人工干预,并且当数据或测试策略发生变化时,能够及时调整校验规则以进行准确有效的测试;(3)实现对长期运行的流式系统的接口数据的校验;(4)测试效率和测试质量高,人力成本低,规范流式系统,并且可以发现传统测试方法很多较难发现的问题。
[0015]本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。
【专利附图】

【附图说明】
[0016]本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中,
[0017]图1是根据本发明一个实施例的流式系统的测试方法的流程图;
[0018]图2是根据本发明一个实施例的流式系统的测试方法的流程图;
[0019]图3是根据本发明一个实施例的流式系统的测试方法的流程图;
[0020]图4是根据本发明一个实施例的流式系统的测试方法的流程图;
[0021]图5是根据本发明一个实施例的流式系统的测试装置的结构框图;
[0022]图6是根据本发明一个实施例的流式系统的测试装置的结构框图;
[0023]图7是根据本发明一个实施例的流式系统的测试装置的结构框图;以及
[0024]图8是根据本发明一个实施例的流式系统的测试装置的结构框图。
【具体实施方式】
[0025]下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。相反,本发明的实施例包括落入所附加权利要求书的精神和内涵范围内的所有变化、修改和等同物。
[0026]在本发明的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本发明的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。此外,在本发明的描述中,除非另有说明,“多个”的含义是两个或两个以上。[0027]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属【技术领域】的技术人员所理解。
[0028]下面参考说明书附图描述根据本发明实施例的流式系统的测试方法。
[0029]一种流式系统的测试方法,包括以下步骤:采集流式系统中各个模块之间的第一接口数据;获取第一接口数据的类型;统计每种类型的各个特征值在第一预定时间段内的第一范围;采集流式系统中各个模块之间的第二接口数据;以及确定第二接口数据的特征值是否在第一范围内。
[0030]图1为本发明一个实施例的流式系统的测试方法的流程图。
[0031]如图1所示,根据本发明实施例的流式系统的测试方法包括下述步骤。
[0032]步骤S101,采集流式系统中各个模块之间的第一接口数据。
[0033]具体地,流式系统由多个模块组成,各个模块之间的数据以流式传递,可以设置一个数据服务器用于主动采集流式系统中各个模块之间的第一接口数据。
[0034]步骤S102,获取第一接口数据的类型。
[0035]具体地,设置的数据服务器在采集到各个模块之间的第一接口数据之后,获取第一接口数据的类型。其中,不同类型的第一接口数据在流式系统中以不同的格式传输。
[0036]在本发明的一个实施例中,第一接口数据的类型包括McPack类型、ULpack类型和protobuf类型。具体地,Mcpack类型的第一接口数据为根据各个模块之间接口数据的打包工具库(public/mcpack)将各个模块之间接口数据打包成一个二进制的数据包;ULpack类型的第一接口数据由前导信息、包头、包体和结束标识符组成;protobuf类型为google提供的网络数据交换格式。
[0037]步骤S103,统计每种类型的各个特征值在第一预定时间段内的第一范围。
[0038]具体地,第一预定时间段的大小可以根据实际需求设置,设置第一预定时间段可以控制测试数据的大小。
[0039]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0040]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%_98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。
[0041]例如,对于简单枚举字段设置第一预定时间段为I个小时,在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。其中,枚举字段的取值为固定的几个取值范围。
[0042]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。其中,数字类型字段的取值为一个数值范围。
[0043]步骤S104,采集流式系统中各个模块之间的第二接口数据。
[0044]具体地,设置的服务器在第一预定时间段之后采集流式系统中各个模块之间的第
二接口数据。
[0045]步骤S105,确定第二接口数据的特征值是否在第一范围内。
[0046]具体地,在第一预定时间段之后,每采集一个第二接口数据,确定该数据的特征值是否在第一范围内。
[0047]根据本发明实施例的流式系统的测试方法,至少具有以下有益效果:(1)实现实时自动的数据采集,满足大数据量的模块接口和动态数据测试的需求;(2)通过统计每种类型的第一接口数据的各个特征值在第一预定时间段内的第一范围,自动生成模块之间接口的校验规则,无需人工干预,并且当数据或测试策略发生变化时,能够及时调整校验规则以进行准确有效的测试;(3)实现对长期运行的流式系统的接口数据的校验;(4)大大提高测试效率和质量,减少人力成本,规范流式系统,并且可以发现传统测试方法很多较难发现的问题。
[0048]图2为本发明一个实施例的流式系统的测试方法的流程图。
[0049]如图2所示,根据本发明实施例的流式系统的测试方法包括下述步骤。
[0050]步骤S201,采集流式系统中各个模块之间的第一接口数据。
[0051]具体地,流式系统由多个模块组成,各个模块之间的数据以流式传递,可以设置一个数据服务器用于主动采集流式系统中各个模块之间的第一接口数据。
[0052]步骤S202,获取第一接口数据的类型。
[0053]具体地,设置的数据服务器在采集到各个模块之间的第一接口数据之后,获取第一接口数据的类型。其中,不同类型的第一接口数据在流式系统中以不同的格式传输。
[0054]在本发明的一个实施例中,第一接口数据的类型包括McPack类型、ULpack类型和protobuf类型。具体地,Mcpack类型的第一接口数据为根据各个模块之间接口数据的打包工具库(public/mcpack)将各个模块之间接口数据打包成一个二进制的数据包;ULpack类型的第一接口数据由前导信息、包头、包体和结束标识符组成;protobuf类型为google提供的网络数据交换格式。
[0055]步骤S203,统计每种类型的各个特征值在第一预定时间段内的第一范围。
[0056]具体地,第一预定时间段的大小可以根据实际需求设置,设置第一预定时间段可以控制测试数据的大小。
[0057]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0058]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%_98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。
[0059]例如,对于简单枚举字段设置第一预定时间段为I个小时,在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。其中,枚举字段的取值为固定的几个取值范围。[0060]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。其中,数字类型字段的取值为一个数值范围。
[0061]步骤S204,采集流式系统中各个模块之间的第二接口数据。
[0062]具体地,设置的服务器在第一预定时间段之后采集流式系统中各个模块之间的第
二接口数据。
[0063]步骤S205,确定第二接口数据的特征值是否在第一范围内。
[0064]具体地,在第一预定时间段之后,每采集一个第二接口数据,确定该数据的特征值是否在第一范围内。
[0065]步骤S206,如果第二接口数据的特征值在第一范围内,则第二接口数据正常。
[0066]步骤S207,如果第二接口数据的特征值不在第一范围内,则发出第二接口数据异常的提示。
[0067]例如,对于某个简单枚举字段根据步骤S203所确定的第一范围为中英日,如果第二接口数据的特征值为中英日则确定该第二接口数据正常,即落在98%的范围内,如果第二接口数据的特征值为俄语,则表示第二接口数据异常,即没有落在98%的范围内,并发出异常提示。
[0068]又例如,对于某个数字类型字段为int类型,根据步骤S203在第一预定时间段内经过统计发现出现的都是0-31之间的数字,如果第二接口数据中出现31.1则确定第二接口数据不正常,并发出异常提示。
[0069]根据本发明实施例的流式系统的测试方法,如果第二接口数据的特征值不在第一范围内则确定第二接口数据异常并发出第二接口数据异常的提示,可以自动实现对数据的监测且在数据出现异常的情况下能及时发出异常提示。
[0070]图3为本发明一个实施例的流式系统的测试方法的流程图。
[0071]如图3所示,根据本发明实施例的流式系统的测试方法包括下述步骤。
[0072]步骤S301,采集流式系统中各个模块之间的第一接口数据。
[0073]具体地,流式系统由多个模块组成,各个模块之间的数据以流式传递,可以设置一个数据服务器用于主动采集流式系统中各个模块之间的第一接口数据。
[0074]步骤S302,获取第一接口数据的类型。
[0075]具体地,设置的数据服务器在采集到各个模块之间的第一接口数据之后,获取第一接口数据的类型。其中,不同类型的第一接口数据在流式系统中以不同的格式传输。
[0076]在本发明的一个实施例中,第一接口数据的类型包括McPack类型、ULpack类型和protobuf类型。具体地,Mcpack类型的第一接口数据为根据各个模块之间接口数据的打包工具库(public/mcpack)将各个模块之间接口数据打包成一个二进制的数据包;ULpack类型的第一接口数据由前导信息、包头、包体和结束标识符组成;protobuf类型为google提供的网络数据交换格式。
[0077]步骤S303,统计每种类型的各个特征值在第一预定时间段内的第一范围。
[0078]具体地,第一预定时间段的大小可以根据实际需求设置,设置第一预定时间段可以控制测试数据的大小。
[0079]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0080]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%_98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。
[0081]例如,对于简单枚举字段设置第一预定时间段为I个小时,在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。其中,枚举字段的取值为固定的几个取值范围。
[0082]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。其中,数字类型字段的取值为一个数值范围。
[0083]步骤S304,采集流式系统中各个模块之间的第二接口数据。
[0084]具体地,设置的服务器在第一预定时间段之后采集流式系统中各个模块之间的第
二接口数据。
[0085]步骤S305,确定第二接口数据的特征值是否在第一范围内。
[0086]具体地,在第一预定时间段之后,每采集一个第二接口数据,确定该数据的特征值是否在第一范围内。
[0087]步骤S306,如果第二接口数据的特征值在第一范围内,则第二接口数据正常。
[0088]步骤S307,如果第二接口数据的特征值不在第一范围内,则发出第二接口数据异常的提示。
[0089]例如,对于某个简单枚举字段根据步骤S303所确定的第一范围为中英日,如果第二接口数据的特征值为中英日则确定该第二接口数据正常,即落在98%的范围内,如果第二接口数据的特征值为俄语,则表示第二接口数据异常,即没有落在98%的范围内,并发出异常提示。
[0090]又例如,对于某个数字类型字段为int类型,根据步骤S303在第一预定时间段内经过统计发现出现的都是0-31之间的数字,如果第二接口数据中出现31.1则确定第二接口数据不正常,并发出异常提示。
[0091]步骤S308,统计每种类型的各个特征值在第二预定时间段内的第二范围,其中第二预定时间段大于第一预定时间段。
[0092]具体地,在第二预定时间段内统计每个类型的各个特征值的第二范围与在第一时间段内统计每个类型的各个特征值的第一范围的方法相同。将第二预定时间段设置大于第一预定时间段,可以得到更为准确的第一范围。
[0093]步骤S309,用第二范围更新第一范围。
[0094]根据本发明实施例的流式系统的测试方法,通过在大于第一预定时间段的第二预定时间段内统计每个类型的各个特征值的第二范围,并使用第二范围更新第一范围,实现自动更新接口的校验规则。
[0095]图4为本发明一个实施例的流式系统的测试方法的流程图。
[0096]如图4所示,根据本发明实施例的流式系统的测试方法包括下述步骤。
[0097]步骤S401,采集流式系统中各个模块之间的第一接口数据。
[0098]具体地,流式系统由多个模块组成,各个模块之间的数据以流式传递,可以设置一个数据服务器用于主动采集流式系统中各个模块之间的第一接口数据。
[0099]步骤S402,将第三预定时间段内采集的第一接口数据保存在第一缓存上。
[0100]步骤S403,在第三预定时间段之后将第一缓存上的第一接口数据保存到第二缓存上。
[0101 ] 步骤S404,删除第一缓存上的第一接口数据。
[0102]具体地,通过步骤S401至步骤S404实现数据的自动采集。更具体地,设置两个线程,分别为接收线程和读取线程。在数据采集开始时启动多个接收线程,每个接收线程对应一个模块并监听其端口,并按照定义的接口数据包的格式从监听端口读入数据,将合法的包存保存在硬盘上,其中保存的数据分两种:正在积累的保存在第一缓存上的第一接口数据和最新积累的保存在第二缓存上的第二接口数据,在第三预定时间段之后,将正在积累的第一缓存上的第一接口数据保存到第二缓存上。读取线程只监听一个端口,解析传来的请求,再将积累的保存在第二缓存上的第一接口数据返回以用于后续步骤的统计、测试等。
[0103]这种数据自动采集方法存在两个问题:(I)如果第一缓存上已经写完了第一接口数据且在第三预定时间段之后,此时第一缓存需要切换到第二缓存,但是此时第二缓存可能正在被读取线程读取数据,发生读写互斥,可以先暂停读取线程,然后在连接不断开的情况下将第一缓存切换到第二缓存;(2)如果所采集的上游模块关闭掉了,接收线程无法接收到数据时积累的第一接口数据变为空,此时可考虑时间和包数量、积累的第一接口数据大小等多个因素,判断包的类型,如果某个类型的包还没接收到,则将此包保存。
[0104]步骤S405,获取第一接口数据的类型。
[0105]具体地,设置的数据服务器在采集到各个模块之间的第一接口数据之后,获取第一接口数据的类型。其中,不同类型的第一接口数据在流式系统中以不同的格式传输。
[0106]在本发明的一个实施例中,第一接口数据的类型包括McPack类型、ULpack类型和protobuf类型。具体地,Mcpack类型的第一接口数据为根据各个模块之间接口数据的打包工具库(public/mcpack)将各个模块之间接口数据打包成一个二进制的数据包;ULpack类型的第一接口数据由前导信息、包头、包体和结束标识符组成;protobuf类型为google提供的网络数据交换格式。
[0107]步骤S406,统计每种类型的各个特征值在第一预定时间段内的第一范围。
[0108]具体地,第一预定时间段的大小可以根据实际需求设置,设置第一预定时间段可以控制测试数据的大小。
[0109]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0110]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%-98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。[0111]例如,对于简单枚举字段设置第一预定时间段为I个小时,在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。其中,枚举字段的取值为固定的几个取值范围。
[0112]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。其中,数字类型字段的取值为一个数值范围。
[0113]步骤S407,采集流式系统中各个模块之间的第二接口数据。
[0114]具体地,设置的服务器在第一预定时间段之后采集流式系统中各个模块之间的第
二接口数据。
[0115]步骤S408,确定第二接口数据的特征值是否在第一范围内。[0116]具体地,在第一预定时间段之后,每采集一个第二接口数据,确定该数据的特征值是否在第一范围内。
[0117]步骤S409,如果第二接口数据的特征值在第一范围内,则第二接口数据正常。
[0118]步骤S410,如果第二接口数据的特征值不在第一范围内,则发出第二接口数据异常的提示。
[0119]例如,对于某个简单枚举字段根据步骤S303所确定的第一范围为中英日,如果第二接口数据的特征值为中英日则确定该第二接口数据正常,即落在98%的范围内,如果第二接口数据的特征值为俄语,则表示第二接口数据异常,即没有落在98%的范围内,并发出异常提示。
[0120]又例如,对于某个数字类型字段为int类型,根据步骤S303在第一预定时间段内经过统计发现出现的都是0-31之间的数字,如果第二接口数据中出现31.1则确定第二接口数据不正常,并发出异常提示。
[0121]步骤S411,统计每种类型的各个特征值在第二预定时间段内的第二范围,其中第二预定时间段大于第一预定时间段。
[0122]具体地,在第二预定时间段内统计每个类型的各个特征值的第二范围与在第一时间段内统计每个类型的各个特征值的第一范围的方法相同。将第二预定时间段设置大于第一预定时间段,可以得到更为准确的第一范围。
[0123]步骤S412,用第二范围更新第一范围。
[0124]根据本发明实施例的流式系统的测试方法,采取双缓存机制实现流式系统中第一接口数据的采集,简单易行,同时采用线程机制实现数据的接收和读取,提高了效率。
[0125]下面参考说明书附图描述根据本发明实施例的流式系统的测试装置。
[0126]一种流式系统的测试装置,包括:第一采集模块,第一采集模块用于采集流式系统中各个模块之间的第一接口数据;获取模块,获取模块用于获取第一接口数据的类型?’统计模块,统计模块用于统计每种类型的各个特征值在第一预定时间段内的第一范围;第二采集模块,第二采集模块用于采集流式系统中各个模块之间的第二接口数据;以及确定模块,确定模块用于确定第二接口数据的特征值是否在第一范围内。[0127]图5为本发明一个实施例的流式系统的测试装置的结构框图。
[0128]如图5所示,根据本发明实施例的流式系统的测试装置,包括第一采集模块100、获取模块200、统计模块300、第二采集模块400和确定模块500。
[0129]具体地,第一采集模块100用于采集流式系统中各个模块之间的第一接口数据。其中,流式系统由多个模块组成,各个模块之间的数据以流式传递,第一采集模块100主动采集流式系统中各个模块之间的第一接口数据。
[0130]获取模块200用于获取第一接口数据的类型。其中,第一采集模块100在采集到各个模块之间的第一接口数据之后,获取模块200获取第一接口数据的类型,不同类型的第一接口数据在流式系统中以不同的格式传输。
[0131 ] 在本发明的一个实施例中,第一接口数据的类型包括McPack类型、ULpack类型和protobuf类型。具体地,Mcpack类型的第一接口数据为根据各个模块之间接口数据的打包工具库(public/mcpack)将各个模块之间接口数据打包成一个二进制的数据包;ULpack类型的第一接口数据由前导信息、包头、包体和结束标识符组成;protobuf类型为google提供的网络数据交换格式。
[0132]统计模块300用于统计每种类型的各个特征值在第一预定时间段内的第一范围。其中,第一预定时间段的大小可以根据实际需求设置,设置第一预定时间段可以控制测试数据的大小。
[0133]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0134]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%_98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。
[0135]例如,对于简单枚举字段设置第一预定时间段为I个小时,统计模块300统计在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计模块300可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。其中,枚举字段的取值为固定的几个取值范围。
[0136]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,统计模块300在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。其中,数字类型字段的取值为一个数值范围。
[0137]第二采集模块400用于采集流式系统中各个模块之间的第二接口数据。其中,第二采集模块400在第一预定时间段之后采集流式系统中各个模块之间的第二接口数据。
[0138]确定模块500用于确定第二接口数据的特征值是否在第一范围内。其中,确定模块500在第一预定时间段之后,每采集一个第二接口数据,确定该数据的特征值是否在第一范围内。
[0139]根据本发明实施例的流式系统的测试装置,至少具有以下有益效果:(1)通过第一采集模块可以实现实时自动的数据采集,满足大数据量的模块接口和动态数据测试的需求;(2)通过统计模块统计每种类型的第一接口数据的各个特征值在第一预定时间段内的第一范围,自动生成模块之间接口的校验规则,无需人工干预,并且当数据或测试策略发生变化时,能够及时调整校验规则以进行准确有效的测试;(3)实现对长期运行的流式系统的接口数据的校验;(4)测试效率和测试质量高,人力成本低,规范流式系统,并且可以发现传统测试方法很多较难发现的问题。
[0140]图6为本发明一个实施例的流式系统的测试装置的结构框图。
[0141]如图6所示,根据本发明实施例的流式系统的测试装置,包括第一采集模块100、获取模块200、统计模块300、第二采集模块400、确定模块500和提示模块600。
[0142]具体地,第一采集模块100用于采集流式系统中各个模块之间的第一接口数据。获取模块200用于获取第一接口数据的类型。统计模块300用于统计每种类型的各个特征值在第一预定时间段内的第一范围。第二采集模块400用于采集流式系统中各个模块之间的第二接口数据。确定模块500用于确定第二接口数据的特征值是否在第一范围内。提示模块600用于在第二接口数据的特征值不在第一范围内时,发出第二接口数据异常的提
/Jn ο
[0143]在本发明的一个实施例中,各个特征值包括:简单枚举字段的取值;以及数字类型字段的取值。
[0144]在本发明的一个实施例中,对于简单枚举字段的取值,第一范围是90%_98%的简单枚举字段的取值所在的范围;以及对于数字类型字段的取值,第一范围是90%-98%的数字类型字段的取值所在的范围。
[0145]例如,对于简单枚举字段设置第一预定时间段为I个小时,统计模块300统计在I小时内出现100个枚举字段,100个枚举字段的取值情况为30个中文、30个英文、38个日文和2个俄文,然后统计模块300可以得到98%的枚举字段的取值为中英日,则该枚举类型的第一范围为中英日。确定模块500根据第二采集模块400采集到的数据和第一范围比较,如果第二接口数据的特征值为中英日则确定模块500确定该第二接口数据正常,即落在98%的范围内,如果第二接口数据的特征值为俄语,则确定模块500确定第二接口数据异常,SP没有落在98%的范围内,并通过提示模块600发出异常提示。
[0146]又例如,对于数字类型字段,第一接口数据包括不同数字类型的字段,如uint32、double、uint64等,并且每个数字类型对应不同的取值范围,如字符串(char)类型的取值范围为字符串长度在0-256之间。以字符串为例,统计模块300在设置的第一预定时间段I个小时内,统计发现90%-98%的字符串的长度在125-256之间,则第一范围为125-256。确定模块500根据第二采集模块400采集到的数据和第一范围比较,如果第二接口数据的特征值为25则确定模块500确定该第二接口数据正常,即落在98%的范围内,如果第二接口数据的特征值为31.1,则确定模块500确定第二接口数据异常,即没有落在98%的范围内,并通过提示模块600发出异常提示
[0147]根据本发明实施例的流式系统的测试装置,如果第二接口数据的特征值不在第一范围内通过提示模块发出第二接口数据异常的提示,可以自动实现对数据的监测且在数据出现异常的情况下发出提示。
[0148]图7为本发明一个实施例的流式系统的测试装置的结构框图。
[0149]如图7所示,根据本发明实施例的流式系统的测试装置,包括第一采集模块100、获取模块200、统计模块300、第二采集模块400、确定模块500、提示模块600和更新模块700。
[0150]具体地,第一采集模块100用于采集流式系统中各个模块之间的第一接口数据。获取模块200用于获取第一接口数据的类型。统计模块300用于统计每种类型的各个特征值在第一预定时间段内的第一范围。第二采集模块400用于采集流式系统中各个模块之间的第二接口数据。确定模块500用于确定第二接口数据的特征值是否在第一范围内。提示模块600用于在第二接口数据的特征值不在第一范围内时,发出第二接口数据异常的提示。更新模块700用于在统计模块300统计每种类型的各个特征值在第二预定时间段内的第二范围之后,用第二范围更新第一范围,其中第二预定时间段大于第一预定时间段。
[0151]更具体地,统计模块300在第二预定时间段内统计每个类型的各个特征值的第二范围与在第一时间段内统计每个类型的各个特征值的第一范围的方法相同。将第二预定时间段设置大于第一预定时间段,可以得到更为准确的第二范围。
[0152]根据本发明实施例的流式系统的测试装置,通过更新模块使用第二范围更新第一范围,实现自动更新接口的校验规则。
[0153]图8为本发明一个实施例的流式系统的测试装置的结构框图。
[0154]如图8所示,根据本发明实施例的流式系统的测试装置,包括第一采集模块100、获取模块200、统计模块300、第二采集模块400、确定模块500、提示模块600、更新模块700、保存模块800和删除模块900。
[0155]具体地,第一采集模块100用于采集流式系统中各个模块之间的第一接口数据。获取模块200用于获取第一接口数据的类型。统计模块300用于统计每种类型的各个特征值在第一预定时间段内的第一范围。第二采集模块400用于采集流式系统中各个模块之间的第二接口数据。确定模块50 0用于确定第二接口数据的特征值是否在第一范围内。提示模块600用于在第二接口数据的特征值不在第一范围内时,发出第二接口数据异常的提示。更新模块700用于在统计模块300统计每种类型的各个特征值在第二预定时间段内的第二范围之后,用第二范围更新第一范围,其中第二预定时间段大于第一预定时间段。保存模块800用于将第三预定时间段内采集的第一接口数据保存在第一缓存上,和在第三预定时间段之后将第一缓存上的第一接口数据保存到第二缓存上。删除模块900用于删除第一缓存上的第一接口数据。
[0156]更具体地,通过第一采集模块100、保存模块800和删除模块900可以实现数据的自动采集。保存模块800设置两个线程,分别为接收线程和读取线程。在第一采集模块100进行数据采集开始时启动多个接收线程,每个接收线程对应一个模块并监听其端口,并按照定义的接口数据包的格式从监听端口读入数据,将合法的包存保存在硬盘上,其中保存的数据分两种:正在积累的保存在第一缓存上的第一接口数据和最新积累的保存在第二缓存上的第二接口数据,在第三预定时间段之后,保存模块800将正在积累的第一缓存上的第一接口数据保存到第二缓存上。读取线程只监听一个端口,解析传来的请求,再将积累的保存在第二缓存上的第一接口数据返回以用于后续的统计、测试等。
[0157]这种数据自动采集方法存在两个问题:(I)如果第一缓存上已经写完了第一接口数据且在第三预定时间段之后,此时第一缓存需要切换到第二缓存,但是此时第二缓存可能正在被读取线程读取数据,发生读写互斥问题时,可以先暂停读取线程,然后在连接不断开的情况下将第一缓存切换到第二缓存;(2)如果所采集的上游模块关闭掉了,接收线程无法接收到数据时积累的第一接口数据变为空,此时可考虑时间和包数量、积累的第一接口数据大小等多个因素,判断包的类型,如果某个类型的包还没接收到,则将此包保存。
[0158]根据本发明实施例的流式系统的测试装置,采取双缓存机制实现流式系统中第一接口数据的采集,简单易行,同时采用线程机制实现数据的接收和读取,提高了效率。
[0159]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
[0160]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
[0161]尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同限定。
【权利要求】
1.一种流式系统的测试方法,其特征在于,包括以下步骤: 采集所述流式系统中各个模块之间的第一接口数据; 获取所述第一接口数据的类型; 统计每种类型的各个特征值在第一预定时间段内的第一范围; 采集所述流式系统中各个模块之间的第二接口数据;以及 确定第二接口数据的特征值是否在所述第一范围内。
2.根据权利要求1所述的方法,其特征在于,进一步包括步骤: 如果第二接口数据的特征值不在所述第一范围内,则发出所述第二接口数据异常的提/Jn ο
3.根据权利要求1所述的方法,其特征在于,进一步包括步骤: 统计每种类型的各个特征值在第二预定时间段内的第二范围,其中所述第二预定时间段大于所述第一预定时间段;以及 用所述第二范围更新所述第一范围。
4.根据权利要求1至3中任一项所述的方法,其特征在于,进一步包括步骤: 将第三预定时间段内采集的第一接口数据保存在第一缓存上;以及 在第三预定时间段之后将所`述第一缓存上的第一接口数据保存到第二缓存上;以及 删除所述第一缓存上的第一接口数据。
5.根据权利要求1至3中任一项所述的方法,其特征在于,所述类型包括=McPack类型、ULpack类型和protobuf类型。
6.根据权利要求1至3中任一项所述的方法,其特征在于,所述各个特征值包括: 简单枚举字段的取值;以及 数字类型字段的取值。
7.根据权利要求6所述的方法,其特征在于, 对于简单枚举字段的取值,所述第一范围是90%-98%的简单枚举字段的取值所在的范围;以及 对于数字类型字段的取值,所述第一范围是90%-98%的数字类型字段的取值所在的范围。
8.一种流式系统的测试装置,其特征在于,包括: 第一采集模块,所述第一采集模块用于采集所述流式系统中各个模块之间的第一接口数据; 获取模块,所述获取模块用于获取所述第一接口数据的类型; 统计模块,所述统计模块用于统计每种类型的各个特征值在第一预定时间段内的第一范围; 第二采集模块,所述第二采集模块用于采集所述流式系统中各个模块之间的第二接口数据;以及 确定模块,所述确定模块用于确定第二接口数据的特征值是否在所述第一范围内。
9.根据权利要求8所述的装置,其特征在于,进一步包括: 提示模块,所述提示模块用于在第二接口数据的特征值不在所述第一范围内时,发出所述第二接口数据异常的提示。
10.根据权利要求8所述的装置,其特征在于,进一步包括: 更新模块,所述更新模块用于在所述统计模块统计每种类型的各个特征值在第二预定时间段内的第二范围之后,用所述第二范围更新所述第一范围,其中所述第二预定时间段大于所述第一预定时间段。
11.根据权利要求8至10中任一项所述的装置,其特征在于,进一步包括: 保存模块,所述保存模块用于将第三预定时间段内采集的第一接口数据保存在第一缓存上,和在第三预定时间段之后将所述第一缓存上的第一接口数据保存到第二缓存上;以及 删除模块,所述删除模块用于删除所述第一缓存上的第一接口数据。
12.根据权利要求8至10中任一项所述的装置,其特征在于,所述类型包括=McPack类型、ULpack类型和protobuf类型。
13.根据权利要求8至10中任一项所述的装置,其特征在于,所述各个特征值包括: 简单枚举字段的取值;以及 数字类型字段的取值。
14.根据权利要求13所述的装置,其特征在于, 对于简单枚举字段的取值,所述第一范围是90%-98%的简单枚举字段的取值所在的范围;以及 对于数字类型字段的取`值,所述第一范围是90%-98%的数字类型字段的取值所在的范围。
【文档编号】G06F11/36GK103514091SQ201210223514
【公开日】2014年1月15日 申请日期:2012年6月28日 优先权日:2012年6月28日
【发明者】张静, 刘佳 申请人:百度在线网络技术(北京)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1