生成模拟报文的方法及装置与流程

文档序号:13934244阅读:306来源:国知局
本申请涉及计算机
技术领域
:,尤其涉及一种生成模拟报文的方法及装置。
背景技术
::目前,在系统调试环节,通常通过生成模拟报文来测试系统接口。在生成模拟报文时,开发人员需要阅读并理解系统接口的接口文档,学习系统接口传输的报文的结构,然后手动输入信息以生成模拟报文,导致模拟报文的生成效率较低,影响测试进度。另外,由于是手动生成模拟报文,因此在拼写字段、确定取值类型等过程中容易出现错误,从而导致生成的模拟报文不准确,影响对系统接口的测试。技术实现要素:本申请提供一种生成模拟报文的方法及装置,用于提高模拟报文的生成效率和准确率。为达到上述目的,本申请采用如下技术方案:第一方面,本申请提供一种生成模拟报文的方法,包括:解析待测试系统接口的接口文档,生成接口对象;其中,所述接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,所述接口对象包括字段实体,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型和正则规则;以接口对象中所有字段实体对应的模拟数据,构建模拟报文;其中,所述模拟数据为根据字段实体的属性生成的随机数据。第二方面,本申请提供一种生成模拟报文的装置,包括:解析模块,用于解析待测试系统接口的接口文档,生成接口对象;其中,所述接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,所述接口对象包括字段实体,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型和正则规则;构建模块,用于以接口对象中所有字段实体对应的模拟数据,构建模拟报文;其中,所述模拟数据为根据字段实体的属性生成的随机数据。第三方面,本申请提供一种设备,所述设备包括:处理器、收发器和存储器。其中,存储器用于存储计算机执行指令,当该设备运行时,处理器执行该存储器存储的该计算机执行指令,以使该设备执行第一方面及其各种可选的实现方式中任意之一所述的生成模拟报文的方法。第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有一个或多个程序,一个或多个程序包括计算机执行指令,当该设备的处理器执行该计算机执行指令时,该设备执行上述第一方面及其各种可选的实现方式中任意之一所述的生成模拟报文的方法。本申请提供一种生成模拟报文的方法及装置,通过解析待测试系统接口的接口文档,生成接口对象。其中,该接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,接口对象由字段实体组成,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型、正则规则。可以理解的是,上述接口对象对于计算机等设备而言是可读的,因此,计算机等设备可以根据上述接口对象中字段实体的属性生成模拟数据,进而以接口对象中所有字段实体对应的模拟数据,构建模拟报文,从而实现模拟报文的自动生成,提高模拟报文的生成效率和准确率。附图说明图1为本申请实施例提供的一种生成模拟报文的方法的流程图;图2为本申请实施例提供的一种生成模拟报文的装置的结构示意图;图3为本申请实施例提供的一种设备的结构示意图。具体实施方式下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。为了便于说明,下面先对接口文档进行简单的介绍。接口文档,顾名思义,就是描述系统接口的文档。接口文档用于记录系统接口收发的数据以及数据的格式。接口文档一般为表格的形式。其中,接口文档的一行记录可称之为一个字段。字段一般具有序号和特征信息,所述特征信息包括:字段名称、类型以及正则规则。字段的类型一般包括:字符串(string)、数值(number)、列表(list)、对象(object)以及日期(date)。示例性的,接口文档可以如表一所示。该接口文档对应的接口为productinfoquery(查询理财产品基本信息)。表一表一所示的接口文档包括4个字段分别是:productno、productnam、interest以及historyprice。另外,historyprice的类型为list,historyprice还包括至少一个条目,而每个条目又包含3个字段,这3个字段分别是:pricedate、price以及flag。在上述接口文档中,最小长度表示该字段的数据的最小长度,相似的,最大长度表示该字段的数据的最大长度。正则规则[^a-z]表示字段的数据可以从a至z的26个字母中选取。正则规则a|b表示字段的数据为a或者为b。为了提高模拟报文的生成效率,本申请实施例提供一种生成模拟报文的方法,所述方法的执行主体可以为计算机等设备。如图1所示,所述方法包括:s101、解析待测试系统接口的接口文档,生成接口对象。其中,所述接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构。示例性的,所述计算机可读语言可以为java,c语言等。所述数据结构为计算机存储、组织数据的方式。可以理解的是,由于接口对象是以计算机可读语言表示的,因此上述接口对象对于计算机来说是可读的。接口对象由字段实体组成,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型、正则规则。一种可选实现方式中,对所述接口文档的第n行字段执行以下步骤s1011至s1014,其中所述n的取值大于等于1小于等于m,所述m为所述接口文档中包含的字段的总行数。s1011、读取所述第n行字段的序号以及特征信息。其中,所述特征信息包括:字段名称、类型以及正则规则。举例来说,表一所示的接口文档中,其首行字段的序号为1,字段名称为productno,类型为string,含义为理财产品代码,最小长度为5,最大长度为15,正则规则为[^a-z],是否一定有值为y。s1012、以所述第n行字段的特征信息作为字段实体的属性,构造字段实体。其中,字段实体可以具有多个属性,每个属性由名称和取值构成。示例性的,由表一所示的接口文档中productno字段的特征信息构造的字段实体如下所示:s1013、根据所述第n行字段的序号,确定所述字段实体所属的层级。其中,接口文档中表格的层次与接口对象的层级对应。示例性的,接口文档的主表与接口对象的第一层级对应。接口文档中主表下辖的子表与接口对象的第二层级对应。举例来说,在表一所示的接口文档中,字段productno、productnam、interest以及historyprice组成接口文档的主表,因此这四个字段对应的字段实体属于接口对象中的第一层级。而字段pricedate、price以及flag组成接口文档的子表,因此这三个字段对应的字段实体属于接口对象中的第二层级。一种可选的实现方式中,可以通过字段的序号来确定该字段在接口对象中属于哪个表格层次,进而确定该字段对应的字段实体所属的层级。结合表一举例说明,由于字段pricedate的序号为4.1,该序号说明字段pricedate属于主表中第4个字段下辖的子表的第一个字段,因此,字段pricedate对应的字段实体在接口对象中属于第二层级。s1014、当所述第n行字段的类型为目标类型时,向所述字段实体添加子对象属性。其中,目标类型包括:list或者object,所述子对象属性包括至少一个与所述字段实体相关的下一层级的字段实体。结合表一举例说明,字段historyprice的类型为list,因此字段实体historyprice具有子对象属性。该子对象属性包括:字段实体pricedate、字段实体price以及字段实体flag。这样,能够逐个将接口文档的字段生成接口对象的字段实体,最终将整个接口文档转换为计算机可读的接口对象。示例性的,以表一所示的接口文档生成的接口对象如下所示:s102、以接口对象中所有字段实体对应的模拟数据,构建模拟报文。其中,所述模拟数据为根据字段实体的属性生成的随机数据。可选的,模拟报文的格式为js对象标记(javascriptobjectnotation,json)。一种可选实现方式中,对所述接口对象的第i个字段实体执行以下步骤s1021至s1022。其中,所述i的取值大于等于1小于等于k,所述k为所述接口对象中包含的字段实体的总个数。可选的,先对接口对象的第一层级的字段实体执行以下步骤s1021至s1022,从而由上至下的对接口对象中的每个字段实体生成对应的模拟数据。s1021、当字段实体的类型不属于目标类型时,根据所述字段实体的属性,生成所述字段实体的模拟数据。可选的,根据字段实体的长度限制(最大长度、最小长度)、类型以及正则规则,生成所述字段实体的模拟数据。结合表一所示接口文档生成的接口对象进行举例说明,字段实体productno的类型为string,最小长度5,最大长度15,正则规则[^a-z],即字段实体productno对应的模拟数据为由5至15个字母组成的字符串,且组成该字符串的字母可以为a-z的26个字母,因此,可以得到字段实体productno对应的模拟数据为abbbcd,或者其他符合上述规则的字符串。s1022、当字段实体的类型为目标类型时,遍历所述字段实体的子对象属性中包含的字段实体。进一步的,当字段实体的类型为list时,为所述字段实体创建至少一个列表子对象,所述列表子对象用于存储所述字段实体的子对象属性中包含的字段实体。然后,遍历所述至少一个列表子对象中的字段实体。这样可以为类型为list的字段实体生成多组数据。结合表一所示接口文档生成的接口对象进行举例说明,字段实体historyprice的类型为list,因此需要遍历字段实体historyprice的子对象属性中包含的字段实体,即需要遍历字段实体pricedate、字段实体price以及字段实体flag。示例性的,以表一所示的接口文档生成的模拟报文如下所示:另外,在所述待测试系统接口的接口文档更新后,重新生成模拟报文。本申请实施例提供一种生成模拟报文的方法,通过解析待测试系统接口的接口文档,生成接口对象。其中,该接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,接口对象由字段实体组成,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型、正则规则。可以理解的是,上述接口对象对于计算机等设备而言是可读的,因此,计算机等设备可以根据上述接口对象中字段实体的属性生成模拟数据,进而以接口对象中所有字段实体对应的模拟数据,构建模拟报文,从而实现模拟报文的自动生成,提高模拟报文的生成效率和准确率。为了更清楚的说明上述步骤s101,下面给出步骤s101对应的伪代码。//通过接口文档生成类型为map的接口对象,本示例最多嵌套三层mapgenerateinterfaceobject(stringinterfacename){mapresult=newmap();//创建空接口对象mapparammap1=newmap();//创建第一层字段结构mapparammap2;//用于临时存储第二层字段mapparammap3;//用于临时存储第三层字段,本示例最多允许嵌套三层result.put(interfacename,parammap1);//将第一层结构放入接口对象//将表格文件逐行读入listlistlist=listfromtable(fileurl+"/"+interfacename+".xls");//逐行处理list,并构造接口对象for(objectentityinlist){stringno=entity.get("序号");//获得字段序号,例如,一层:1二层:2.1三层3.1.1string[]catalog=no.split("\\.");//拆分序号,判断字段在接口文档中的表格层次switch(catalog.length){case1://如果是第一层字段parammap2=newmap();//创建用于临时存储第二层字段的map//将第parammap1作为父对象,parammap2作为子对象解析process(parammap1,parammap2,entity);break;case2://如果是第二层字段parammap3=newmap();//创建用于临时存储第三层字段的map//将第parammap2作为父对象,parammap3作为子对象解析process(parammap2,parammap3,entity);break;case3://如果是第三层字段//将第parammap3作为父对象解析process(parammap3,null,entity);break;}}eturnresult;}//具体处理每一项字段,构造接口对象voidprocess(mapparentmap,mapchildmap,objectentity){//获取字段的特征信息stringname=entity.get("name");stringtype=entity.get("type");stringdescription=entity.get("description");stringpattern=entity.get("pattern");……//构造字段实体,并将字段的特征信息作为字段实体的属性填入mapitem=newmap();item.put("name",name);item.put("type",type);item.put("description",description);item.put("pattern",pattern);……//如果字段的类型为object或list,则表示该字段有子对象,为该字段对应的字段实体加入子对象属性if("list".equals(type)||"object".equals(type)){item.put("params",childmap);}//将字段实体加入父对象parentmap.put(name,item);}为了更清楚的说明上述步骤s102,下面给出步骤s102对应的伪代码。值得说明的是,上述伪代码中的报文对象rm是为描述模拟报文而建立起的map、list等java对象。报文对象rm可以通过预设程序转换为模拟报文。如图2所示,本申请提供一种生成模拟报文的装置,用于执行前述生成模拟报文的方法。所述装置包括:解析模块11,用于解析待测试系统接口的接口文档,生成接口对象;其中,所述接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,所述接口对象包括字段实体,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型、正则规则。构建模块12,用于以接口对象中所有字段实体对应的模拟数据,构建模拟报文;其中,所述模拟数据为根据字段实体的属性生成的随机数据。一种可选的实现方式中,所述解析模块11,具体用于对所述接口文档的第n行字段执行以下步骤s1011至s1014,其中所述n的取值大于等于1小于等于m,所述m为所述接口文档中包含的字段的总行数:s1011、读取所述第n行字段的序号以及特征信息,所述特征信息包括:字段名称、类型以及正则规则。s1012、以所述第n行字段的特征信息作为字段实体的属性,构造字段实体。s1013、根据所述第n行字段的序号,确定所述字段实体所属的层级。s1014、当所述第n行字段的类型为目标类型时,向所述字段实体添加子对象属性;其中,目标类型包括:list或者object,所述子对象属性包括至少一个与所述字段实体相关的下一层级的字段实体。一种可选的实现方式中,所述构建模块12,具体用于对所述接口对象的第i个字段实体执行以下步骤s1021至s1022,其中,所述i的取值大于等于1小于等于k,所述k为所述接口对象中包含的字段实体的总个数。s1021、当字段实体的类型不属于目标类型时,根据所述字段实体的属性,生成所述字段实体的模拟数据。s1022、当字段实体的类型为目标类型时,遍历所述字段实体的子对象属性中包含的字段实体。一种可选的实现方式中,所述构建模块12,具体用于当字段实体的类型为list时,为所述字段实体创建至少一个列表子对象,所述列表子对象用于存储所述字段实体的子对象属性中包含的字段实体;遍历所述至少一个列表子对象中的字段实体。一种可选的实现方式中,所述构建模块12,具体用于在所述待测试系统接口的接口文档更新后,重新生成模拟报文。本申请实施例提供一种生成模拟报文的装置,通过解析待测试系统接口的接口文档,生成接口对象。其中,该接口对象为以计算机可读语言表示的、用于描述接口文档的数据结构,接口对象由字段实体组成,所述字段实体是与接口文档的字段对应的实体,所述字段实体至少包括以下属性:字段名称、类型、正则规则。可以理解的是,上述接口对象对于计算机等设备而言是可读的,因此,计算机等设备可以根据上述接口对象中字段实体的属性生成模拟数据,进而以接口对象中所有字段实体对应的模拟数据,构建模拟报文,从而实现模拟报文的自动生成,提高模拟报文的生成效率和准确率。在采用集成的单元的情况下,图3示出了上述实施例中所涉及的设备的一种可能的结构示意图。所述设备包括:处理单元21。所述处理单元21用于执行上述解析模块11、构建模块12执行的步骤,和/或用于执行本文所描述的技术的其它过程。所述设备还可以包括通信单元22、存储单元23和总线24。其中,通信单元22用于支持设备与其他设备的通信。存储单元23用于存储设备的程序代码和数据。其中,上述处理单元21可以是设备中的处理器或控制器,该处理器或控制器可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。该处理器或控制器可以是中央处理器,通用处理器,数字信号处理器,专用集成电路,现场可编程门阵列或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合等。通信单元22可以是设备中的收发器、收发电路或系统接口等。存储单元23可以是设备中的存储器等,该存储器可以包括易失性存储器,例如随机存取存储器;该存储器也可以包括非易失性存储器,例如只读存储器,快闪存储器,硬盘或固态硬盘;该存储器还可以包括上述种类的存储器的组合。总线24可以是扩展工业标准结构(extendedindustrystandardarchitecture,eisa)总线等。总线24可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序加载到计算机上被计算机执行时,使计算机执行上述生成模拟报文的方法。其中,计算机可读存储介质,例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(randomaccessmemory,ram)、只读存储器(read-onlymemory,rom)、可擦式可编程只读存储器(erasableprogrammablereadonlymemory,eprom)、光纤、便携式紧凑磁盘只读存储器(compactdiscread-onlymemory,cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请实施例中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。结合本申请公开内容所描述的方法或者算法的步骤可以由硬件的方式来实现,也可以是由处理器执行软件指令的方式来实现。软件指令可以由相应的软件模块组成,软件模块可以被存放于ram、闪存、rom、可擦除可编程只读存储器(erasableprogrammablerom,eprom)、电可擦可编程只读存储器(electricallyeprom,eeprom)、寄存器、硬盘、移动硬盘、只读光盘(cd-rom)或者本领域熟知的任何其它形式的存储介质中。一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(applicationspecificintegratedcircuit,asic)中。在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1