一种生成Protobuf格式测试数据的方法及装置制造方法及图纸

技术编号:13958336 阅读:50 留言:0更新日期:2016-11-02 18:13
本发明专利技术公开了一种生成protobuf格式测试数据的方法及装置,可以针对每个根据预设规则生成的Protobuf Message执行下述步骤:A、遍历Protobuf Message中包含的每一属性,判断当前属性是否为基本类型;如果是,执行步骤B;否则,执行步骤C;B、根据Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足属性的数据;C、根据Protobuf Message中该属性对应的客户化规则标签中封装的数据生成规则,生成满足属性的Protobuf Message,并执行步骤A。应用本发明专利技术,可以提高生成Protobuf格式测试数据的效率。

【技术实现步骤摘要】

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

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1