Xml格式的接口测试案例报文的生成方法和装置的制造方法
【技术领域】
[00011本发明实施例涉及接口测试技术领域,尤其涉及一种XML格式的接口测试案例报 文的生成方法和装置。
【背景技术】
[0002] 可扩展标记语言(Extensive Markup Language,简称:XML)由于具有结构化、可扩 展性,非常适合于网络传输和跨平台使用,所以越来越多地应用于描述和交换独立于应用 程序的结构化数据。而在接口测试中,测试案例一般存储为扁平化结构,最常见的形式就是 使用表格存储测试案例,表格首行为标题行,其余每行为一条测试案例的数据。
[0003] 现有技术中,对于基于XML格式的数据报文的应用程序接口,接口对应的请求报文 模板中需要进行数据替换的地方使用预设格式的参数进行占位,测试案例文件首行存储这 些参数的名称,其余行存储对应的参数值。报文组装的过程就是在模板中依次检索参数名, 使用对应的数据替换参数的过程。现有的处理方式,其实忽略了 XML格式的请求报文模板本 身具有的结构,单纯地将XML格式的请求报文模板视为字符串。
[0004] 这种方式需要为每个输入域使用不同的参数来表示,尽管XML格式的请求报文模 板已经包含了节点名称信息,如果某个输入域没有使用参数而是使用了默认值或空值,那 么一旦输入域需要改用测试案例的数据,则原有的测试案例存储文件都要重新生成。同时, 这种方式不支持数组结构类型的输入域,数组结构类型的输入域表现为多次重复出现的 XML节点。另外,这种方式拼装报文的时候都需要请求报文模板的结构信息,且每次参数替 换都要对请求报文模板进行从头到尾查找,效率不高。
【发明内容】
[0005] 本发明提供的一种XML格式的接口测试案例报文的生成方法和装置,对XML数据报 文的应用程序接口的测试案例存储方法进行了优化,实现将结构化的XML报文模板以及数 据存储为扁平的测试案例文件,支持数组结构类型、自定义复杂结构类型,报文拼装的时候 不需要请求报文模板的结构信息,提高了测试案例报文的生成效率,数组成员个数可变;数 组的数据不需要特殊格式;支持输入域的数据类型描述。
[0006] 本发明提供了 XML格式的接口测试案例报文的生成方法,包括:
[0007] 获取应用程序接口的XML格式的请求报文模板,所述请求报文模板包括所述请求 报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有节点的输入域、 每个输入域结构类型;
[0008] 确定所述请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域 标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或 数组结构类型;
[0009] 将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的 测试案例的标题行;
[0010] 获取用户按照所述请求报文模板的结构输入的对应的应用程序接口的多个测试 案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接所述输入的数据的与 标题行对应的预设分隔符;
[0011] 将所述标题行和所有的数据行写入文件,以获得测试案例存储文件;
[0012] 从测试案例存储文件中读取标题行和数据行;
[0013] 确定所述标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输 入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的XML报文节点包 括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节 占.
[0014] 将所有的所述XML格式报文节点组合生成测试案例的报文。
[0015]本发明提供了一种XML格式的接口测试案例报文的生成装置,包括:
[0016] 获取模块,用于获取应用程序接口的XML格式的请求报文模板,所述请求报文模板 包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模板中所有 节点的输入域、每个输入域结构类型;
[0017] 生成模块,用于确定所述请求报文模板中每个根节点对应的输入域结构类型,生 成相应的输入域标题,所述每个根节点对应的输入域结构类型包括原子结构类型或复杂自 定义结构类型或数组结构类型;
[0018] 获得模块,用于将所有的所述输入域标题使用第一预设分隔符连接获得对应的应 用程序接口的测试案例的标题行;
[0019] 所述获取模块,还用于获取用户按照所述请求报文模板的结构输入的对应的应用 程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据及连接 所述输入的数据的与标题行对应的预设分隔符;
[0020] 所述获得模块,用于将所述标题行和所有的数据行写入文件,获得测试案例存储 文件;
[0021] 读取模块,用于从测试案例存储文件中读取标题行和数据行;
[0022] 拼装模块,用于确定所述标题行中每个输入域的结构类型,根据每个输入域的结 构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;所述拼装成的 XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组 结构类型报文节点;
[0023] 所述生成模块,还用于将所有的所述XML格式报文节点组合生成测试案例的报文。
[0024] 本发明实施例提供的XML格式的接口测试案例报文的生成方法和装置通过获取应 用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构,请求报文 模板的结构包括:请求报文模板中所有节点的输入域、每个输入域结构类型;确定请求报文 模板中每个根节点对应的输入域结构类型,生成相应的输入域标题,每个根节点对应的输 入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型;将所有的输入域 标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按 照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,每个测试案 例的数据行中包括输入的数据及连接输入的数据的与标题行对应的预设分隔符;将标题行 和所有的数据行写入文件,以获得测试案例存储文件;从测试案例存储文件中读取标题行 和数据行;确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入 域标题和对应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包括:原子 结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;将所 有的XML格式报文节点组合生成测试案例的报文。对XML数据报文的应用程序接口的测试案 例存储方法进行了优化,实现将结构化的XML报文模板以及数据存储为扁平的测试案例文 件,支持数组结构类型、自定义复杂结构类型,报文拼装的时候不需要请求报文模板的结构 信息,提高了测试案例报文的生成效率,数组成员个数可变;数组的数据不需要特殊格式; 支持输入域的数据类型描述。
【附图说明】
[0025] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发 明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以 根据这些附图获得其他的附图。
[0026] 图1为本发明XML格式的接口测试案例报文的生成方法实施例一的流程图;
[0027] 图2为本发明方法的实施例中生成复杂自定义结构类型标题的流程图;
[0028] 图3为本发明方法的实施例中生成数组结构类型标题的流程图;
[0029] 图4为本发明方法的实施例中获取数组结构类型数据的流程图;
[0030] 图5为本发明方法的实施例中拼装数组结构类型报文节点的流程图;
[0031 ]图6为本发明XML格式的接口测试案例报文的生成装置实施例一的结构示意图。
【具体实施方式】
[0032]为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例 中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是 本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员 在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0033]图1为本发明XML格式的接口测试案例报文的生成方法实施例一的流程图,如图1 所示,该方法包括:
[0034]步骤101,获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求 报文模板的结
构,请求报文模板的结构包括:请求报文模板中所有节点的输入域、每个输入 域结构类型。
[0035]本实施中,应用程序接口对应的请求报文模板可根据应用程序接口说明文档编写 而成,另外,对于Web服务类型的应用程序接口,请求报文模板可以通过解析接口的服务描 述语言文件(Web Services Description Language,简称WSDL文件)来获取。
[0036]本实施例中,举例说明,XML格式的请求报文模板可以表示为:
[0038] 该举例中,请求报文模板的根节点指没有上级节点的节点;如举例中的节点 C0NTR0L_DATA,叶子节点指没有下级节点的节点,如举例中的节点CODE及NAME。
[0039] 步骤102,确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输 入域标题,每个根节点对应的输入域结构类型包括原子结构类型或复杂自定义结构类型或 数组结构类型。
[0040] 本实施例中,如果根节点也是叶子节点,则此节点输入域为原子结构类型。如果根 节点包含下级节点,即表现为嵌套节点,并且不包含属性type,则此节点输入域为复杂自定 义数据类型。如果根节点包含属性type,并且type值为"array",则此节点输入域为数组结 构类型。如上例所示,0PERATI0NTYPE节点和PR0DUCTID节点都是原子结构类型,C0NTR0L_ DATA节点为复杂自定义结构类型节点。ACCOUNT节点为数组结构类型。
[0041 ]再确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标 题时,对于不同输入域结构类型,其输入域标题的格式也不同。
[0042] 如若根节点对应的输入域结构类型为原子结构类型,则生成相应的输入域标题 为:以原子结构类型的输入域的XML节点名表示对应的输入域标题。
[0043] 如上例所示,原子结构类型节点〈OPERATIONTYPEX/OTORATIONTYPE〉的标题为 0PERATI0NTYPE〇
[0044] 如若确定某根节点对应的输入域结构类型为复杂自定义结构类型,则生成对应的 输入域标题具体包括:
[0045] 将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用第一预设 分隔符拼接,生成对应的输入域标题;
[0046] 其中,叶子节点的标题由叶子节点的由远及近的所有上级节点名及叶子节点使用 第二预设分隔符拼接而成。
[0047]如上述举例所示,若确定某根节点对应的输入域结构类型为复杂自定义结构类 型,则生成对应的输入域标题具体的处理流程可以参照图2所示。如图2所示,确定请求报文 模板中某一根节点对应的输入域结构类型为复杂自定义类型,生成相应的输入域标题生成 复杂自定义结构类型标题的具体步骤为:
[0048]步骤201,获取第N个叶子节点的所有上级节点。
[0049] 如上例所示,复杂自定义结构类型节点C0NTR0L_DATA的第一个叶子节点为SEQ_ NO,所有上级节点为C0NTR0L_DATA;
[0050] 步骤202,将第N个叶子节点的所有上级节点名和本叶子节点名用第二预设分隔符 连接,得到第N个叶子节点的标题。
[0051] 本实施例中,第二预设分隔符可以为也可以为不同于第一预设分隔符和第三 预设分隔符的其他分隔符,本实施例中不做限定。
[0052] 如上例所示,复杂自定义结构类型节点C0NTR0L_DATA的第一个叶子节点为SEQ_N0 标题为 C0NTR0L_DATA · SEQ_N0。
[0053] 步骤203,判断复杂自定义结构类型是否具有其他叶子节点,若是,则N+1,继续执 行步骤201,若否,则执行步骤204。
[0054] 如上例所示,判断复杂自定义结构类型具有其他叶子节点,分别为第二叶子节点 ⑶DE和第三叶子节点,则获取第二个叶子节点⑶DE节点的所有上级节点⑶NTR0L_DATA、 BRANCH。将所有上级节点名和本叶子节点名用第二预设分隔符连接,得到第二个叶子节点 的标题⑶NTR0L_DATA. BRANCH.⑶DE。同样的方式得到第三个叶子节点的标题⑶NTR0L_ DATA.BRANCH.NAME〇
[0055] 步骤204,将复杂自定义结构类型的输入域的根节点的所有叶子节点的标题使用 第一预设分隔符拼接,生成对应的输入域标题。
[0056]如上例所示,生成的复杂自定义结构类型输入域标题可以表示为:"⑶NTR0L_ DATA.SEQ_N0|C0NTR0L_DATA. BRANCH. NAME|C0NTR0L_DATA. BRANCH. CODE" 〇 [0057]若确定某根节点对应的输入域结构类型为数组结构类型,则生成对应的输入域具 体包括:
[0058]确定数组结构类型输入域的所有叶子节点的标题;
[0059] 将所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端 和最后的叶子节点的标题后端采用第一预设括号括起;
[0060] 在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组结构类型 输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
[0061] 如上述举例所示,若确定某根节点对应的输入域结构类型为数组结构类型,则生 成对应的输入域标题具体的处理流程可以参照图3所示。如图3所示,确定请求报文模板中 某一根节点对应的输入域结构类型为数组结构类型,生成复杂自定义结构类型标题的具体 步骤为:
[0062]步骤301,获取第N个叶子节点的除根节点以外的所有上级节点。
[0063]如上例所示,数组结构类型节点ACCOUNT的第一个节点NUMBER的所有上级节点为 空。
[0064] 步骤302,将除根节点以外的所有上级节点和本叶子节点名采用第二预设分隔符 连接,得到第N个叶子节点的标题。
[0065] 如在上述举例中,第一个叶子节点的标题为NUMBER。
[0066] 步骤303,判断是否还有其他叶子节点,若是,则N+1,继续执行步骤301,若否,则执 行步骤304。
[0067]如上例所示,判断数组结构类型具有其他叶子节点,为第二个节点BANK_C0UNTRY, 执行步骤301后,第二个叶子节点的除根节点以外的所有上级节点为空,执行步骤302后,得 到第二个叶子节点的标题为BANK_COUNTRY。
[0068] 步骤304,将所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的 标题前端和最后的叶子节点的标题后端采用第一预设括号括起。
[0069] 本实施例中,第三预设分隔符可以为","或者为除第一预设分隔符和第二预设分 隔符以外的其他分隔符,本实施例中不做限定。
[0070] 本实施例中,第一预设括号可以为"{}"也可以为小括号等,本实施例中不做限定。
[0071] 如上例所示,通过步骤304后,得到{NUMBER,BANK_COUNTRY}。
[0072]步骤305,在第一预设括号的左括号的前端添加数组结构类型输入域名,并在数组 结构类型输入域名前端和第一预设括号右括号的后端采用第二预设括号括起。
[0073]本实施例中,第二预设括号可以为"[]",也可以为与第一预设括号不同的其他括 号,本实施例中不做限定。
[0074] 如在上述举例中,数组结构类型输入域名为ACCOUNT,第二预设括号为"[]",数组 结构类型输入域的标题表示[ACCOUNT{NUMBER,BANK_COUNTRY}]。
[0075] 步骤103,将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接 口的测试案例的标题行。
[0076]本实施例中,第一预设分隔符可以为"|",也可以为不同与第二预设分隔符和第三 预设分隔符以外的其他分隔符,本实施例中不做限定。
[0077] 如在上述举例中,将所有输入域标题使用第一预设分隔符连接获得对应的应用程 序接口的测试案例的标题行表示为:"
[0078] 0PERATI0NTYPE|PRODUCTID|C0NTR0L_DATA.SEQ_N01C0NTR0L_DATA. BRANCH. NAME C0NTR0L_DATA.BRANCH.CODE|[ACCOUNT{NUMBER,BANK_C0UNTRY}]"〇
[0079] 步骤104,获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个 测试案例的数据行,每个测试案例的数据行中包括输入的数据及连接输入的数据的与标题
行对应的预设分隔符。
[0080] 举例说明为:获取用户按照请求报文模板的结构输入的对应的应用程序接口的一 个测试案例的数据行对应的XML报文为:
[0082] 获取原子结构类型输入域0PERATI0NTYPE的数据为544101,原子结构类型输入域 PR0DUCTID的数据为5441;获取复杂自定义数据类型输入域C0NTR0L_DATA的数据为 2955342349 112011北京西客站支行。
[0083] 进一步地,获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个 测试案例的数据行时,若测试案例的数据行中包括数组结构类型数据,则数据行中对应的 数组结构类型数据包括由第二预设括号括起的所有数组元素节点的数据,数组元素节点的 数据由数组节点的所有叶子节点数据用第三预设分隔符连接而成。
[0084] 具体地,若测试案例的数据行中包括数组结构类型数据,则获取数据行中对应的 数组结构类型数据的具体步骤如图4所示。
[0085]步骤401,获取第N个数组成员的节点的数据。
[0086] 本实施例中,第一个数组成员节点的数据即为此数组的所有叶子节点数据。如上 XML报文数据例子所示,数组结构类型输入域AC⑶UNT第一个数组成员的XML报文数据为〈 ACCOUNT〉
[0087] <NUMBER>0201014210002434</NUMBER>
[0088] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0089] 〈/ACCOUNT〉,此数组成员所有叶子节点数据为0201014210002434,CN。
[0090] 步骤402,判断是否具有其他数组成员,若是,则N+1,执行步骤401,若否,则执行步 骤403。
[0091] 在上述举例中,判断具有其他数组成员,第二个数组成员的XML报文数据为〈 ACCOUNT〉
[0092] <NUMBER>0201014210002442</NUMBER>
[0093] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0094] 〈/ACCOUNT〉,此数组成员所有叶子节点数据为0201014210002442,CN。
[0095] 步骤403,将数组成员节点的所有成员的数据用第三预设分隔符连接。
[0096] 在上述举例中,将上述所有叶子节点数据用分隔符","连接,得到 0201014210002434,CN,0201014210002442,CN。
[0097] 步骤105,将标题行和所有的数据行写入文件,以获得测试案例存储文件。
[0098] 例如,包含两条测试案例数据行的测试案例文件可以为:
[0099] 0PERATI0NTYPE|PRODUCTID|C0NTR0L_DATA.SEQ_N01C0NTR0L_DATA. BRANCH. NAME C0NTR0L_DATA. BRANCH. CODE|[ACCOUNT{NUMBER,BANK_C0UNTRY}]
[0100] 5441011 54411 29553423011 北京西客站支行
[0101] 12011[0201014210002411,CN,0201014210002435,CN]
[0102] 5441011 54411 2955342302 | 北京西直门支行
[0103] 12011[0201014210002422,CN,0201014210003222,CN]
[0104] 步骤106,从测试案例存储文件中读取标题行和数据行。
[0105] 步骤107,确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每 个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包 括:原子结构类型报文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节 点。
[0106] 如在标题行和第一个数据行中,原子结构类型输入域
[0107] 0PERATI0NTYPE对应数据为544101,拼装成XML报文为
[0108] 〈0PERATI0NTYPE>544101〈/0PERATI0NTYPE>;原子结构类型输入域
[0109] PR0DUCTID的对应的数据为5441,拼装成XML报文为
[0110] <PR0DUCTID>5441〈/PR0DUCTID>;复杂自定义数据类型输入域
[0111] C0NTR0L_DATA 的标题为
[0112] C0NTR0L_DATA.SEQ_N0|C0NTR0L_DATA.
[0113] BRANCH· NAME I C0NTR0L_DATA· BRANCH· CODE,数据为
[0114] 2955342349 112011北京西客站支行,拼装成XML报文为
[0116]进一步地,本实施例中,若确定标题行中某输入域的结构类型为数组结构类型,将 数组结构类型标题和对应的数据行的数据,拼接成XML格式报文节点具体包括:
[0117]根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类型的数据 按照数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的XML报文;
[0118]将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
[0119] 具体地。根据数组结构类型将数组结构类型的输入域标题和对应的数据行的数 据,拼装成XML格式报文节点具体步骤如图5所示。
[0120] 步骤501,根据数组结构类型的标题得到数组成员的数据成员个数X。
[0121] 如上所示的标题行和第一个数据行,数组结构类型输入域AC⑶UNT的标题为 [ACCOUNT{NUMBER,BANK_COUNTRY}],数据为0201014210002434,CN, 0201014210002435,CN。 数组成员节点为NUMBER和BANK_C0UNTRY,个数为2。
[0122] 步骤502,将数组结构类型的数据按照此个数分成y组,y等于数据总数除以X。
[0123] 如上所示数据0201014210002434,CN, 0201014210002435,CN,数据个数为4,4除以 2 等于 2,所以分成两组,分别为:0201014210002434, CN 和0201014210002435,CN。
[0124] 步骤503,每组数据结合标题拼装成一个数组成员的XML格式报文节点。
[0125] 如上所示,第一组数据0201014210002434,CN结合标题
[0126] ACCOUNT{NUMBER,BANK_COUNTRY},拼装成XML格式报文节点
[0127] 〈ACCOUNT〉
[0128] <NUMBER>0201014210002434</NUMBER>
[0129] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0130] 〈/ACCOUNT〉;
[0131] 第二组数据0201014210002435,CN 结合标题
[0132] ACCOUNT{NUMBER,BANK_COUNTRY},拼装成XML格式报文节点
[0133] 〈ACCOUNT〉
[0134] <NUMBER>0201014210002442</NUMBER>
[0135] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0136] 〈/ACCOUNT〉。
[0137] 步骤504,所有数组成员的XML格式报文节点组成数组结构类型的XML报文节点。
[0138] 如上所示两个数组成员的XML格式报文节点组成数组结构类型的XML报文节点:
[0139] 〈ACCOUNT〉
[0140] <NUMBER>0201014210002434</NUMBER>
[0141] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0142] 〈
/ACCOUNT〉
[0143] 〈ACCOUNT〉
[0144] <NUMBER>0201014210002442</NUMBER>
[0145] <BANK_COUNTRY>CN</BANK_COUNTRY>
[0146] 〈/ACCOUNT〉。
[0147] 步骤108,将所有的XML格式报文节点组合生成测试案例的报文。
[0148] 如上述举例中,将所有的XML格式报文节点组合生成测试案例的报文可表示为:
[0150]本实施例提供的XML格式的接口测试案例报文的生成方法,通过获取应用程序接 口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构,请求报文模板的结 构包括:请求报文模板中所有节点的输入域、每个输入域结构类型;确定请求报文模板中每 个根节点对应的输入域结构类型,生成相应的输入域标题,每个根节点对应的输入域结构 类型包括原子结构类型或复杂自定义结构类型或数组结构类型;将所有的输入域标题使用 第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按照请求报 文模板的结构输入的对应的应用程序接口的多个测试案例的数据行,每个测试案例的数据 行中包括输入的数据及连接输入的数据的与标题行对应的预设分隔符;将标题行和所有的 数据行写入文件,以获得测试案例存储文件;从测试案例存储文件中读取标题行和数据行; 确定标题行中每个输入域的结构类型,根据每个输入域的结构类型将每个输入域标题和对 应的数据行的数据,拼装成XML格式报文节点;拼装成的XML报文节点包括:原子结构类型报 文节点和/或复杂自定义结构类型报文节点和/或数组结构类型报文节点;将所有的XML格 式报文节点组合生成测试案例的报文。对XML数据报文的应用程序接口的测试案例存储方 法进行了优化,实现将结构化的XML报文模板以及数据存储为扁平的测试案例文件,支持数 组结构类型、自定义复杂结构类型,报文拼装的时候不需要请求报文模板的结构信息,提高 了测试案例报文的生成效率。
[0151] 优选地,本发明的方法还支持含有数据类型、数组结构类型元素个数范围的报文 模板。
[0152] 具体地,本实施例中,若确定某根节点对应的输入域结构类型为数组结构类型,则 生成对应的输入域标题还包括:
[0153] 在数组结构类型输入域名前添加数组结构类型的元素个数的最小预设个数和最 大预设个数,将最小预设个数和最大预设个数采用第三预设分隔符连接,并采用第一预设 括号将采用第三预设分隔符连接后的最小预设个数和最大预设个数括起。
[0154] 在标题行中每个输入域类型的标题的开始位置还包括输入域的数据类型,输入域 的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
[0155] 举例说明,应用程序的接口的请求报文模板为:
[0158] 对应此请求报文模板,生成案例文件的标题行为:{string}0PERATI0NTYro {integer}PR0DUCTID|{string}C0NTR0L_DATA.SEQ_N0|{string}C0NTR0L_DATA.
[0159] BRANCH.NAME|{string}C0NTR0L_DATA.BRANCH.CODE|[{1,10}ACCOUNT{{string} NUMBER,{string}BANK_COUNTRY}]。
[0160] 其中{1,10}表示数组结构类型输入域ACXOUNT的元素个数大于等于1,小于等于 lOdstring}表示输入域数据类型为字符串,{integer}表示输入域的数据类型为整型。
[0161] 进一步地,在步骤107中根据每个输入域的结构类型将每个输入域标题和对应的 数据行的数据,拼装成XML格式报文节点时,对数据类型校验,用于校验输入域的数据是否 与数据类型相符。
[0162] 举例来说,某输入域的数据类型标题为{integer}PR0DUCTID,数据为"abc",因为 abc不是整型(integer),所以此数据无法通过校验。
[0163] 对应本发明的方法的具体实施例,本发明还提出一种XML格式的接口测试案例报 文的生成装置。
[0164] 图6为本发明XML格式的接口测试案例报文的生成装置的结构示意图。如图6所示, 本实施例提供的装置包括:获取模块601,生成模块602,获得模块603,写入模块604,读取模 块605,拼装模块606。
[0165] 其中,获取模块601,用于获取应用程序接口的XML格式的请求报文模板,所述请求 报文模板包括所述请求报文模板的结构,所述请求报文模板的结构包括:所述请求报文模 板中所有节点的输入域、每个输入域结构类型。生成模块602,用于确定所述请求报文模板 中每个根节点对应的输入域结构类型,生成相应的输入域标题,所述每个根节点对应的输 入域结构类型包括原子结构类型或复杂自定义结构类型或数组结构类型。获得模块603,用 于将所有的所述输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案 例的标题行。所述获取模块601,还用于获取用户按照所述请求报文模板的结构输入的对应 的应用程序接口的多个测试案例的数据行,所述每个测试案例的数据行中包括输入的数据 及连接所述输入的数据的与标题行对应的预设分隔符。写入模块604,用于将所述标题行和 所有的数据行写入文件,以获得测试案例存储文件。读取模块605,用于从测试案例存储文 件中读取标题行和数据行。拼装模块606,用于确定所述标题行中每个输入域的结构类型, 根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报 文节点;所述拼装成的XML报文节点包括:原子结构类型报文节点和/或复杂自定义结构类 型报文节点和/或数组结构类型报文节点。所述生成模块602,还用于将所有的所述XML格式 报文节点组合生成测试案例的报文。
[0166] 本实施例的装置可以执行图1所示方法实施例的技术方案,其实现原理和技术效 果类似,此处不再赘述。
[0167] 进一步地,生成模块602具体用于:以原子结构类型的输入域的XML节点名表示对 应的输入域标题。
[0168] 或者,生成模块602具体用于:将复杂自定义结构类型的输入域的根节点的所有叶 子节点的标题使用所述第一预设分隔符拼接,生成对应的输入域标题;其中,所述叶子节点 的标题由所述叶子节点的由远及近的所有上级节点名及所述叶子节点使用第二预设分隔 符拼接而成。
[0169] 或者,生成模块602具体用于:确定数组结构类型输入域的所有叶子节点的标题; 将所述所有叶子节点的标题用第三预设分隔符连接,并在最前的叶子节点的标题前端和最 后的叶子节点的标题后端采用第一预设括号括起;在第一预设括号的左括号的前端添加数 组结构类型输入域名,并在数组结构类型输入域名前端和第一预设括号右括号的后端采用 第二预设括号括起。
[0170] 进一步地,生成模块602,还用于:在数组结构类型输入域名前添加所述数组结构 类型的数组成员个数的最小预设个数和最大预设个数,将最小预设个数和最大预设个数采 用第三预设分隔符连接,并采用第一预设括号将采用第三预设分隔符连接后的最小预设个 数和最大预设个数括起。
[0171] 进一步地,若测试案例的数据行中包括数组结构类型数据,则所述数据行中对应 的数组结构类型数据包括所有数组成员节点的数据,所述数组成员节点的数据由数组节点 的所有叶子节点数据用第三预设分隔符连接而成。
[0172] 进一步地,拼接模块606,具体用于:若确定所述标题行中某输入域的结构类型为 数组结构类型,则根据数组结构类型的标题得到数组成员的数据成员个数,将数组结构类 型的数据按照所述数据成员个数分成若干组,每组数据结合标题拼装成一个数组成员的 XML报文;将所有数组成员的XML报文组合,生成数组结构类型的XML报文节点。
[0173] 可选地,本实施例中,所述标题行中每个输入域类型的标题的开始位置还包括输 入域的数据类型,所述输入域的数据类型包括一下任意一种或多种:字符型、整型、浮点型。
[0174] 进一步地,本实施例可以执行图2-图5所示方法实施例的技术方案,其实现原理和 技术效果类似,此处不再赘述。
[0175] 最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽 管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依 然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进 行等同
替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术 方案的范围。
【主权项】
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任一项所述的装置,其特征在于,所述标题行中每个输入域类型 的标题的开始位置还包括输入域的数据类型,所述输入域的数据类型包括一下任意一种或 多种:字符型、整型、浮点型。
【专利摘要】本发明提供了一种XML格式的接口测试案例报文的生成方法和装置,该方法包括:获取应用程序接口的XML格式的请求报文模板,请求报文模板包括请求报文模板的结构;确定请求报文模板中每个根节点对应的输入域结构类型,生成相应的输入域标题;将所有的输入域标题使用第一预设分隔符连接获得对应的应用程序接口的测试案例的标题行;获取用户按照请求报文模板的结构输入的对应的应用程序接口的多个测试案例的数据行;将标题行和所有的数据行写入文件;从测试案例存储文件中读取标题行和数据行;根据每个输入域的结构类型将每个输入域标题和对应的数据行的数据,拼装成XML格式报文节点;将所有的XML格式报文节点组合生成测试案例的报文。
【IPC分类】G06F17/22
【公开号】CN105488014
【申请号】CN201510850267
【发明人】张达, 陈绍英
【申请人】中国民生银行股份有限公司
【公开日】2016年4月13日
【申请日】2015年11月27日