测试用例生成方法、装置、计算机设备和存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种用于接口测试的测试用例生成方法、装置、计算机设备和存储介质。
背景技术
目前,为了保证数据处理***的正常运行,需要针对***的数据接口进行测试,主要是测试外部***与本地***之间、以及本地***各个子***之间的交互点,检测数据的交互、传递、控制管理过程、以及***之间的逻辑依赖关系是否存在错误。例如,在某个用户***进行用户注册中,需要调用注册接口处理用户请求注册的账户名称。如果注册接口设计错误,可能会发生注册失败的问题。
目前的接口测试方法中,主要是由接口测试人员针对数据接口设计多个测试用例。例如,不同字符长度的账户名称、不同数值的输入值等。
然而,随着数据处理***的复杂程度不断上升,数据接口会经常发生更新,每次更新都需要测试人员重新设计测试用例,耗费大量的人力和时间,严重影响接口测试的效率。
因此,现有技术的测试用例生成方法存在着测试效率较低的问题。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提升接口测试的测试效率的测试用例方法、装置、计算机设备和存储介质。
一种用于接口测试的测试用例生成方法,包括:
获取接口报文;
解析所述接口报文,得到边界值;
根据所述边界值获取测试值;
生成所述测试值对应的期望结果;
生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
在一个实施例中,所述根据所述边界值获取测试值,包括:
生成界内测试值和界外测试值;所述界内测试值符合所述边界值;所述界外测试值不符合所述边界值;
将所述界内测试值和所述界外测试值,作为所述测试值。
在一个实施例中,所述生成所述测试值对应的期望结果,包括:
生成所述界内测试值的期望成功结果;
生成所述界外测试值的期望失败结果;
将所述期望成功结果和所述期望失败结果,作为所述期望结果。
在一个实施例中,在所述根据所述边界值,获取测试值之前,还包括:
在所述接口报文中提取接口类型,并确定所述接口类型对应的取值类型;
所述生成界内测试值和界外测试值,包括:
确定在所述边界值之内的界内可取值,以及,确定在所述边界值之外的界外可取值;
确定与所述取值类型匹配的目标界内可取值,以及,确定与所述取值类型匹配的目标界外可取值;
在所述目标界内可取值中选取所述界内测试值,以及,在所述目标界外可取值中选取所述界外测试值。
在一个实施例中,所述生成接口测试用例,包括:
将所述测试值和所述期望结果添加至预设的用例模板,得到所述接口测试用例。
在一个实施例中,还包括:
输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;
判断所述实际结果与所述期望结果是否相同;
若是,则判定所述测试接口正常;
若否,则判定所述测试接口异常。
一种测试用例生成装置,包括:
报文获取模块,用于获取接口报文;
报文解析模块,用于解析所述接口报文,得到边界值;
测试值模块,用于根据所述边界值获取测试值;
结果生成模块,用于生成所述测试值对应的期望结果;
用例生成模块,用于根据所述测试值和所述期望结果,生成接口测试用例。
在一个实施例中,还包括:
输入模块,用于输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;
判断模块,用于判断所述实际结果与所述期望结果是否相同;
正常判定模块,用于判定所述测试接口正常;
异常判定模块,用于判定所述测试接口异常。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取接口报文;
解析所述接口报文,得到边界值;
根据所述边界值获取测试值;
生成所述测试值对应的期望结果;
生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取接口报文;
解析所述接口报文,得到边界值;
根据所述边界值获取测试值;
生成所述测试值对应的期望结果;
生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
上述用例生成方法、装置、计算机设备和存储介质,通过在接口报文中解析出边界值,根据边界值获取测试值,并生成与该测试值对应的期望结果,由此采用测试值和期望结果生成接口测试用例,实现了自动生成批量的接口测试用例,即使数据接口经常发生更新,也无须测试人员重新设计测试用例,节省人力和时间,提升了数据接口的测试效率。
而且,批量的接口测试用例具有较高的用例覆盖率,可以针对极端的用例情况进行测试,从而更准确地测试数据接口的异常,提升了数据接口的测试准确率。
附图说明
图1是一个实施例的一种测试用例生成方法的流程示意图;
图2是一个实施例的一种测试用例生成装置的结构框图;
图3是一个实施例的一种计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1是一个实施例的一种测试用例生成方法,所述方法用于测试接口,包括以下步骤:
步骤S110,获取接口报文。
其中,接口报文可以为具有标准报文格式的报文。例如,JSON(JavaScript ObjectNotation,JS对象简谱)格式的报文。
需要说明的是,本申请实施例的测试用例生成方法可以应用在测试服务器上。测试服务器用于生成测试用例。测试服务器可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
具体实现中,可以根据将要测试的数据接口获取到接口报文,将该接口报文输入至测试服务器,由此测试服务器获取到接口报文。
例如,获取到的接口报文为{“username”:“string”:“0”:“100”,“userid”:“integer”:“0”:“20”}。
步骤S120,解析所述接口报文,得到边界值。
其中,边界值可以为数据接口对输入值限制的最小、最大阈值。例如,注册接口的最小、最大阈值为[0,20]个字符,该注册接口只能输入0-20字符之内的账户名称。
具体实现中,测试服务器可以在接口报文中解析出一个或多个接口参数,接口参数中可以包含有边界值。
例如,解析接口报文{“username”:“string”:“0”:“100”,“userid”:“integer”:“0”:“20”},得到两个接口参数,接口参数01为[“username”:“string”:“0”:“100”],接口参数02为[“integer”:“0”:“20”]。其中,接口参数01的边界值为[0,100],接口参数02的边界值为[0,20]。
步骤S130,根据所述边界值获取测试值。
其中,测试值可以为用于测试数据接口的数值。
具体实现中,测试服务器可以根据边界值,确定在边界值之内的可取值,以及,确定边界值之外的可取值,从边界值之内的可取值中选取若干个值,从边界值之外的可取值选取若干个值,将边界值之内和边界值之外所选取的值作为上述的测试值。
例如,边界值为[0,100],最小边界值为0,可以取小于0的数值,如-5;最大边界值为100,可以取大于100的数值,如150;可以取在边界值之内的可取值,如40、60等。由此,得到-5、150、40和60作为测试值。
步骤S140,生成所述测试值对应的期望结果。
其中,期望结果可以为将测试值输入数据接口后期望数据接口应该返回的结果。
具体实现中,可以针对各个测试值生成对应的测试结果,作为期望结果。例如,对于边界值之内测试值“50”,对应的期望结果为期望成功结果;对于边界值之外测试值“-5”,对应的期望结果为期望失败结果。
步骤S150,生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
具体实现中,可以将测试值和对应的期望结果添加至预设的用例模板,形成多个接口测试用例。
根据本申请实施例提供的技术方案,通过在接口报文中解析出边界值,根据边界值获取测试值,并生成与该测试值对应的期望结果,由此采用测试值和期望结果生成接口测试用例,实现了自动生成批量的接口测试用例,即使数据接口经常发生更新,也无须测试人员重新设计测试用例,节省人力和时间,提升了数据接口的测试效率。
而且,批量的接口测试用例具有较高的用例覆盖率,可以针对极端的用例情况进行测试,从而更准确地测试数据接口的异常,提升了数据接口的测试准确率。
在另一个实施例中,所述步骤S130,包括:
生成界内测试值和界外测试值;所述界内测试值符合所述边界值;所述界外测试值不符合所述边界值;将所述界内测试值和所述界外测试值,作为所述测试值。
例如,边界值为[0,100],最小边界值为0,最大边界值为100。符合边界值的取值范围为0至100之间的值,在符合边界值的取值范围内选取的值,作为界内测试值,例如,40、60;不符合边界值的取值范围为[-∞,0]和[100,﹢∞],在不符合边界值的取值范围内选取的值,作为界外测试值,例如,-5、150。
在另一个实施例中,在所述根据所述边界值,获取测试值之前,还包括:
在所述接口报文中提取接口类型,并确定所述接口类型对应的取值类型;
其中,取值类型可以为测试值的类型。例如,取值类型可以为整数型,也可以为字符串型。
具体实现中,在解析接口报文时,可以在接口报文所解析出的接口参数中,提取到取值类型。
例如,解析接口报文{“username”:“string”:“0”:“100”,“userid”:“integer”:“0”:“20”},得到两个接口参数,接口参数01为[“username”:“string”:“0”:“100”],接口参数02为[“integer”:“0”:“20”]。其中,接口参数01的取值类型为string,即字符串型。接口参数02的取值类型为integer,即整数型。
所述生成界内测试值和界外测试值,包括:
确定在所述边界值之内的界内可取值,以及,确定在所述边界值之外的界外可取值;确定与所述取值类型匹配的目标界内可取值,以及,确定与所述取值类型匹配的目标界外可取值;在所述目标界内可取值中选取所述界内测试值,以及,在所述目标界外可取值中选取所述界外测试值。
具体实现中,确定取值类型之后,可以在界内可取值中确定与取值类型匹配的目标界内可取值,在界外可取值中确定与取值类型匹配的目标界外可取值。例如,边界值[0,20]的界内可取值是0至20的任意数值,取值类型为整数型,因此,边界值[0,20]的目标界内可取值是0至20的任意整数值,如10、15等。
确定目标界内可取值和目标界外可取值之后,可以分别在其中随机选取数值,作为界内测试值和界外测试值。
在另一个实施例中,所述生成所述测试值对应的期望结果,包括:
生成所述界内测试值的期望成功结果;生成所述界外测试值的期望失败结果;将所述期望成功结果和所述期望失败结果,作为所述期望结果。
其中,期望结果可以采用自定义格式,例如,定义期望成功结果为CMB00001,定义期望失败结果为CMB00002。
具体实现中,针对界内测试值,可以生成期望成功结果,作为对应的期望结果。针对界外测试值,可以生成期望失败结果,作为对应的期望结果。例如,针对界内测试值“-5”,生成CMB00002,作为对应的期望结果。
实际应用中,多个测试值对应的期望结果,可以形成一个结果集。
在另一个实施例中,所述步骤S150,包括:
将所述测试值和所述期望结果添加至预设的用例模板,得到所述接口测试用例。
实际应用中,可以将测试值、期望结果形成的结果集输入至AICDS(AutomationInterface Case Design System,自动接口用例设计***),由AICDS将测试值及其对应的期望结果添加至用例模板,批量生成接口测试用例。
在另一个实施例中,还包括:
输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;判断所述实际结果与所述期望结果是否相同;若是,则判定所述测试接口正常;若否,则判定所述测试接口异常。
其中,测试接口可以为待测试的数据接口。
其中,实际结果可以为测试接口针对测试值实际返回的测试结果。
具体实现中,测试服务器可以将接口测试用例输入至测试接口,结合自动化测试框架,可以实现数据接口的自动测试。测试接口可以针对接口测试用例中的测试值返回处理结果,作为实际结果。测试服务器可以将实际结果与测试值对应的期望结果进行比较,若两者相同,表明该测试接口针对测试值返回的测试结果符合预期,不存在异常。若两者不同,表明该测试接口针对测试值返回的测试结果不符合预期,测试接口可能存在设计错误等异常情况。
根据本申请实施例提供的技术方案,基于自动生成的批量接口测试用例进行接口测试,根据测试接口的实际结果与期望结果的比较结果,判断测试接口是否存在异常,整个接口测试过程无须人工干预,即可快速地获取到测试接口的测试结果,进一步提升了接口测试的测试效率。
应该理解的是,虽然图1的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图2所示,提供了一种测试用例生成装置,包括:报文获取模块210、报文解析模块220、测试值模块230、结果生成模块240和用例生成模块250,其中:
报文获取模块210,用于获取接口报文;
报文解析模块220,用于解析所述接口报文,得到边界值;
测试值模块230,用于根据所述边界值获取测试值;
结果生成模块240,用于生成所述测试值对应的期望结果;
用例生成模块250,用于根据所述测试值和所述期望结果,生成接口测试用例。
根据本申请实施例提供的技术方案,通过在接口报文中解析出边界值,根据边界值获取测试值,并生成与该测试值对应的期望结果,由此采用测试值和期望结果生成接口测试用例,实现了自动生成批量的接口测试用例,即使数据接口经常发生更新,也无须测试人员重新设计测试用例,节省人力和时间,提升了数据接口的测试效率。
而且,批量的接口测试用例具有较高的用例覆盖率,可以针对极端的用例情况进行测试,从而更准确地测试数据接口的异常,提升了数据接口的测试准确率。
在另一个实施例中,所述测试值模块230,包括:
测试值生成子模块,用于生成界内测试值和界外测试值;所述界内测试值符合所述边界值;所述界外测试值不符合所述边界值;
测试值组合子模块,用于将所述界内测试值和所述界外测试值,作为所述测试值。
在另一个实施例中,所述结果生成模块240,包括:
成功结果子模块,用于生成所述界内测试值的期望成功结果;
失败结果子模块,用于生成所述界外测试值的期望失败结果;
结果集子模块,用于将所述期望成功结果和所述期望失败结果,作为所述期望结果。
在另一个实施例中,还包括:
类型确定模块,用于在所述接口报文中提取接口类型,并确定所述接口类型对应的取值类型;
所述测试值生成子模块,包括:
可取值单元,用于确定在所述边界值之内的界内可取值,以及,确定在所述边界值之外的界外可取值;
目标确定单元,用于确定与所述取值类型匹配的目标界内可取值,以及,确定与所述取值类型匹配的目标界外可取值;
测试值选取单元,用于在所述目标界内可取值中选取所述界内测试值,以及,在所述目标界外可取值中选取所述界外测试值。
在另一个实施例中,所述用例生成模块250,包括:
模板添加子模块,用于将所述测试值和所述期望结果添加至预设的用例模板,得到所述接口测试用例。
在另一个实施例中,还包括:
输入模块,用于输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;
判断模块,用于判断所述实际结果与所述期望结果是否相同;
正常判定模块,用于判定所述测试接口正常;
异常判定模块,用于判定所述测试接口异常。
根据本申请实施例提供的技术方案,基于自动生成的批量接口测试用例进行接口测试,根据测试接口的实际结果与期望结果的比较结果,判断测试接口是否存在异常,整个接口测试过程无须人工干预,即可快速地获取到测试接口的测试结果,进一步提升了接口测试的测试效率。
关于测试用例生成装置的具体限定可以参见上文中对于测试用例生成方法的限定,在此不再赘述。上述测试用例生成装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图3所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***、计算机程序和数据库。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的数据库用于存储接口报文、边界值、测试值、期望结果、实际结果、接口测试用例等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种测试用例生成方法。
本领域技术人员可以理解,图3中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:
获取接口报文;
解析所述接口报文,得到边界值;
根据所述边界值获取测试值;
生成所述测试值对应的期望结果;
生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
生成界内测试值和界外测试值;所述界内测试值符合所述边界值;所述界外测试值不符合所述边界值;
将所述界内测试值和所述界外测试值,作为所述测试值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
生成所述界内测试值的期望成功结果;
生成所述界外测试值的期望失败结果;
将所述期望成功结果和所述期望失败结果,作为所述期望结果。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
在所述接口报文中提取接口类型,并确定所述接口类型对应的取值类型;
所述生成界内测试值和界外测试值,包括:
确定在所述边界值之内的界内可取值,以及,确定在所述边界值之外的界外可取值;
确定与所述取值类型匹配的目标界内可取值,以及,确定与所述取值类型匹配的目标界外可取值;
在所述目标界内可取值中选取所述界内测试值,以及,在所述目标界外可取值中选取所述界外测试值。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
将所述测试值和所述期望结果添加至预设的用例模板,得到所述接口测试用例。
在一个实施例中,处理器执行计算机程序时还实现以下步骤:
输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;
判断所述实际结果与所述期望结果是否相同;
若是,则判定所述测试接口正常;
若否,则判定所述测试接口异常。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
获取接口报文;
解析所述接口报文,得到边界值;
根据所述边界值获取测试值;
生成所述测试值对应的期望结果;
生成接口测试用例;所述接口测试用例包括所述测试值和所述期望结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
生成界内测试值和界外测试值;所述界内测试值符合所述边界值;所述界外测试值不符合所述边界值;
将所述界内测试值和所述界外测试值,作为所述测试值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
生成所述界内测试值的期望成功结果;
生成所述界外测试值的期望失败结果;
将所述期望成功结果和所述期望失败结果,作为所述期望结果。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
在所述接口报文中提取接口类型,并确定所述接口类型对应的取值类型;
确定在所述边界值之内的界内可取值,以及,确定在所述边界值之外的界外可取值;
确定与所述取值类型匹配的目标界内可取值,以及,确定与所述取值类型匹配的目标界外可取值;
在所述目标界内可取值中选取所述界内测试值,以及,在所述目标界外可取值中选取所述界外测试值。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
将所述测试值和所述期望结果添加至预设的用例模板,得到所述接口测试用例。
在一个实施例中,计算机程序被处理器执行时还实现以下步骤:
输入所述接口测试用例至测试接口;所述测试接口用于根据所述接口测试用例返回实际结果;
判断所述实际结果与所述期望结果是否相同;
若是,则判定所述测试接口正常;
若否,则判定所述测试接口异常。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。