CN105488014A - Xml格式的接口测试案例报文的生成方法和装置 - Google Patents
Xml格式的接口测试案例报文的生成方法和装置 Download PDFInfo
- Publication number
- CN105488014A CN105488014A CN201510850267.4A CN201510850267A CN105488014A CN 105488014 A CN105488014 A CN 105488014A CN 201510850267 A CN201510850267 A CN 201510850267A CN 105488014 A CN105488014 A CN 105488014A
- Authority
- CN
- China
- Prior art keywords
- type
- data
- node
- input domain
- title
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/151—Transformation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Artificial Intelligence (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Document Processing Apparatus (AREA)
Abstract
本发明提供了一种XML格式的接口测试案例报文的生成方法和装置,该方法包括:获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构;确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题;将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行;将标题行和所有的数据行写入文件;从测试案例存储文件中读取标题行和数据行;根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;将所有的XML格式报文节点组合生成测试案例的报文。
Description
技术领域
本发明实施例涉及接口测试技术领域,尤其涉及一种XML格式的接口测试案例报文的生成方法和装置。
背景技术
可扩展标记语言(ExtensiveMarkupLanguage,简称:XML)由于具有结构化、可扩展性,非常适合于网络传输和跨平台使用,所以越来越多地应用于描述和交换独立于应用程序的结构化数据。而在接口测试中,测试案例一般存储为扁平化结构,最常见的形式就是使用表格存储测试案例,表格首行为标题行,其余每行为一条测试案例的数据。
现有技术中,对于基于XML格式的数据报文的应用程序接口,接口对应的请求报文模板中需要进行数据替换的地方使用预设格式的参数进行占位,测试案例文件首行存储这些参数的名称,其余行存储对应的参数值。报文组装的过程就是在模板中依次检索参数名,使用对应的数据替换参数的过程。现有的处理方式,其实忽略了XML格式的请求报文模板本身具有的结构,单纯地将XML格式的请求报文模板视为字符串。
这种方式需要为每个输入域使用不同的参数来表示,尽管XML格式的请求报文模板已经包含了节点名称信息,如果某个输入域没有使用参数而是使用了默认值或空值,那么一旦输入域需要改用测试案例的数据,则原有的测试案例存储文件都要重新生成。同时,这种方式不支持数组结构类型的输入域,数组结构类型的输入域表现为多次重复出现的XML节点。另外,这种方式拼装报文的时候都需要请求报文模板的结构信息,且每次参数替换都要对请求报文模板进行从头到尾查找,效率不高。
发明内容
本发明提供的一种XML格式的接口测试案例报文的生成方法和装置,对XML数据报文的应用程序接口的测试案例存储方法进行了优化,实现将结构化的XML报文模板以及数据存储为扁平的测试案例文件,支持数组结构类型、自定义复杂结构类型,报文拼装的时候不需要请求报文模板的结构信息,提高了测试案例报文的生成效率,数组成员个数可变;数组的数据不需要特殊格式;支持输入域的数据类型描述。
本发明提供了XML格式的接口测试案例报文的生成方法,包括:
获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、每个输入域结构类型;
确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;
将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;
获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与标题行对应的预设分隔符;
将所述标题行和所有的数据行写入文件,以获得测试案例存储文件;
从测试案例存储文件中读取标题行和数据行;
确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;
将所有的所述XML格式报文节点组合生成测试案例的报文。
本发明提供了一种XML格式的接口测试案例报文的生成装置,包括:
获取模块,用于获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、每个输入域结构类型;
生成模块,用于确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;
获得模块,用于将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;
所述获取模块,还用于获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与标题行对应的预设分隔符;
所述获得模块,用于将所述标题行和所有的数据行写入文件,获得测试案例存储文件;
读取模块,用于从测试案例存储文件中读取标题行和数据行;
拼装模块,用于确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;
所述生成模块,还用于将所有的所述XML格式报文节点组合生成测试案例的报文。
本发明实施例提供的XML格式的接口测试案例报文的生成方法和装置通过获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构,请求报文模板的结构包括:请求报文模板中所有节点的输入域、每个输入域结构类型;确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,每个测试案例的数据行中包括输入的数据及连接输入的数据的与标题行对应的预设分隔符;将标题行和所有的数据行写入文件,以获得测试案例存储文件;从测试案例存储文件中读取标题行和数据行;确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;将所有的XML格式报文节点组合生成测试案例的报文。对XML数据报文的应用程序接口的测试案例存储方法进行了优化,实现将结构化的XML报文模板以及数据存储为扁平的测试案例文件,支持数组结构类型、自定义复杂结构类型,报文拼装的时候不需要请求报文模板的结构信息,提高了测试案例报文的生成效率,数组成员个数可变;数组的数据不需要特殊格式;支持输入域的数据类型描述。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明XML格式的接口测试案例报文的生成方法实施例一的流程图;
图2为本发明方法的实施例中生成复杂自定义结构类型标题的流程图;
图3为本发明方法的实施例中生成数组结构类型标题的流程图;
图4为本发明方法的实施例中获取数组结构类型数据的流程图;
图5为本发明方法的实施例中拼装数组结构类型报文节点的流程图;
图6为本发明XML格式的接口测试案例报文的生成装置实施例一的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明XML格式的接口测试案例报文的生成方法实施例一的流程图,如图1所示,该方法包括:
步骤101,获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构,请求报文模板的结构包括:请求报文模板中所有节点的输入域、每个输入域结构类型。
本实施中,应用程序接口对应的请求报文模板可根据应用程序接口说明文档编写而成,另外,对于Web服务类型的应用程序接口,请求报文模板可以通过解析接口的服务描述语言文件(WebServicesDescriptionLanguage,简称WSDL文件)来获取。
本实施例中,举例说明,XML格式的请求报文模板可以表示为:
该举例中,请求报文模板的根节点指没有上级节点的节点;如举例中的节点CONTROL_DATA,叶子节点指没有下级节点的节点,如举例中的节点CODE及NAME。
步骤102,确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型。
本实施例中,如果根节点也是叶子节点,则此节点输入域为原子结构类型。如果根节点包含下级节点,即表现为嵌套节点,并且不包含属性type,则此节点输入域为复杂自定义数据类型。如果根节点包含属性type,并且type值为”array”,则此节点输入域为数组结构类型。如上例所示,OPERATIONTYPE节点和PRODUCTID节点都是原子结构类型,CONTROL_DATA节点为复杂自定义结构类型节点。ACCOUNT节点为数组结构类型。
再确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题时,对于不同输入域结构类型,其输入域标题的格式也不同。
如若根节点对应的输入域结构类型为原子结构类型,则生成相应的输入域标题为:以原子结构类型的输入域的XML节点名表示对应的输入域标题。
如上例所示,原子结构类型节点<OPERATIONTYPE></OPERATIONTYPE>的标题为OPERATIONTYPE。
如若确定某根节点对应的输入域结构类型为复杂自定义结构类型,则生成对应的输入域标题具体包括:
将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用第一预设分隔符拼接,生成对应的输入域标题;
其中,叶子节点的标题由叶子节点的由远及近的所有上级节点名及叶子节点使用第二预设分隔符拼接而成。
如上述举例所示,若确定某根节点对应的输入域结构类型为复杂自定义结构类型,则生成对应的输入域标题具体的处理流程可以参照图2所示。如图2所示,确定请求报文模板中某一根节点对应的输入域结构类型为复杂自定义类型,生成相应的输入域标题生成复杂自定义结构类型标题的具体步骤为:
步骤201,获取第N个叶子节点的所有上级节点。
如上例所示,复杂自定义结构类型节点CONTROL_DATA的第一个叶子节点为SEQ_NO,所有上级节点为CONTROL_DATA;
步骤202,将第N个叶子节点的所有上级节点名和本叶子节点名用第二预设分隔符连接,得到第N个叶子节点的标题。
本实施例中,第二预设分隔符可以为“.”,也可以为不同于第一预设分隔符和第三预设分隔符的其他分隔符,本实施例中不做限定。
如上例所示,复杂自定义结构类型节点CONTROL_DATA的第一个叶子节点为SEQ_NO标题为CONTROL_DATA.SEQ_NO。
步骤203,判断复杂自定义结构类型是否具有其他叶子节点,若是,则N+1,继续执行步骤201,若否,则执行步骤204。
如上例所示,判断复杂自定义结构类型具有其他叶子节点,分别为第二叶子节点CODE和第三叶子节点,则获取第二个叶子节点CODE节点的所有上级节点CONTROL_DATA、BRANCH。将所有上级节点名和本叶子节点名用第二预设分隔符连接,得到第二个叶子节点的标题CONTROL_DATA.BRANCH.CODE。同样的方式得到第三个叶子节点的标题CONTROL_DATA.BRANCH.NAME。
步骤204,将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用第一预设分隔符拼接,生成对应的输入域标题。
如上例所示,生成的复杂自定义结构类型输入域标题可以表示为:“CONTROL_DATA.SEQ_NO|CONTROL_DATA.BRANCH.NAME|CONTROL_DATA.BRANCH.CODE”。
若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域具体包括:
确定数组结构类型输入域的所有叶子节点的标题;
将所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最后的叶子节点的标题后端采用第一预设括号括起;
在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
如上述举例所示,若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域标题具体的处理流程可以参照图3所示。如图3所示,确定请求报文模板中某一根节点对应的输入域结构类型为数组结构类型,生成复杂自定义结构类型标题的具体步骤为:
步骤301,获取第N个叶子节点的除根节点以外的所有上级节点。
如上例所示,数组结构类型节点ACCOUNT的第一个节点NUMBER的所有上级节点为空。
步骤302,将除根节点以外的所有上级节点和本叶子节点名采用第二预设分隔符连接,得到第N个叶子节点的标题。
如在上述举例中,第一个叶子节点的标题为NUMBER。
步骤303,判断是否还有其他叶子节点,若是,则N+1,继续执行步骤301,若否,则执行步骤304。
如上例所示,判断数组结构类型具有其他叶子节点,为第二个节点BANK_COUNTRY,执行步骤301后,第二个叶子节点的除根节点以外的所有上级节点为空,执行步骤302后,得到第二个叶子节点的标题为BANK_COUNTRY。
步骤304,将所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最后的叶子节点的标题后端采用第一预设括号括起。
本实施例中,第三预设分隔符可以为“,”或者为除第一预设分隔符和第二预设分隔符以外的其他分隔符,本实施例中不做限定。
本实施例中,第一预设括号可以为“{}”也可以为小括号等,本实施例中不做限定。
如上例所示,通过步骤304后,得到{NUMBER,BANK_COUNTRY}。
步骤305,在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
本实施例中,第二预设括号可以为“[]”,也可以为与第一预设括号不同的其他括号,本实施例中不做限定。
如在上述举例中,数组结构类型输入域名为ACCOUNT,第二预设括号为“[]”,数组结构类型输入域的标题表示[ACCOUNT{NUMBER,BANK_COUNTRY}]。
步骤103,将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行。
本实施例中,第一预设分隔符可以为“|”,也可以为不同与第二预设分隔符和第三预设分隔符以外的其他分隔符,本实施例中不做限定。
如在上述举例中,将所有输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行表示为:“
OPERATIONTYPE|PRODUCTID|CONTROL_DATA.SEQ_NO|CONTROL_DATA.BRANCH.NAME|CONTROL_DATA.BRANCH.CODE|[ACCOUNT{NUMBER,BANK_COUNTRY}]”。
步骤104,获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,每个测试案例的数据行中包括输入的数据及连接输入的数据的与标题行对应的预设分隔符。
举例说明为:获取用户按照请求报文模板的结构输入的对应的应用程序接口的一个测试案例的数据行对应的XML报文为:
获取原子结构类型输入域OPERATIONTYPE的数据为544101,原子结构类型输入域PRODUCTID的数据为5441;获取复杂自定义数据类型输入域CONTROL_DATA的数据为2955342349|1201|北京西客站支行。
进一步地,获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行时,若测试案例的数据行中包括数组结构类型数据,则数据行中对应的数组结构类型数据包括由第二预设括号括起的所有数组元素节点的数据,数组元素节点的数据由数组节点的所有叶子节点数据用第三预设分隔符连接而成。
具体地,若测试案例的数据行中包括数组结构类型数据,则获取数据行中对应的数组结构类型数据的具体步骤如图4所示。
步骤401,获取第N个数组成员的节点的数据。
本实施例中,第一个数组成员节点的数据即为此数组的所有叶子节点数据。如上XML报文数据例子所示,数组结构类型输入域ACCOUNT第一个数组成员的XML报文数据为<ACCOUNT>
<NUMBER>0201014210002434</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>,此数组成员所有叶子节点数据为0201014210002434,CN。
步骤402,判断是否具有其他数组成员,若是,则N+1,执行步骤401,若否,则执行步骤403。
在上述举例中,判断具有其他数组成员,第二个数组成员的XML报文数据为<ACCOUNT>
<NUMBER>0201014210002442</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>,此数组成员所有叶子节点数据为0201014210002442,CN。
步骤403,将数组成员节点的所有成员的数据用第三预设分隔符连接。
在上述举例中,将上述所有叶子节点数据用分隔符“,”连接,得到0201014210002434,CN,0201014210002442,CN。
步骤105,将标题行和所有的数据行写入文件,以获得测试案例存储文件。
例如,包含两条测试案例数据行的测试案例文件可以为:
OPERATIONTYPE|PRODUCTID|CONTROL_DATA.SEQ_NO|CONTROL_DATA.BRANCH.NAME|CONTROL_DATA.BRANCH.CODE|[ACCOUNT{NUMBER,BANK_COUNTRY}]
544101|5441|2955342301|北京西客站支行
|1201|[0201014210002411,CN,0201014210002435,CN]
544101|5441|2955342302|北京西直门支行
|1201|[0201014210002422,CN,0201014210003222,CN]
步骤106,从测试案例存储文件中读取标题行和数据行。
步骤107,确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点。
如在标题行和第一个数据行中,原子结构类型输入域
OPERATIONTYPE对应数据为544101,拼装成XML报文为
<OPERATIONTYPE>544101</OPERATIONTYPE>;原子结构类型输入域
PRODUCTID的对应的数据为5441,拼装成XML报文为
<PRODUCTID>5441</PRODUCTID>;复杂自定义数据类型输入域
CONTROL_DATA的标题为
CONTROL_DATA.SEQ_NO|CONTROL_DATA.
BRANCH.NAME|CONTROL_DATA.BRANCH.CODE,数据为
2955342349|1201|北京西客站支行,拼装成XML报文为
进一步地,本实施例中,若确定标题行中某输入域的结构类型为数组结构类型,将数组结构类型标题和对应的数据行的数据,拼接成XML格式报文节点具体包括:
根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类型的数据按照数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的XML报文;
将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
具体地。根据数组结构类型将数组结构类型的输入域标题和对应的数据行的数据,拼装成XML格式报文节点具体步骤如图5所示。
步骤501,根据数组结构类型的标题得到数组成员的数据成员个数x。
如上所示的标题行和第一个数据行,数组结构类型输入域ACCOUNT的标题为[ACCOUNT{NUMBER,BANK_COUNTRY}],数据为0201014210002434,CN,0201014210002435,CN。数组成员节点为NUMBER和BANK_COUNTRY,个数为2。
步骤502,将数组结构类型的数据按照此个数分成y组,y等于数据总数除以x。
如上所示数据0201014210002434,CN,0201014210002435,CN,数据个数为4,4除以2等于2,所以分成两组,分别为:0201014210002434,CN和0201014210002435,CN。
步骤503,每组数据结合标题拼装成一个数组成员的XML格式报文节点。
如上所示,第一组数据0201014210002434,CN结合标题
ACCOUNT{NUMBER,BANK_COUNTRY},拼装成XML格式报文节点
<ACCOUNT>
<NUMBER>0201014210002434</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>;
第二组数据0201014210002435,CN结合标题
ACCOUNT{NUMBER,BANK_COUNTRY},拼装成XML格式报文节点
<ACCOUNT>
<NUMBER>0201014210002442</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>。
步骤504,所有数组成员的XML格式报文节点组成数组结构类型的XML报文节点。
如上所示两个数组成员的XML格式报文节点组成数组结构类型的XML报文节点:
<ACCOUNT>
<NUMBER>0201014210002434</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>
<ACCOUNT>
<NUMBER>0201014210002442</NUMBER>
<BANK_COUNTRY>CN</BANK_COUNTRY>
</ACCOUNT>。
步骤108,将所有的XML格式报文节点组合生成测试案例的报文。
如上述举例中,将所有的XML格式报文节点组合生成测试案例的报文可表示为:
本实施例提供的XML格式的接口测试案例报文的生成方法,通过获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构,请求报文模板的结构包括:请求报文模板中所有节点的输入域、每个输入域结构类型;确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,每个测试案例的数据行中包括输入的数据及连接输入的数据的与标题行对应的预设分隔符;将标题行和所有的数据行写入文件,以获得测试案例存储文件;从测试案例存储文件中读取标题行和数据行;确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;将所有的XML格式报文节点组合生成测试案例的报文。对XML数据报文的应用程序接口的测试案例存储方法进行了优化,实现将结构化的XML报文模板以及数据存储为扁平的测试案例文件,支持数组结构类型、自定义复杂结构类型,报文拼装的时候不需要请求报文模板的结构信息,提高了测试案例报文的生成效率。
优选地,本发明的方法还支持含有数据类型、数组结构类型元素个数范围的报文模板。
具体地,本实施例中,若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域标题还包括:
在数组结构类型输入域名前添加数组结构类型的元素个数的最小预设个数和最大预设个数,将最小预设个数和最大预设个数采用第三预设分隔符连接,并采用第一预设括号将采用第三预设分隔符连接后的最小预设个数和最大预设个数括起。
在标题行中每个输入域类型的标题的开始位置还包括输入域的数据类型,输入域的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
举例说明,应用程序的接口的请求报文模板为:
对应此请求报文模板,生成案例文件的标题行为:{string}OPERATIONTYPE|{integer}PRODUCTID|{string}CONTROL_DATA.SEQ_NO|{string}CONTROL_DATA.
BRANCH.NAME|{string}CONTROL_DATA.BRANCH.CODE|[{1,10}ACCOUNT{{string}NUMBER,{string}BANK_COUNTRY}]。
其中{1,10}表示数组结构类型输入域ACCOUNT的元素个数大于等于1,小于等于10。{string}表示输入域数据类型为字符串,{integer}表示输入域的数据类型为整型。
进一步地,在步骤107中根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点时,对数据类型校验,用于校验输入域的数据是否与数据类型相符。
举例来说,某输入域的数据类型标题为{integer}PRODUCTID,数据为“abc”,因为abc不是整型(integer),所以此数据无法通过校验。
对应本发明的方法的具体实施例,本发明还提出一种XML格式的接口测试案例报文的生成装置。
图6为本发明XML格式的接口测试案例报文的生成装置的结构示意图。如图6所示,本实施例提供的装置包括:获取模块601,生成模块602,获得模块603,写入模块604,读取模块605,拼装模块606。
其中,获取模块601,用于获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、每个输入域结构类型。生成模块602,用于确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型。获得模块603,用于将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行。所述获取模块601,还用于获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与标题行对应的预设分隔符。写入模块604,用于将所述标题行和所有的数据行写入文件,以获得测试案例存储文件。读取模块605,用于从测试案例存储文件中读取标题行和数据行。拼装模块606,用于确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点。所述生成模块602,还用于将所有的所述XML格式报文节点组合生成测试案例的报文。
本实施例的装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
进一步地,生成模块602具体用于:以原子结构类型的输入域的XML节点名表示对应的输入域标题。
或者,生成模块602具体用于:将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用所述第一预设分隔符拼接,生成对应的输入域标题;其中,所述叶子节点的标题由所述叶子节点的由远及近的所有上级节点名及所述叶子节点使用第二预设分隔符拼接而成。
或者,生成模块602具体用于:确定数组结构类型输入域的所有叶子节点的标题;将所述所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最后的叶子节点的标题后端采用第一预设括号括起;在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
进一步地,生成模块602,还用于:在数组结构类型输入域名前添加所述数组结构类型的数组成员个数的最小预设个数和最大预设个数,将最小预设个数和最大预设个数采用第三预设分隔符连接,并采用第一预设括号将采用第三预设分隔符连接后的最小预设个数和最大预设个数括起。
进一步地,若测试案例的数据行中包括数组结构类型数据,则所述数据行中对应的数组结构类型数据包括所有数组成员节点的数据,所述数组成员节点的数据由数组节点的所有叶子节点数据用第三预设分隔符连接而成。
进一步地,拼接模块606,具体用于:若确定所述标题行中某输入域的结构类型为数组结构类型,则根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类型的数据按照所述数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的XML报文;将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
可选地,本实施例中,所述标题行中每个输入域类型的标题的开始位置还包括输入域的数据类型,所述输入域的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
进一步地,本实施例可以执行图2-图5所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (16)
1.一种XML格式的接口测试案例报文的生成方法,其特征在于,包括:
获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、每个输入域结构类型;
确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;
将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;
获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与标题行对应的预设分隔符;
将所述标题行和所有的数据行写入文件,以获得测试案例存储文件;
从测试案例存储文件中读取标题行和数据行;
确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;
将所有的所述XML格式报文节点组合生成测试案例的报文。
2.根据权利要求1所述的方法,其特征在于,若确定某根节点对应的输入域结构类型为原子结构类型,则生成相应的输入域标题具体为:
以原子结构类型的输入域的XML节点名表示对应的输入域标题。
3.根据权利要求1所述的方法,其特征在于,若确定某根节点对应的输入域结构类型为复杂自定义结构类型,则生成对应的输入域标题具体包括:
将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用所述第一预设分隔符拼接,生成对应的输入域标题;
其中,所述叶子节点的标题由所述叶子节点的由远及近的所有上级节点名及所述叶子节点使用第二预设分隔符拼接而成。
4.根据权利要求1所述的方法,其特征在于,若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域具体包括:
确定数组结构类型输入域的所有叶子节点的标题;
将所述所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最后的叶子节点的标题后端采用第一预设括号括起;
在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
5.根据权利要求4所述的方法,其特征在于,若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域标题还包括:
在数组结构类型输入域名前添加所述数组结构类型的数组成员个数的最小预设个数和最大预设个数,将最小预设个数和最大预设个数采用第三预设分隔符连接,并采用第一预设括号将采用第三预设分隔符连接后的最小预设个数和最大预设个数括起。
6.根据权利要求1所述的方法,其特征在于,若测试案例的数据行中包括数组结构类型数据,则所述数据行中对应的数组结构类型数据包括所有数组成员节点的数据,所述数组成员节点的数据由数组节点的所有叶子节点数据用第三预设分隔符连接而成。
7.根据权利要求1所述的方法,其特征在于,若确定所述标题行中某输入域的结构类型为数组结构类型,将所述数组结构类型标题和对应的数据行的数据,拼接成XML格式报文节点具体包括:
根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类型的数据按照所述数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的XML报文;
将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
8.根据权利要求1-7任一项所述的方法,其特征在于,所述标题行中每个输入域类型的标题的开始位置还包括输入域的数据类型,所述输入域的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
9.一种XML格式的接口测试案例报文的生成装置,其特征在于,包括:
获取模块,用于获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、每个输入域结构类型;
生成模块,用于确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;
获得模块,用于将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;
所述获取模块,还用于获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与标题行对应的预设分隔符;
写入模块,用于将所述标题行和所有的数据行写入文件,以获得测试案例存储文件;
读取模块,用于从测试案例存储文件中读取标题行和数据行;
拼装模块,用于确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;
所述生成模块,还用于将所有的所述XML格式报文节点组合生成测试案例的报文。
10.根据权利要求9所述的装置,其特征在于,所述生成模块具体用于:
以原子结构类型的输入域的XML节点名表示对应的输入域标题。
11.根据权利要求9所述的装置,其特征在于,所述生成模块具体用于:
将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用所述第一预设分隔符拼接,生成对应的输入域标题;其中,所述叶子节点的标题由所述叶子节点的由远及近的所有上级节点名及所述叶子节点使用第二预设分隔符拼接而成。
12.根据权利要求9所述的装置,其特征在于,所述生成模块具体用于:
确定数组结构类型输入域的所有叶子节点的标题;将所述所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最后的叶子节点的标题后端采用第一预设括号括起;在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
13.根据权利要求12所述的装置,其特征在于,所述生成模块,还用于:
在数组结构类型输入域名前添加所述数组结构类型的数组成员个数的最小预设个数和最大预设个数,将最小预设个数和最大预设个数采用第三预设分隔符连接,并采用第一预设括号将采用第三预设分隔符连接后的最小预设个数和最大预设个数括起。
14.根据权利要求9所述的装置,其特征在于,若测试案例的数据行中包括数组结构类型数据,则所述数据行中对应的数组结构类型数据包括所有数组成员节点的数据,所述数组成员节点的数据由数组节点的所有叶子节点数据用第三预设分隔符连接而成。
15.根据权利要求9所述的装置,其特征在于,所述拼接模块,具体用于:
若确定所述标题行中某输入域的结构类型为数组结构类型,则根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类型的数据按照所述数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的XML报文;将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
16.根据权利要求9-15任一项所述的装置,其特征在于,所述标题行中每个输入域类型的标题的开始位置还包括输入域的数据类型,所述输入域的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510850267.4A CN105488014B (zh) | 2015-11-27 | 2015-11-27 | Xml格式的接口测试案例报文的生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510850267.4A CN105488014B (zh) | 2015-11-27 | 2015-11-27 | Xml格式的接口测试案例报文的生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105488014A true CN105488014A (zh) | 2016-04-13 |
CN105488014B CN105488014B (zh) | 2018-11-09 |
Family
ID=55674998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510850267.4A Active CN105488014B (zh) | 2015-11-27 | 2015-11-27 | Xml格式的接口测试案例报文的生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105488014B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107341109A (zh) * | 2017-07-07 | 2017-11-10 | 中国银行股份有限公司 | 一种测试数据的生成方法和系统 |
CN107545008A (zh) * | 2016-06-27 | 2018-01-05 | 五八同城信息技术有限公司 | 数据的格式要求存储方法及装置 |
CN107870765A (zh) * | 2016-09-26 | 2018-04-03 | 平安科技(深圳)有限公司 | 报文拼接方法及终端 |
CN108933787A (zh) * | 2018-07-02 | 2018-12-04 | 深圳市风云实业有限公司 | 报文生成方法及装置 |
CN113094195A (zh) * | 2021-04-30 | 2021-07-09 | 核动力运行研究所 | 一种接口调用文件的生成方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080195634A1 (en) * | 2007-02-09 | 2008-08-14 | Microsoft Corporation | Complete mapping between the xml infoset and dynamic language data expressions |
CN101335648A (zh) * | 2008-07-25 | 2008-12-31 | 中兴通讯股份有限公司 | 一种不同接口报文间的自动转换方法及其装置 |
CN102594833A (zh) * | 2012-03-09 | 2012-07-18 | 北京神州数码思特奇信息技术股份有限公司 | 一种通信协议适配方法和系统 |
-
2015
- 2015-11-27 CN CN201510850267.4A patent/CN105488014B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080195634A1 (en) * | 2007-02-09 | 2008-08-14 | Microsoft Corporation | Complete mapping between the xml infoset and dynamic language data expressions |
CN101335648A (zh) * | 2008-07-25 | 2008-12-31 | 中兴通讯股份有限公司 | 一种不同接口报文间的自动转换方法及其装置 |
CN102594833A (zh) * | 2012-03-09 | 2012-07-18 | 北京神州数码思特奇信息技术股份有限公司 | 一种通信协议适配方法和系统 |
Non-Patent Citations (3)
Title |
---|
THOMAS KUDRASS ET AL.: "Management of XML Documents in Object-Relational Databases", 《WORSHOPS XMLDM,MDDE,AND YRWS ON XML-BASED DATA MANAGEMENT AND MULTIMEDIA ENGINEERING-REVISED PAPERS》 * |
吴治宗: "基于XML的文档处理技术的研究与实现", 《中国优秀博硕士学位论文全文数据库(硕士) 信息科技辑》 * |
陈霖: "银行综合业务前置系统XY-GAPS的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107545008A (zh) * | 2016-06-27 | 2018-01-05 | 五八同城信息技术有限公司 | 数据的格式要求存储方法及装置 |
CN107545008B (zh) * | 2016-06-27 | 2021-02-19 | 五八同城信息技术有限公司 | 数据的格式要求存储方法及装置 |
CN107870765A (zh) * | 2016-09-26 | 2018-04-03 | 平安科技(深圳)有限公司 | 报文拼接方法及终端 |
CN107870765B (zh) * | 2016-09-26 | 2021-08-31 | 平安科技(深圳)有限公司 | 报文拼接方法及终端 |
CN107341109A (zh) * | 2017-07-07 | 2017-11-10 | 中国银行股份有限公司 | 一种测试数据的生成方法和系统 |
CN108933787A (zh) * | 2018-07-02 | 2018-12-04 | 深圳市风云实业有限公司 | 报文生成方法及装置 |
CN108933787B (zh) * | 2018-07-02 | 2021-05-18 | 深圳市风云实业有限公司 | 报文生成方法及装置 |
CN113094195A (zh) * | 2021-04-30 | 2021-07-09 | 核动力运行研究所 | 一种接口调用文件的生成方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN105488014B (zh) | 2018-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105488014A (zh) | Xml格式的接口测试案例报文的生成方法和装置 | |
CN106143532B (zh) | 列车动态重联的方法及节点 | |
CN105141681B (zh) | Rpki文件的同步方法及装置 | |
CN109901888B (zh) | 一种配置文件自动生成工具的设计方法 | |
CN107220096A (zh) | 一种json数据解析方法及装置 | |
WO2022095574A1 (zh) | 一种基于区块链的资源共享的方法及装置 | |
CN109460219A (zh) | 快速序列化接口控制文件的方法 | |
CN108241576A (zh) | 一种接口测试方法及系统 | |
US20180095719A1 (en) | Sorted linked list with a midpoint binary tree | |
CN107329849A (zh) | 一种基于Java系统的数据校验方法及系统 | |
CN109766389A (zh) | 一种基于位图索引的区块链轻客户端验证查询方法 | |
CN107861736A (zh) | 补丁生成和更新方法及装置、电子设备、存储介质 | |
CN104079623B (zh) | 多级云存储同步控制方法及系统 | |
CN110347709A (zh) | 一种规则引擎的构建方法及系统 | |
CN107357588B (zh) | 目标代码生成方法及装置 | |
CN105630667A (zh) | 一种测试方法和终端设备 | |
CN103646015B (zh) | 发送、接收以及传输xml报文的方法和系统 | |
CN107797805A (zh) | 一种代码封装方法、装置及计算机可读存储介质 | |
CN113179329B (zh) | 服务发布方法及装置、服务器、存储介质 | |
CN114168149A (zh) | 一种数据转换方法及装置 | |
CN110191156A (zh) | 一种基于区块链的数据处理方法及装置 | |
CN103631975A (zh) | 一种数据提取方法及装置 | |
CN104378362A (zh) | 用于进行报文接口转换的方法及装置 | |
CN104868973B (zh) | 数据完整性校验方法和系统 | |
CN110851343A (zh) | 一种基于决策树的测试方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |