CN111078573A - 一种测试报文的生成方法及装置 - Google Patents
一种测试报文的生成方法及装置 Download PDFInfo
- Publication number
- CN111078573A CN111078573A CN201911349159.3A CN201911349159A CN111078573A CN 111078573 A CN111078573 A CN 111078573A CN 201911349159 A CN201911349159 A CN 201911349159A CN 111078573 A CN111078573 A CN 111078573A
- Authority
- CN
- China
- Prior art keywords
- parameter
- interface
- item
- path
- test
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
Abstract
本发明实施例提供一种测试报文的生成方法及装置,测试报文用于测试接口;所述方法包括:获取测试用例中记录的接口标识;从接口标识对应的接口资源中,获取接口参数项和参数路径项,接口参数项中包含一个以上参数的参数路径,参数路径项包括各参数路径对应的原始参数值;根据接口参数项中的参数路径,从测试用例中提取参数路径对应的实际参数值;根据各个参数路径对应的原始参数值和/或实际参数值,对接口参数项中各个参数路径对应的参数位置进行填充,生成测试报文。采用上述方法,相比于现有技术,本申请不需要调用测试用例修改,通过在接口资源中修改一次就可以完成大量测试用例参数的修改,节省了人力成本和时间成本。
Description
技术领域
本申请涉及金融科技(Fintech)的自动化测试技术领域,尤其涉及一种测试报文的生成方法及装置。
背景技术
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出更高的要求。在网络迅速发展的今天,已经实现可以通过计算机直接处理大部分金融业务,这种方式极大地节省了人力资源,又可以快速且准确的处理金融业务,提高了金融业务处理的精确性和实时性。
而计算机在处理金融业务的过程中,通常会涉及多个系统的系统间交互,以及各系统内部的子系统交互,就需要利用接口将系统之间连接以实现数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等;相应的在多系统间交互开发和应用系统开发时,需要验证接口的正确性和稳定性,以保证系统间正常交互。现有接口测试技术可以通过设置多项信息生成报文,使得HTTP请求中携带该报文,若最后该报文传递成功,则无接口异常,若系统报错,则出现接口异常;一般来说,一个报文的一种情况对应一个测试用例,如,{“idCardNo”:“”,“name”:“”,“city”:“深圳”}报文中含有三项参数,即:idCardNo、name、city,若该报文中有一个参数为空的情况,则对应三个测试用例,两个为空的情况则又对应三种测试用例,三个为空的情况又对应一种用例,还有参数不为空且错误的情况等,因此,当一个报文中的参数有多项时,则会相应的产生大量的测试用例,甚至复杂的报文会产生成千上万条测试用例;相应的,若对参数进行增加、减少或修改则可能需要对所有测试用例分别进行修改,使得工作量巨大,周期长。
因此,现在亟需一种测试报文的生成方法及装置,可以降低测试用例修改的工作量,缩短工作周期。
发明内容
本发明实施例提供一种自动化测试方法及装置,解决现有技术中测试用例修改的工作量大,工作周期长的问题。
第一方面,本发明实施例提供一种测试报文的生成方法,所述测试报文用于测试接口;所述方法包括:获取测试用例中记录的接口标识;从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
采用上述方法,通过在测试用例中设置接口标识,再通过接口标识找到对应的接口资源,继而从接口资源中获取接口参数项和参数路径项,根据参数路径项获得各参数路径对应原始参数值,根据接口参数项中的参数路径从测试用例中获取实际参数值,最后根据原始参数值和实际参数值生成测试报文。相比于现有技术中增加、修改或减少参数信息需要对大量的测试用例进行改动来说,本申请若需要对测试用例中的参数进行修改、增加、删除等工作,可以直接在接口资源中修改,如此,不需要调用测试用例修改,通过在接口资源中修改一次就可以完成大量测试用例参数的修改,节省了人力成本和时间成本。
在一种可能的设计中,根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,包括:针对所述接口参数项中的每个参数路径,若所述测试用例中存在所述参数路径对应的实际参数值,则将所述参数路径对应的实际参数值填充至所述接口参数项中所述参数路径对应的参数位置;若所述测试用例中无所述参数路径对应的实际参数值,则将所述参数路径对应的原始参数值填充至所述接口参数项中所述参数路径对应的参数位置。
采用上述方法,接口参数项中包括各参数路径,可以通过参数路径获取测试用例中的实际参数值,将相应的实际参数值填充到接口参数项定义的该参数在报文中相应位置,若获取不到实际参数值,则将该参数对应的原始参数值填充到该参数对应的报文中相应位置中;由此,可以通过接口参数项提供参数在报文中对应的位置和空间,参数路径项和测试用例提供原始参数值和实际参数值,从而使得测试用例生成测试报文,如此,可以通过增加、减少或修改接口参数项和/或参数路径项实现对报文内容的修改。
在一种可能的设计中,所述接口资源通过以下方式生成,包括:获取所述接口标识对应的定义报文,所述定义报文中包括各定义参数项,每个定义参数项包括参数及原始参数值;针对每个定义参数项,确定所述定义参数项中的参数对应的参数路径;将所述参数路径和所述原始参数值构建为所述接口资源中的参数路径项;将所述参数和所述参数路径构建为所述接口资源中的接口参数项。
采用上述方法,定义报文包括定义参数项,定义参数项包括参数及原始参数值;通过定义参数项中的参数及原始参数值获取参数路径项中的参数路径和原始参数值,获取接口参数项中的参数与参数路径;由此得到接口资源,使得测试用例可以调取接口资源中的接口参数项和参数路径项的资源生成测试报文。如此,既可以对接口参数项和参数路径项的资源进行修改,生成修改后的测试报文,又可以保留定义报文中的原始内容。
在一种可能的设计中,确定所述定义参数项中的参数对应的参数路径,包括:根据有序Hashmap函数确定所述定义报文中的定义参数项,将所述定义参数项中的参数转化为参数路径。
采用上述方法,通过有序Hashmap函数将定义报文中的各定义参数项中的参数转化为参数路径,可以将定义报文中的各定义参数项有序的转化,得到有序的参数路径,有效防止发生测试用例运行调用无序参数路径而造成测试报文错误的情况。
在一种可能的设计中,所述测试用例通过如下方式获得,包括:针对所述测试用例中需要参数化的参数,确定所述参数在接口参数项中对应的参数路径;在所述测试用例中构建所述参数路径对应的实际参数值。
采用上述方法,得到接口资源中的接口参数项,和在测试用例中构建参数路径与实际参数值,从而可以使得实际参数值填充至接口参数项所定义的报文中的参数对应的位置与空间,从而得到测试报文。如此,实现接口参数项为测试用例中的对应参数值提供占位空间。
在一种可能的设计中,所述方法还包括:
接收接口资源更新指令;根据所述接口资源更新指令,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作。
采用上述方法,通过接收接口资源更新指令实现对接口资源的接口参数项和/或参数路径项更改,进而实现测试用例调用更改后的接口资源,得到更新后的测试报文。
在一种可能的设计中,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作,包括:在所述接口参数项中增加具有固定值的参数,且,在所述参数路径项中增加具有所述固定值的参数;或在所述参数路径项中删除所述参数;或在所述参数路径项中修改具有所述固定值的参数的原始参数值。
采用上述方法,通过在接口参数项中增加具有固定值的参数,且在参数路径项中增加具有固定值的参数,以此实现在原测试报文中加入固定值;通过在接口参数项中删除参数,且在参数路径项中删除参数,以此实现在原测试报文中减少相应参数信息;通过在参数路径项中修改具有所述固定值的参数的参数值,以此实现在原测试报文中修改相应参数信息。
第二方面,本发明实施例提供一种测试报文的生成装置,该装置包括:
获取模块,用于获取测试用例中记录的接口标识;还用于从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;
提取模块,用于根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;
处理模块,用于根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
在一种可能的设计中,所述处理模块具体用于:针对所述接口参数项中的每个参数路径,若所述测试用例中存在所述参数路径对应的实际参数值,则将所述参数路径对应的实际参数值填充至所述接口参数项中所述参数路径对应的参数位置;若所述测试用例中无所述参数路径对应的实际参数值,则将所述参数路径对应的原始参数值填充至所述接口参数项中所述参数路径对应的参数位置。
在一种可能的设计中,所述处理模块还用于:获取所述接口标识对应的定义报文,所述定义报文中包括各定义参数项,每个定义参数项包括参数及原始参数值;针对每个定义参数项,确定所述定义参数项中的参数对应的参数路径;将所述参数路径和所述原始参数值构建为所述接口资源中的参数路径项;将所述参数和所述参数路径构建为所述接口资源中的接口参数项。
在一种可能的设计中,所述处理模块还用于:
根据有序Hashmap函数确定所述定义报文中的定义参数项,将所述定义参数项中的参数转化为参数路径。
在一种可能的设计中,所述处理模块还用于:针对所述测试用例中需要参数化的参数,确定所述参数在接口参数项中对应的参数路径;在所述测试用例中构建所述参数路径对应的实际参数值。
在一种可能的设计中,所述处理模块还用于:接收接口资源更新指令;根据所述接口资源更新指令,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作。
在一种可能的设计中,所述处理模块还用于:在所述接口参数项中增加具有固定值的参数,且,在所述参数路径项中增加具有所述固定值的参数;或在所述接口参数项中删除参数,且,在所述参数路径项中删除所述参数;或在所述参数路径项中修改具有所述固定值的参数的原始参数值。
第三方面,本申请实施例还提供一种计算设备,包括:存储器,用于存储程序指令;处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行如第一方面的各种可能的设计中所述的方法。
第四方面,本申请实施例还提供一种计算机可读非易失性存储介质,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如第一方面的各种可能的设计中所述的方法。
本申请的这些实现方式或其他实现方式在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种测试报文的生成系统的架构示意图;
图2为本发明实施例提供的一种测试报文的生成方法的流程示意图;
图3为本发明实施例提供的一种接口资源更新的方法的流程示意图;
图4为本发明实施例提供的一种接口资源的生成方法的流程示意图;
图5为本发明实施例提供的一种HashMap数据结构示意图;
图6为本发明实施例提供的一种测试报文的生成方法的流程示意图;
图7为本发明实施例提供的一种测试报文的生成的装置示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
首先获取现有技术中的多个报文,例如:json报文{“idCardNo”:””,“name”:””,“city”:”深圳”}、{“sex”:””,“name”:””,“city”:”深圳”}、{“sex”:””,“name”:””,“city”:”上海”}等;通过图1中本发明实施例提供的一种测试报文生成的系统架构,在解析模块101中,将获取的定义报文转化得到参数路径;进而得到包括参数路径和原始参数值的参数路径项,以及包括参数与参数路径的接口参数项,并生成包括接口标识的接口资源,这里的每一个定义报文对应一个接口标识,存储在接口资源中,将所述接口资源存储在资源库102。测试模块103运行测试用例,测试用例生成需要参数化的参数,经过测试用例中的接口标识到资源库102中的接口资源中调取该接口标识对应的接口资源,根据测试用例中需要参数化的参数和接口资源中对应的参数路径项以及接口参数项生成测试报文,以此使得发送的请求中携带该测试报文,实现对接口的测试。
基于此,本申请实施例提供了一种测试报文的生成方法的流程,如图2所示,包括:
步骤201、获取测试用例中记录的接口标识;
此处,测试用例是用于测试系统组件间接口的测试工具,接口标识为测试用例中用于获取测试报文的引用条件。
步骤202、从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;
此处,接口标识对应的接口资源由定义报文得到,即,首先获取所述接口标识对应的定义报文,所述定义报文中包括各定义参数项,每个定义参数项包括参数及原始参数值;针对每个定义参数项,确定所述定义参数项中的参数对应的参数路径;将所述参数路径和所述原始参数值构建为所述接口资源中的参数路径项;将所述参数和所述参数路径构建为所述接口资源中的接口参数项。
其中,定义报文为定义了参数和原始参数值的报文,也可以说是现有的测试用例中的报文,定义报文中每项定义参数项包括了参数和原始参数值,例如:idCardNo定义参数项为{“idCardNo”:””},对应{参数项:原始参数值项}。可以根据有序Hashmap函数确定所述定义报文中的定义参数项,将所述定义参数项中的参数转化为参数路径;由此可以依照定义报文中各定义参数项的顺序,根据每个定义参数项中的参数确定对应的参数路径;即定义报文{“idCardNo”:””,“name”:””,”city”:”深圳”}中参数项“idCardNo”可以得到参数路径/idCardNo、参数项“name”可以得到参数路径/name、参数项“city”可以得到参数路径/city;通过定义参数项中参数对应的原始参数值得到参数路径对应的原始参数值,即””为&、””为&、””为深圳,进而得到包括参数路径和参数路径对应原始参数值的参数路径项,即/idCardNo=&、/name=&、/city=深圳;再将参数和参数路径构建为接口参数项,即“idCardNo”:”$/idCardNo$”、“name”:”$/name$”、“city”:”$/city$”。
由此得到包括接口标识、参数路径项、接口参数项的接口资源,如:
表1
如此,得到接口标识1对应的接口资源,可以在测试用例中加入<resourceid=”1”>使得该测试用例找到该接口资源,获取各接口参数项。
步骤203、根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;
此处,根据接口参数项中的参数路径从测试用例中提取实际参数值,也就是说,测试用例需要生成实际参数值。
由此,针对所述测试用例中需要参数化的参数,确定所述参数在接口参数项中对应的参数路径;在所述测试用例中构建所述参数路径对应的实际参数值;即,针对测试用例中需要参数化的参数,根据接口参数项中的参数路径构建参数路径对应的实际参数值。
如,<api idCardNo=”23022719980101****”>
<output>v_idCardNo</output>
</api>。
步骤204、根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
此处,针对所述接口参数项中的每个参数路径,若所述测试用例中存在所述参数路径对应的实际参数值,则将所述参数路径对应的实际参数值填充至所述接口参数项中所述参数路径对应的参数位置;
若所述测试用例中无所述参数路径对应的实际参数值,则将所述参数路径对应的原始参数值填充至所述接口参数项中所述参数路径对应的参数位置。
即,若测试用例中存在参数路径对应的实际参数值,对于测试用例中需要参数化的参数:idCardNo,测试用例中存在参数路径/idCardNo对应的实际参数值23022719980101****,如:
<api idCardNo=”23022719980101****”>
<output>v_idCardNo</output>
</api>。
<parameter>
<parameterPath>
/idCardNo
</parameterPath>
<parameterValue>
v_idCardNo
</parameterValue>
</parameter>
确定参数idCardNo在接口参数项中的参数路径,即在表1中idCardNo的参数路径对应为$/idCardNo$,再取出表1中参数路径项中的/idCardNo=&,通过=分割得到/idCardNo和空值,解析parameter节点信息,确定<parameterPath>中配置了/idCardNo,取需要参数化的参数的变量v_idCardNo的值23022719980101****替换$/idCardNo$,得到参数idCardNo在接口参数项中参数路径$/idCardNo$,对应的实际参数值23022719980101****,以此在测试用例中构建参数路径与实际参数值。
最后,如表1中,与接口参数项中{“idCardNo”:”$/idCardNo$”,“name”:”$/name$”,”city”:”$/city$”}各参数项位置对应的位置填充实际参数值,若name的实际参数值为明扬,若city的实际参数值为深圳,则最后测试报文为:23022719980101****,明扬,深圳。
若测试用例中不存在参数路径对应的实际参数值,若测试用例在运行过程中没有生成需要参数化的idCardNo所对应的实际参数值;即没有<api idCardNo=”23022719980101****”>
<output>v_idCardNo</output>
</api>。
对于测试用例中需要参数化的参数:idCardNo,如:
<parameter>
<parameterPath>
/idCardNo
</parameterPath>
<parameterValue>
v_idCardNo
</parameterValue>
</parameter>
确定参数idCardNo在接口参数项中参数路径,即在表1中idCardNo的参数路径对应为$/idCardNo$,再取出表1中参数路径项中的/idCardNo=&,通过=分割得到/idCardNo和空值,解析parameter节点信息,确定<parameterPath>中配置了/idCardNo,需要参数化的参数的变量v_idCardNo的值不存在,则将参数路径项中的/idCardNo=&分割得到的空值填充$/idCardNo$,得到参数idCardNo在接口参数项中参数路径$/idCardNo$,对应的原始参数值空值,以此在测试用例中构建参数与原始参数值。
最后,如表1中,与接口参数项中{“idCardNo”:”$/idCardNo$”,“name”:”$/name$”,”city”:”$/city$”}各参数项位置对应的位置填充实际参数值,若name的实际参数值为明扬,若city的实际参数值为深圳,则最后测试报文为:,明扬,深圳。
采用上述方法,通过在测试用例中设置接口标识,再通过接口标识找到对应的接口资源,继而从接口资源中获取接口参数项和参数路径项,根据参数路径项获得各参数路径对应原始参数值,根据接口参数项中的参数路径从测试用例中获取实际参数值,最后根据原始参数值和实际参数值生成测试报文。相比于现有技术中增加、修改或减少参数信息需要对大量的测试用例进行改动来说,本申请若需要对测试用例中的参数进行修改、增加、删除等工作,可以直接在接口资源中修改,如此,不需要调用测试用例修改,通过在接口资源中修改一次就可以完成大量测试用例参数的修改,节省了人力成本和时间成本。
本申请实施例还提供了一种接口资源更新的方法,如图3所示,包括:
步骤301、接收接口资源更新指令;
此处,接口资源更新指令为更改接口资源中参数信息的指令,如,增加性别参数,或减少身份证参数,或修改城市参数等。
步骤302、根据所述接口资源更新指令,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作。
包括:在所述接口参数项中增加具有固定值的参数,且在所述参数路径项中增加具有所述固定值的参数;其中,固定值参数为测试报文中可以固定的值,如:在开户场景下,用户均为深圳居民,则可以在测试报文中设定固定值‘深圳’。
基于表1中的接口资源,接收到接口资源中增加性别参数的接口资源更新指令,则得到更新后的接口资源如下:
表2
或在所述接口参数项中删除参数,且,在所述参数路径项中删除所述参数;即若要删除参数name,则将接口参数项中的name接口参数项删除,以及将参数路径项中的name参数路径项删除。
基于表1中的接口资源,接收到接口资源中删除姓名参数的接口资源更新指令,则得到更新后的接口资源如下:
表3
或在所述参数路径项中修改具有所述固定值的参数的参数值。
即若要将具有固定值的城市参数的原始参数值‘深圳’修改为‘上海’,则将参数路径项中的/city=深圳修改为/city=上海。
基于表1中的接口资源,接收到接口资源中修改城市参数的接口资源更新指令,则得到更新后的接口资源如下:
表4
需要说明的是,上述接口资源更新方式并不是唯一更新方式,如,删除参数还可以通过只删除接口参数项中的参数路径形式的参数值实现,这里接口资源更新方式具体不做限制。
基于上述测试报文的生成方法和接口资源更新方法,本申请实施例提供了一种接口资源的生成方法的流程,如图4所示,包括:
步骤401、获取定义报文;
此处,获取定义报文,如表1中定义报文:{“idCardNo”:””,“name”:””,”city”:”深圳”}
步骤402、将定义报文转化为有序的HashMap对象;
此处,根据有序Hashmap函数确定定义报文中的定义参数项:“idCardNo”:””、“name”:””、”city”:”深圳”,将定义报文转化为有序的HashMap数据,如图5所示,HashMap数据包括5个部分,501为HashMap数据的首部Header,502为idCardNo定义参数项转化后的节点,可以写作(Key->idCardNo,Value->””),503为name定义参数项转化后的节点,可以写作(Key->name,Value->””),504为city定义参数项转化后的节点,可以写作(Key->city,Value->”深圳”),505为空节点,表示HashMap数据结束。
步骤403、通过递归函数将参数转化为参数路径;
此处,将定义参数项中的参数转化为参数路径,此时,HashMap数据中501为HashMap数据的首部Header,502可以写作(Key->/idCardNo,Value->””),503可以写作(Key->/name,Value->””),504可以写作(Key->/city,Value->”深圳”),505HashMap数据结束。
步骤404、判断报文是否为HashMap形式;
此处,若不是HashMap数据形式;则执行步骤4041,继续判断该数据是否为数组数据;若不是数组数据,则为其它形式的数据,执行步骤410,直接记录参数路径为实际参数值,即:/idCardNo=&/name=&/city=深圳,将参数等于参数路径,即:{“idCardNo”:”$/idCardNo$”,“name”:”$/name$”,”city”:”$/city$”}。
若是数组则执行步骤4091,判断该数组中是否还存在下一个元素,若存在则执行步骤4092,将数组元素序号转为参数路径,如此循环,直至步骤4093数组元素遍历结束。例如:如果参数idCardNo项包含三组数据,即idCardNo:0、1、2,则第一次循环步骤402、步骤403、步骤404、步骤4041、步骤4091、步骤4092得到参数idCardNo第0数组的参数路径为/array/0/idCardNo、第二次循环步骤402、步骤403、步骤404、步骤4041、步骤4091、步骤4092得到参数idCardNo第1数组的参数路径为/array/1/idCardNo、第三次循环步骤402、步骤403、步骤404、步骤4041、步骤4091、步骤4092得到参数idCardNo第2数组的参数路径为/array/2/idCardNo、第四次循环步骤402、步骤403、步骤404、步骤4041、步骤4091不存在下一个元素,进行步骤4093遍历结束。
若是HashMap数据形式,则执行步骤405。
步骤405、迭代指针指向有序HashMap数据首部,即HashMap数据Header501。
步骤406、是否存在节点;
此处,判断HashMap数据Header501后是否存在节点,若不存在则执行步骤411,流程结束;若存在节点,则执行步骤407。
步骤407、记录参数路径。
此处,记录参数路径/idCardNo。
步骤408、原始参数值是否为HashMap数据形式;
此处,若原始参数值是HashMap数据形式,则执行步骤4081,记录原始参数值””;如此循环执行步骤403-408和4081,得到参数路径/idCardNo、/name、/city,和原始参数值””、””、深圳。执行最后一次轮询为轮询至HashMap数据最后空节点505,轮询结束。
步骤410、记录参数路径等于原始参数值,即:/idCardNo=&/name=&/city=深圳,将参数等于实际参数值,即:{“idCardNo”:”$/idCardNo$”,“name”:”$/name$”,”city”:”$/city$”}。
步骤411、接口资源生成结束。
基于上述测试报文的生成方法和接口资源生成方法,本申请实施例提供了一种测试报文的生成方法的流程,如图6所示,包括:
步骤601、生成测试用例;
此处,针对定义报文的定义参数项确定测试用例数量,例如,表1中定义报文:{“idCardNo”:””,“name”:””,”city”:”深圳”},一个测试用例可以为:
<?xml version='1.0'encoding='UTF-8'?>
<case id=”1”>
<api idCardNo=”2302271998********”>
<output>v_idCardNo</output>
</api>
<api name=”明扬”>
<output>v_name</output>
</api>
<api name=”发送HTTP请求”>
<resource id=”1”>
<parameter>
<parameterPath>
/idCardNo
</parameterPath>
<parameterValue>
v_idCardNo
</parameterValue>
</parameter>
<parameter>
<parameterPath>
/name
</parameterPath>
<parameterValue>
v_name
</parameterValue>
</parameter>
</resource>
</api>
</case>
包含了生成身份证信息和姓名信息的模块。
步骤602、生成接口资源;
此处,由图4中流程得到包含接口参数项、参数路径项和接口标识的接口资源如表1。
步骤603、运行测试时用例生成实际参数值;
此处,根据测试用例中<api idCardNo=”2302271998********”>
<output>v_idCardNo</output>
</api>
<api name=”明扬”>
<output>v_name</output>
</api>
接口可以随机生成身份证信息和姓名,如:身份证号2302271998********,姓名:明扬。
步骤604、根据接口标识获取接口资源;
此处,由测试用例中<resource id=”1”>可知,接口资源的接口标识为1,查找到待调用的接口资源为”1”。
步骤605、获取接口资源中接口参数项;
此处,由接口资源”1”得到接口参数项{“idCardNo”:”$/idCardNo$”,“name”:”$/name$”,”city”:”$/city$”}。
步骤606、获取接口资源中参数路径项;
由接口资源”1”得到参数路径项/idCardNo=&/name=&/city=深圳。
步骤607、生成测试报文并发送;
此处,解析测试用例中xml结果化描述中的参数化信息,也就是parameter节点,第一个parameter节点中parameterPath配置了/idCardNo,所以取变量v_idCardNo的值2302271998********替换$/idCardNo$部分,第二个parameter节点中parameterPath配置了/name,所以取变量v_name的值明扬替换$/name$部分,paramter参数节点信息中没有包含/city,所以用参数路径项中“深圳”填充替换$/city$部分。
最终得到测试报文是{“idCardNo”:”2302271998********”,”name”:”明扬”,“city”:”深圳”},令HTTP请求携带该测试报文并发送。
这里需要说明的是,上述执行步骤顺序并不是唯一顺序,如,执行步骤601、步骤602的执行顺序可以为先执行步骤602,再执行步骤601,具体不做限定。
基于同样的构思,本发明实施例提供一种测试报文生成的装置,图7为本申请实施例提供的一种测试报文生成的装置示意图,如图7示,包括:
获取模块701,用于获取测试用例中记录的接口标识;还用于从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;
提取模块702,用于根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;
处理模块703,用于根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
在一种可能的设计中,所述处理模块703具体用于:针对所述接口参数项中的每个参数路径,若所述测试用例中存在所述参数路径对应的实际参数值,则将所述参数路径对应的实际参数值填充至所述接口参数项中所述参数路径对应的参数位置;若所述测试用例中无所述参数路径对应的实际参数值,则将所述参数路径对应的原始参数值填充至所述接口参数项中所述参数路径对应的参数位置。
在一种可能的设计中,所述处理模块703还用于:获取所述接口标识对应的定义报文,所述定义报文中包括各定义参数项,每个定义参数项包括参数及原始参数值;针对每个定义参数项,确定所述定义参数项中的参数对应的参数路径;将所述参数路径和所述原始参数值构建为所述接口资源中的参数路径项;将所述参数和所述参数路径构建为所述接口资源中的接口参数项。
在一种可能的设计中,所述处理模块703还用于:
根据有序Hashmap函数确定所述定义报文中的定义参数项,将所述定义参数项中的参数转化为参数路径。
在一种可能的设计中,所述处理模块703还用于:针对所述测试用例中需要参数化的参数,确定所述参数在接口参数项中对应的参数路径;在所述测试用例中构建所述参数路径对应的实际参数值。
在一种可能的设计中,所述处理模块703还用于:接收接口资源更新指令;根据所述接口资源更新指令,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作。
在一种可能的设计中,所述处理模块703还用于:在所述接口参数项中增加具有固定值的参数,且,在所述参数路径项中增加具有所述固定值的参数;或在所述接口参数项中删除参数,且,在所述参数路径项中删除所述参数;或在所述参数路径项中修改具有所述固定值的参数的原始参数值。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (10)
1.一种测试报文的生成方法,其特征在于,所述测试报文用于测试接口;所述方法包括:
获取测试用例中记录的接口标识;
从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;
根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;
根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
2.如权利要求1所述的方法,其特征在于,根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,包括:
针对所述接口参数项中的每个参数路径,若所述测试用例中存在所述参数路径对应的实际参数值,则将所述参数路径对应的实际参数值填充至所述接口参数项中所述参数路径对应的参数位置;
若所述测试用例中无所述参数路径对应的实际参数值,则将所述参数路径对应的原始参数值填充至所述接口参数项中所述参数路径对应的参数位置。
3.如权利要求1所述的方法,其特征在于,所述接口资源通过以下方式生成,包括:
获取所述接口标识对应的定义报文,所述定义报文中包括各定义参数项,每个定义参数项包括参数及原始参数值;
针对每个定义参数项,确定所述定义参数项中的参数对应的参数路径;将所述参数路径和所述原始参数值构建为所述接口资源中的参数路径项;将所述参数和所述参数路径构建为所述接口资源中的接口参数项。
4.如权利要求3所述的方法,其特征在于,确定所述定义参数项中的参数对应的参数路径,包括:
根据有序Hashmap函数确定所述定义报文中的定义参数项,将所述定义参数项中的参数转化为参数路径。
5.如权利要求1至4任一项所述的方法,其特征在于,所述测试用例通过如下方式获得,包括:
针对所述测试用例中需要参数化的参数,确定所述参数在接口参数项中对应的参数路径;在所述测试用例中构建所述参数路径对应的实际参数值。
6.如权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
接收接口资源更新指令;
根据所述接口资源更新指令,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作。
7.如权利要求6所述的方法,其特征在于,对所述接口资源更新指令指示的接口资源中的接口参数项和/或参数路径项进行更改操作,包括:
在所述接口参数项中增加具有固定值的参数,且,在所述参数路径项中增加具有所述固定值的参数;或
在所述接口参数项中删除参数,且,在所述参数路径项中删除所述参数;或
在所述参数路径项中修改具有所述固定值的参数的原始参数值。
8.一种测试报文的生成装置,其特征在于,所述测试报文用于测试接口;所述装置包括:
获取模块,用于获取测试用例中记录的接口标识;还用于从所述接口标识对应的接口资源中,获取接口参数项和参数路径项,所述接口参数项中包含一个以上参数的参数路径,所述参数路径项包括各参数路径对应的原始参数值;
提取模块,用于根据所述接口参数项中的参数路径,从所述测试用例中提取所述参数路径对应的实际参数值;
处理模块,用于根据各个所述参数路径对应的所述原始参数值和/或所述实际参数值,对所述接口参数项中各个参数路径对应的参数位置进行填充,生成所述测试报文。
9.一种计算设备,其特征在于,包括:
存储器,用于存储程序指令;
处理器,用于调用所述存储器中存储的程序指令,按照获得的程序执行权利要求1至4和7任一项所述的方法。
10.一种计算机可读非易失性存储介质,其特征在于,包括计算机可读指令,当计算机读取并执行所述计算机可读指令时,使得计算机执行如权利要求1至4和7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349159.3A CN111078573A (zh) | 2019-12-24 | 2019-12-24 | 一种测试报文的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911349159.3A CN111078573A (zh) | 2019-12-24 | 2019-12-24 | 一种测试报文的生成方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111078573A true CN111078573A (zh) | 2020-04-28 |
Family
ID=70317303
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911349159.3A Pending CN111078573A (zh) | 2019-12-24 | 2019-12-24 | 一种测试报文的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111078573A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796578A (zh) * | 2020-06-29 | 2020-10-20 | 中国第一汽车股份有限公司 | 一种车用控制器测试方法、装置、系统和存储介质 |
CN112989762A (zh) * | 2021-03-24 | 2021-06-18 | 北京思特奇信息技术股份有限公司 | 一种基于Socket协议的复杂字符串模式匹配方法 |
CN114461302A (zh) * | 2022-02-09 | 2022-05-10 | 北京理房通支付科技有限公司 | 参数校验方法、校验模板的生成方法及存储介质 |
-
2019
- 2019-12-24 CN CN201911349159.3A patent/CN111078573A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111796578A (zh) * | 2020-06-29 | 2020-10-20 | 中国第一汽车股份有限公司 | 一种车用控制器测试方法、装置、系统和存储介质 |
CN112989762A (zh) * | 2021-03-24 | 2021-06-18 | 北京思特奇信息技术股份有限公司 | 一种基于Socket协议的复杂字符串模式匹配方法 |
CN112989762B (zh) * | 2021-03-24 | 2023-08-25 | 北京思特奇信息技术股份有限公司 | 一种基于Socket协议的复杂字符串模式匹配方法 |
CN114461302A (zh) * | 2022-02-09 | 2022-05-10 | 北京理房通支付科技有限公司 | 参数校验方法、校验模板的生成方法及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9639444B2 (en) | Architecture for end-to-end testing of long-running, multi-stage asynchronous data processing services | |
CN111078573A (zh) | 一种测试报文的生成方法及装置 | |
CN108628748B (zh) | 自动化测试管理方法和自动化测试管理系统 | |
CN112906206B (zh) | 数字孪生模型构建方法和装置 | |
CN112035363A (zh) | 接口自动化测试方法及装置 | |
CN111553652A (zh) | 业务处理方法及装置 | |
CN114398293A (zh) | 接口测试用例生成方法、电子设备和存储介质 | |
CN115599359A (zh) | 一种代码生成方法、装置、设备及介质 | |
CN111240772A (zh) | 一种基于区块链的数据处理方法、装置及存储介质 | |
CN114760369A (zh) | 一种协议元数据提取方法、装置、设备及存储介质 | |
CN112395339B (zh) | 系统间数据准入校验方法、装置、计算机设备和存储介质 | |
CN112559525B (zh) | 数据检查系统、方法、装置和服务器 | |
CN110598419A (zh) | 一种区块链客户端漏洞挖掘方法、装置、设备及存储介质 | |
CN113672375B (zh) | 资源分配预测方法、装置、设备及存储介质 | |
CN113360300A (zh) | 接口调用链路生成方法、装置、设备及可读存储介质 | |
CN113469377B (zh) | 联邦学习审计方法和装置 | |
CN115470152A (zh) | 测试代码生成方法、测试代码生成装置以及存储介质 | |
CN113434435A (zh) | 测试案例逻辑自动化生成方法及装置 | |
CN112685043A (zh) | 回调函数的异步转化方法、装置、设备及可读存储介质 | |
CN115480745B (zh) | 基于配置文件的代码生成方法及装置 | |
CN113792247B (zh) | 基于代码特征生成功能流程图的方法、装置、设备和介质 | |
CN114499759B (zh) | 报文生成方法、装置、电子设备及存储介质 | |
CN113568620B (zh) | 一种代码文件处理方法、装置、设备及介质 | |
CN113129049B (zh) | 用于模型训练和应用的文件配置方法和系统 | |
CN112905181A (zh) | 一种模型编译、运行方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |