【技术实现步骤摘要】
本专利技术涉及测试数据生成领域,特别是涉及一种生成Protobuf格式数据的方法及装置。
技术介绍
在企业中,为了保证应用软件的质量,测试人员需要根据业务场景设计和生成大量的测试数据进行应用软件的功能测试和压力测试。因此,能够提供一种质量好、生成效率高的数据及其生成方法显得非常重要。Protocol Buffers(简称Protobuf)是一种轻便高效的结构化数据存储格式。使用Protobuf格式数据Protobuf Message,可以有效地减少传输带宽需求,节省存储空间,因而在通讯、数据存储、软件测试等领域得到了广泛的应用。目前,生成测试数据的方法存在两种情况:第一种,通过手工或者一些定制的代码来生成测试数据。但是采用手工或者定制方式生成Protobuf这种复杂、多变的数据格式时,开发和维护成本都很高。一旦有变更,需要重新制作数据,或者调整代码,生成过程耗时长。第二种,针对特定设备来模拟用户操作,或者针对特定应用来设计,采用脚本的方式自动生成测试数据。但该方法不适用于Protobuf这种结构复杂的数据格式。现有技术,对于结构简单的测试数据的生成是可行的。对于Protobuf这种结构复杂的数据格式,生成效率低且不易维护。
技术实现思路
本专利技术实施例的目的在于提供一种生成protobuf格式测试数据的方法及装置,以提高Protobuf格式测试数据生成效率。为达到上述目的,本专利技术实施例公开了一种生成protobuf格式测试数据的方法,包括如下步骤:根据预设规则,生成至少一个Protobuf Message,针对每个Protobuf Message执行下 ...
【技术保护点】
一种生成Protobuf格式测试数据的方法,其特征在于,所述方法包括步骤:根据预设规则,生成至少一个Protobuf Message,针对每个Protobuf Message执行下述步骤:A、针对当前Protobuf Message,遍历所述Protobuf Message中包含的每一属性,判断当前属性是否为基本类型;如果是,执行步骤B;否则,执行步骤C;B、根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据;C、根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的Protobuf Message,并执行步骤A。
【技术特征摘要】
1.一种生成Protobuf格式测试数据的方法,其特征在于,所述方法包括步骤:根据预设规则,生成至少一个Protobuf Message,针对每个Protobuf Message执行下述步骤:A、针对当前Protobuf Message,遍历所述Protobuf Message中包含的每一属性,判断当前属性是否为基本类型;如果是,执行步骤B;否则,执行步骤C;B、根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据;C、根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的Protobuf Message,并执行步骤A。2.根据权利要求1所述的生成Protobuf格式测试数据的方法,其特征在于,所述根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据包括:判断当前属性的限定修饰符类型;如果当前属性的限定修饰符类型为必须类型,根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据;如果当前属性的限定修饰符类型为可选类型,使用一个随机函数判断是否生成满足该属性的数据,如果是,根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据;如果当前属性的限定修饰符类型为重复类型,读取当前属性对应的客户化规则标签中封装的数据生成规则,获得该数据生成规则中包含的重复次数,并根据读取的所述数据生成规则及获得的所述重复次数,重复生成满足该属性的数据。3.根据权利要求1所述的生成Protobuf格式测试数据的方法,其特征在于,所述根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的Protobuf Message包括:判断当前属性的限定修饰符类型;如果当前属性的限定修饰符类型为必须类型,根据所述Protobuf Message中该属性对应的的客户化规则标签中封装的数据生成规则,生成满足所述属性的Protobuf Message;如果当前属性的限定修饰符类型为可选类型,使用一个随机函数判断是否需要生成满足该属性的Protobuf Message,如果是,根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的Protobuf Message;如果当前属性的限定修饰符类型为重复类型,读取当前属性对应的客户化规则标签中封装的数据生成规则,获得该数据规则中包含的重复次数,并根据读取的所述数据生成规则及获得的所述重复次数,重复生成满足所述属性的Protobuf Message。4.根据权利要求1或2所述的生成Protobuf格式测试数据的方法,其特征在于,所述根据所述Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足所述属性的数据包括:当所述属性的数据生成规则为ascii时,则生成的数据为长度在该ascii中定义的最小长度和最大长度之间的随机字符串;当所述属性的数据生成规则为rand时,则生成的数据为在该rand中定义的最小值和最大值之间的随机整数;当所述属性的数据生成规则为randf时,则生成的数据为在该randf中定义的最小值和最大值之间的随机浮点数;当所述属性的数据生成规则为charfile时,则生成的数据为长度在该charfile中定义的最小长度和最大长度之间的字符串;当所述属性的数据生成规则为strfile时,则生成的数据为在该strfile中定义的最小个数和最大个数之间的字符串或列表;当所述属性的数据生成规则为list时,则生成的数据为元素的数量在该list中定义的最小个数和最大个数之间的列表,所述列表中每一元素对应的值由该list中定义的函数来生成;当所述属性的数据生成规则为bound时,则生成的数据为数量在该bound中定义的最小个数和最大个数之间的列表。5.根据权利要求1-4中任一项所述的生成Protobuf格式测试数据的方法,其特征在于,所述客户化规则标签为根据Options选项定义的标签。6.一种生成Protobuf格式测试数据的装置,其特征在于,所述装置包括:Message生成模块、判断模块、第一数据生成模块和第二数据生成模块,所述Message生成模块,用于根据预设规则,生成至少一...
【专利技术属性】
技术研发人员:李雄锋,郑程,
申请(专利权)人:北京奇艺世纪科技有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。