用于测试接口的请求消息生成的方法及设备与流程

文档序号:11407031阅读:158来源:国知局
用于测试接口的请求消息生成的方法及设备与流程

本申请涉及计算机领域,尤其涉及一种用于测试接口的请求消息生成的方法及设备。



背景技术:

随着测试行业的发展,先后出现了功能测试、性能测试和自动化测试,目前,大部分平台的架构已经不再是传统的mvc结构,系统不断向着分布式、业务中心化和高可用性的方向发展,如今的系统架构纷繁复杂,系统间的接口庞杂繁多,传统的功能测试、性能测试和自动化测试已经难以满足系统发展的需求,迫切需要一种更加有效实用且可以持续进行的测试方式来保证系统的质量,传统的接口测试主要针对单个接口的测试,无法进行多个接口的联动测试以及无法传递前置接口的返回数据,不易测试和快速迭代。

目前,出现的postman,是能适应大部分业务场景,方便快捷的一个接口测试工具,整体架构思路的流程图如图1所示,首先配置登录接口参数,登录成功后从服务器获取sid(sessionid,会话的唯一标识)作为可靠会话标记,接着,手动复制sid到被测接口的消息头(headers)中,其他参数正常写入,发送请求,执行完毕后,获取接口返回数据并返回,查看接口返回数据是否为预期结果。上述架构,脚本通用型不强,比如模拟不同环境客户端的鉴权方式,来请求同一接口,每次都需要测试人员手动写入对应的大量参数,降低工作效率,严重影响工程进度,且不能引入外部库,比如项目针对自定义或不常见的加密方式,无法获得可通过验证的加密数据。

申请内容

本申请的一个目的是提供一种用于测试接口的请求消息生成的方法及设备,解决现有技术中需要手动配置过多参数、脚本通用性不强的问题。

根据本申请的一个方面,提供了一种用于测试接口的请求消息生成的方法,所述方法包括:

获取测试接口的配置文件;

根据所述配置文件获取所述测试接口对应的会话唯一标识;

根据预设的加密算法对所述配置文件进行加密,得到加密信息;

基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。

进一步地,根据所述配置文件获取所述测试接口对应的会话唯一标识,包括:

根据所述配置文件中的账号从本地数据库或从服务器缓存中获取所述测试接口对应的会话唯一标识。

进一步地,获取测试接口的配置文件,包括:

根据测试接口的测试请求确定传入参数,根据所述传入参数获取登录接口的配置文件。

进一步地,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息,包括:

根据所述传入参数及预设的参数加密算法确定加密后的接口参数;

基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。

进一步地,根据所述传入参数及预设的参数加密算法确定加密后的接口参数,包括:

根据所述传入参数确定与其关联的子参数;

根据预设的参数加密算法及所述关联的子参数确定加密后的接口参数。

进一步地,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息,包括:

根据所述传入参数确定与其关联的子参数,将确定的子参数作为接口参数;

基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

进一步地,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息之前,包括:

获取测试接口的统一资源定位符,并判断所述测试接口的统一资源定位符是否在处理后的统一资源定位符列表中;

若是,则从所述处理后的统一资源定位符列表中获取与所述测试接口关联的前置接口的统一资源定位符;

根据所述前置接口的统一资源定位符从所述前置接口中获取关键数据。

进一步地,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息,包括:

根据所述传入参数、从所述前置接口中获取的关键数据及预设的参数加密算法确定加密后的接口参数;

基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。

进一步地,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息,包括:

根据所述传入参数确定与其关联的子参数,将确定的子参数及从所述前置接口中获取的关键数据作为接口参数;

基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

根据本申请另一个方面,还提供了一种用于测试接口的请求消息生成的设备,所述设备包括:

获取装置,用于获取测试接口的配置文件;

读取装置,用于根据所述配置文件获取所述测试接口对应的会话唯一标识;

加密装置,用于根据预设的加密算法对所述配置文件进行加密,得到加密信息;

生成装置,用于基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。

进一步地,所述读取装置用于:

根据所述配置文件中的账号从本地数据库或从服务器缓存中获取所述测试接口对应的会话唯一标识。

进一步地,所述获取装置用于:

根据测试接口的测试请求确定传入参数,根据所述传入参数获取登录接口的配置文件。

进一步地,所述生成装置用于:

根据所述传入参数及预设的参数加密算法确定加密后的接口参数;

基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。

进一步地,所述生成装置用于:

根据所述传入参数确定与其关联的子参数;

根据预设的参数加密算法及所述关联的子参数确定加密后的接口参数。

进一步地,所述生成装置用于:

根据所述传入参数确定与其关联的子参数,将确定的子参数作为接口参数;

基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

进一步地,所述设备还包括:

判断装置,用于获取测试接口的统一资源定位符,并判断所述测试接口的统一资源定位符是否在处理后的统一资源定位符列表中;

确定装置,用于若是,则从所述处理后的统一资源定位符列表中获取与所述测试接口关联的前置接口的统一资源定位符;

关键数据获取装置,用于根据所述前置接口的统一资源定位符从所述前置接口中获取关键数据。

进一步地,所述生成装置用于:

根据所述传入参数、从所述前置接口中获取的关键数据及预设的参数加密算法确定加密后的接口参数;

基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。

进一步地,所述生成装置用于:

根据所述传入参数确定与其关联的子参数,将确定的子参数及从所述前置接口中获取的关键数据作为接口参数;

基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

与现有技术相比,本申请通过获取测试接口的配置文件;根据所述配置文件获取所述测试接口对应的会话唯一标识,用于识别用户,可以作为调用接口的合法凭证,保证服务器的安全;接着,根据预设的加密算法对所述配置文件进行加密,得到加密信息;基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。从而解决了脚本通用性不强的问题,具有高度灵活的分层的测试数据准备模式,使脚本在接收到执行命令后,无需手动配置过多参数,即可自动生成与之对应的参数集合,实现快速、方便的执行。进一步地,在会话唯一标识的有效期内可以从本地数据库的数据文件中读取会话唯一标识,也可以从服务器缓存中读取,从而减少调用登录接口,节省服务器资源。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1示出现有技术中接口测试的架构示意图;

图2示出本申请一实施例中高效分层服务器端的接口架构示意图;

图3示出根据本申请的一个方面提供的一种用于测试接口的请求消息生成的方法流程示意图;

图4示出本申请一实施例中实现测试数据准备的模块示意图;

图5示出本申请一实施例中获取关键数据的方法流程示意图;

图6示出根据本申请另一个方面提供的一种用于测试接口的请求消息生成的设备结构示意图。

附图中相同或相似的附图标记代表相同或相似的部件。

具体实施方式

下面结合附图对本申请作进一步详细描述。

在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

图2示出本申请一实施例中高效分层服务器端的接口架构示意图;首先运行脚本,载入环境、统一资源定位符(url)、端口名称、账号、请求参数、断言条件、结构化查询语句(sql语句);接着,载入配置文件,根据账号,取出本地文件存放的会话唯一标识(sid),载入加密模板生成加密信息,根据传入参数自动生成合法的消息头(header),请求接口后,通过分析服务器返回内容来判断接口是否正确处理该请求,若是,则取出消息体(body)内容,当传入sql语句时连接相应数据库,执行sql语句,返回查询结果加工为json格式,通过遍历键(key)的方式校验对应的值(value)是否正确,若正确,则测试通过,若失败,则输出本轮测试结果;当取出的body内容没有传入sql语句时,进入静态断言流程,通过断言条件判断结果是否符合业务要求,若是,则测试通过,若否,则测试失败,判断是否有其他未执行的用例,若有则读取下一用例进行测试。当调用的接口没有正确处理时,则判断sid是否过期,若已过期,则调用登录模块,根据环境,请求端生成登录用的参数、加密信息,若登录成功,则获取的sid以键值对形式存放本地文件,根据账号取出本地文件存放的sid,执行上述测试过程。当接口未正确处理且sid未过期时,取出报错信息若为预期结果,则测试成功。

通过图2所示的接口测试架构示意图,解决了脚本通用性不强的问题,通过对数据和模块的浅层封装、模板模式等设计,使脚本在接收到执行命令后,无需手动配置过多参数,即可自动生成与之对应的参数集合,实现快速、方便的执行。解决了读写文件的问题,将关键数据保存至本地,且保存格式为字典(dictionary),后期读取数据,则通过键(key)即可查到对应的值(value),解决了不能引入外部库的问题,并将加密后的数据直接返回调用函数,解决了不能读写数据库的问题,可连接指定的数据库获取或更新测试相关数据,解决了断言方式过于单一的问题,获取接口返回数据和数据库查询数据后,以key-value比对的方式,可快速、大量判断断言接口数据是否准确,同时,使用上述架构,可以开放应用程序接口(api)给其他测试或开放框架,可以进行拓展。

使用上述图2示出的接口架构示意图的测试方式,其中,高度灵活的测试数据准备模式是通过整体分层架构设计和配置模板化调用组合策略实现的,主要体现在不同场景下,运用参数模板生成具体的参数组以及在有被测接口需要其他接口产生的数据作为参数,才可正确调用的场景下。具体的实现方式通过以下实施例进行实现:

图3示出根据本申请的一个方面提供的一种用于测试接口的请求消息生成的方法流程示意图,所述方法包括:步骤s11~步骤s14,其中,在步骤s11中,获取测试接口的配置文件;在步骤s12中,根据所述配置文件获取所述测试接口对应的会话唯一标识;在步骤s13中,根据预设的加密算法对所述配置文件进行加密,得到加密信息;在步骤s14中,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。从而解决了脚本通用性不强的问题,具有高度灵活的分层的测试数据准备模式,使脚本在接收到执行命令后,无需手动配置过多参数,即可自动生成与之对应的参数集合,实现快速、方便的执行。

具体地,在步骤s11中,获取测试接口的配置文件;在此,配置文件包括项目名称、环境名称、数据库的登录账号、密码、地址,主机域名、客户端名称、本地文件存储地址等,由于配置文件存放一些全局变量,规定了一些程序运行所用的具体参数值,也可以存放某些用来生成请求消息中消息头或消息体的参数值,因此,在测试接口的数据准备时,首先获取测试接口的配置文件。

具体地,在步骤s12中,根据所述配置文件获取所述测试接口对应的会话唯一标识;在此,根据配置文件中的账号获取所述测试接口对应的会话唯一标识(sid)用于识别用户,可以作为调用接口的合法凭证,避免无效调用,另一方面,还保证了服务器的安全。需要说明的是,sid是有有效期的,例如,当天下午某时刻记录了新的sid,则在从该时刻开始的一天内,调用非登录接口时,都可以再把该sid作为header中其中一个合法参数进行请求,不需要重复从登录接口获取。

具体地,在步骤s13中,根据预设的加密算法对所述配置文件进行加密,得到加密信息;在此,根据预设的加密规则对配置文件中的账号、登录密码等用户信息进行加密,其中,预设的加密规则可以自定义,解决不能引入外部库的问题,根据不同场景的需求自定义不同的加密规则,得到加密后的用户的信息,当上传给服务器时,服务器对加密信息进行解密,判断解密后的信息是否合法,用户是否为合法用户,进而进一步地保证了服务器的安全。

具体地,在步骤s14中,基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。在此,请求消息包括会话唯一标识、加密信息及用于调用的接口参数,其中,将会话唯一标识sid与加密信息放入用于测试接口的请求消息的消息头(header)中,请求消息的消息体(body)中可以根据统一资源定位符url及配置文件,找到对应的消息体生成模板,包括确定的成品接口参数。进而在不同的场景下,运用参数模板生成具体的参数组。

在本申请一实施例中,在步骤s12中,根据所述配置文件中的账号从本地数据库或从服务器缓存中获取所述测试接口对应的会话唯一标识。在此,因sid具有有效期,在sid的有效期内可以从本地数据库的数据文件中读取sid,也可以从服务器缓存中读取,从而减少调用登录接口,节省服务器资源。

在本申请一实施例中,在步骤s11中,根据测试接口的测试请求确定传入参数,根据所述传入参数获取登录接口的配置文件。在此,根据测试接口的测试请求,传入参数调用进行测试接口时所需要的该接口相关的配置文件,例如,要测试项目a的相关接口,则根据传入参数快巴读取配置文件,确定用于生成项目a的消息头header相关的参数,放入参数模板中,以生成消息头header。

在本申请一实施例中,在步骤s14中,根据所述传入参数及预设的参数加密算法确定加密后的接口参数;基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。在此,当接口参数需要加密时,如签名需要加密,则根据预设的加密算法将接口参数加密,添加到参数组合模块中形成成品参数,用于生成请求消息。具体地,根据所述传入参数确定与其关联的子参数;根据预设的参数加密算法及所述关联的子参数确定加密后的接口参数。

另一方面,当接口参数不需要加密时,根据所述传入参数确定与其关联的子参数,将确定的子参数作为接口参数;基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

上述两种情况可以通过图4的模块图进行描述具体过程:

采用触发模块向组合层传递一个或多个关键参数,寻找该关键参数下与其关联的子参数,确保对应场景得到对应子参数,同时按照接口协议文档将需要加密的子参数(如签名)通过加密模块处理后再进入子参数组合模块,从而可以快速按照自定义的规则构造加密字符串,无需手动生成;而对于不需要加密的子参数则直接传递至子参数组合模块,最后通过子参数组合模块,输出成品参数组,其中,成品参数组包括上述的加密后的接口参数和无需加密的接口参数,为接口能接受能解析的数据,供子函数调用。

通过上述过程,可以实现在不同场景下,运用参数模板生成具体的参数组,例如,假设有项目a,项目a登录需要发送账号和密码两个参数,若要测试项目a的登录功能,则需要把项目a的代称、登录地址、账号传给参数模板,参数模板自动生成合法的消息头,同时会把a的账号对应的密码查找出,填进消息体中。而项目b下有接口提供的是查询功能,消息体需要传递十个参数,则参数模板根据项目代称、接口代称自动生成正确的消息头和消息体。在本申请又一实施例中,测试买票接口,首先传递项目名称、接口名称、账号、乘车时间、路线名称至组合层的总模块,总模块根据接口地址查找对应的子模块,子模块根据总模块所传递的值进行加工后输出可用的参数,如在子模块中根据接收到的各值进行加工,将{time:"",route_name:''}进行填充,输出{time:"09:00:00",route_name:'上海-苏州'},在此,接口名称为一个关键参数,time和route_time为与其接口名称关联的两个子参数。

进一步地,对上述过程进行优化,在有被测接口需要其他接口产生的数据作为参数,才可正确调用的场景下实现高度灵活的测试数据准备,按照指定顺序,运行前置接口并传递关键参数到用于被测接口的运行,从而高效、准确的获得正确数据,降低人工准备数据造成的错误几率和时间成本。具体的过程通过以下方式实现:

当根据接口协议文档,接口参数需要加密时,根据所述传入参数、从所述前置接口中获取的关键数据及预设的参数加密算法确定加密后的接口参数;基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。而对于不需要加密的接口参数,根据所述传入参数确定与其关联的子参数,将确定的子参数及从所述前置接口中获取的关键数据作为接口参数;基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

在此,所述方法还包括步骤s141~步骤s143,可以通过以下方式获取上述的关键数据:在步骤s141中,获取测试接口的统一资源定位符,并判断所述测试接口的统一资源定位符是否在处理后的统一资源定位符列表中;若是,则在步骤s142中从所述处理后的统一资源定位符列表中获取与所述测试接口关联的前置接口的统一资源定位符;在步骤s143中,根据所述前置接口的统一资源定位符从所述前置接口中获取关键数据。

在本申请一实施例中,如图5所示,首先接收被测接口的url,读取处理后的统一资源定位符列表,即需要特殊处理url列表,判断所接收的url是否在特殊处理url列表中,若是,则载入与之相关的前置接口执行列表,按序执行前置列表中接口,若否,则直接调用被测接口;从前置接口提取关键数据,提取方式通过key来提取对应value,提取到则传递给被测接口,未找到key或者value为空,则前置接口运行失败,输出执行结果。从而,将上述关键参数用于被测接口的运行,生成请求消息。

其中,特殊处理的接口为与其他接口有数据依赖的接口,将此类接口统一放置在特殊处理url列表中,需要读取前置接口,提前准备数据,不在特殊处理url列表中的接口,则与其他接口无数据依赖,上传的参数不需要从其他接口获取,所使用的格式及值为固定的格式固定的值,比如注销接口,上传的参数为固定的,以具体实施例进行描述上述过程,比如,验证退票功能,需要测试“登录-买车票-退票”这三个接口,测试目标为退票,通过上述方法脚本执行登录、买车票,再把买好的车票id传递给退票接口,把退票接口需要提前准备的数据提前准备好。通过上述方式,可以实现简单快捷、不容易出错、数据为最新数据。

通过本申请所述的用于测试接口的请求消息生成的方法,提供了高度灵活的分层的测试数据准备模式,解决了脚本通用性不强的问题,使脚本在接收到执行命令后,无需手动配置过多参数,即可生成与之对应的参数集合,实现快速、方便的执行。

图6示出根据本申请另一个方面提供的一种用于测试接口的请求消息生成的设备结构示意图,所述设备包括:获取装置11、读取装置12、加密装置13和生成装置14,其中,获取装置11,用于获取测试接口的配置文件;读取装置12,用于根据所述配置文件获取所述测试接口对应的会话唯一标识;加密装置13,用于根据预设的加密算法对所述配置文件进行加密,得到加密信息;生成装置14,用于基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。从而解决了脚本通用性不强的问题,具有高度灵活的分层的测试数据准备模式,使脚本在接收到执行命令后,无需手动配置过多参数,即可自动生成与之对应的参数集合,实现快速、方便的执行。

图2示出本申请一实施例中高效分层服务器端的接口架构示意图;上述图6中所述的用于测试接口的请求消息的生成设备为图2中的接口架构提供测试数据准备,在图2中,首先运行脚本,载入环境、统一资源定位符(url)、端口名称、账号、请求参数、断言条件、结构化查询语句(sql语句);接着,载入配置文件,根据账号,取出本地文件存放的会话唯一标识(sid),载入加密模板生成加密信息,根据传入参数自动生成合法的消息头(header),请求接口后,通过分析服务器返回内容来判断接口是否正确处理该请求,若是,则取出消息体(body)内容,当传入sql语句时连接相应数据库,执行sql语句,返回查询结果加工为json格式,通过遍历键(key)的方式校验对应的值(value)是否正确,若正确,则测试通过,若失败,则输出本轮测试结果;当取出的body内容没有传入sql语句时,进入静态断言流程,通过断言条件判断结果是否符合业务要求,若是,则测试通过,若否,则测试失败,判断是否有其他未执行的用例,若有则读取下一用例进行测试。当调用的接口没有正确处理时,则判断sid是否过期,若已过期,则调用登录模块,根据环境,请求端生成登录用的参数、加密信息,若登录成功,则获取的sid以键值对形式存放本地文件,根据账号取出本地文件存放的sid,执行上述测试过程。当接口未正确处理且sid未过期时,取出报错信息若为预期结果,则测试成功。

通过图2所示的接口测试架构示意图,解决了脚本通用性不强的问题,通过对数据和模块的浅层封装、模板模式等设计,使脚本在接收到执行命令后,无需手动配置过多参数,即可自动生成与之对应的参数集合,实现快速、方便的执行。解决了读写文件的问题,将关键数据保存至本地,且保存格式为字典(dictionary),后期读取数据,则通过键(key)即可查到对应的值(value),解决了不能引入外部库的问题,并将加密后的数据直接返回调用函数,解决了不能读写数据库的问题,可连接指定的数据库获取或更新测试相关数据,解决了断言方式过于单一的问题,获取接口返回数据和数据库查询数据后,以key-value比对的方式,可快速、大量判断断言接口数据是否准确,同时,使用上述架构,可以开放应用程序接口(api)给其他测试或开放框架,可以进行拓展。

使用上述图2示出的接口架构示意图的测试方式,其中,高度灵活的测试数据准备模式是通过整体分层架构设计和配置模板化调用组合策略实现的,主要体现在不同场景下,运用参数模板生成具体的参数组以及在有被测接口需要其他接口产生的数据作为参数,才可正确调用的场景下。具体的实现方式通过图6所述的设备进行实现:

具体地,获取装置11,拥有获取测试接口的配置文件;在此,配置文件包括项目名称、环境名称、数据库的登录账号、密码、地址,主机域名、客户端名称、本地文件存储地址等,由于配置文件存放一些全局变量,规定了一些程序运行所用的具体参数值,也可以存放某些用来生成请求消息中消息头或消息体的参数值,因此,在测试接口的数据准备时,首先获取测试接口的配置文件。

具体地,读取装置12,用于根据所述配置文件获取所述测试接口对应的会话唯一标识;在此,根据配置文件中的账号获取所述测试接口对应的会话唯一标识(sid)用于识别用户,可以作为调用接口的合法凭证,避免无效调用,另一方面,还保证了服务器的安全。需要说明的是,sid是有有效期的,例如,当天下午某时刻记录了新的sid,则在从该时刻开始的一天内,调用非登录接口时,都可以再把该sid作为header中其中一个合法参数进行请求,不需要重复从登录接口获取。

具体地,加密装置13,用于根据预设的加密算法对所述配置文件进行加密,得到加密信息;在此,根据预设的加密规则对配置文件中的账号、登录密码等用户信息进行加密,其中,预设的加密规则可以自定义,解决不能引入外部库的问题,根据不同场景的需求自定义不同的加密规则,得到加密后的用户的信息,当上传给服务器时,服务器对加密信息进行解密,判断解密后的信息是否合法,用户是否为合法用户,进而进一步地保证了服务器的安全。

具体地,生成装置14,用于基于所述会话唯一标识、所述加密信息及确定的接口参数生成用于测试接口的请求消息。在此,请求消息包括会话唯一标识、加密信息及用于调用的接口参数,其中,将会话唯一标识sid与加密信息放入用于测试接口的请求消息的消息头(header)中,请求消息的消息体(body)中可以根据统一资源定位符url及配置文件,找到对应的消息体生成模板,包括确定的成品接口参数。进而在不同的场景下,运用参数模板生成具体的参数组。

在本申请一实施例中,读取装置12用于根据所述配置文件中的账号从本地数据库或从服务器缓存中获取所述测试接口对应的会话唯一标识。在此,因sid具有有效期,在sid的有效期内可以从本地数据库的数据文件中读取sid,也可以从服务器缓存中读取,从而减少调用登录接口,节省服务器资源。

在本申请一实施例中,获取装置11用于根据测试接口的测试请求确定传入参数,根据所述传入参数获取登录接口的配置文件。在此,根据测试接口的测试请求,传入参数调用进行测试接口时所需要的该接口相关的配置文件,例如,要测试项目a的相关接口,则根据传入参数快巴读取配置文件,确定用于生成项目a的消息头header相关的参数,放入参数模板中,以生成消息头header。

在本申请一实施例中,生成装置14用于根据所述传入参数及预设的参数加密算法确定加密后的接口参数;基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。在此,当接口参数需要加密时,如签名需要加密,则根据预设的加密算法将接口参数加密,添加到参数组合模块中形成成品参数,用于生成请求消息。具体地,根据所述传入参数确定与其关联的子参数;根据预设的参数加密算法及所述关联的子参数确定加密后的接口参数。

另一方面,当接口参数不需要加密时,根据所述传入参数确定与其关联的子参数,将确定的子参数作为接口参数;基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

上述两种情况可以通过图4的模块图进行描述具体过程:

采用触发模块向组合层传递一个或多个关键参数,寻找该关键参数下与其关联的子参数,确保对应场景得到对应子参数,同时按照接口协议文档将需要加密的子参数(如签名)通过加密模块处理后再进入子参数组合模块,从而可以快速按照自定义的规则构造加密字符串,无需手动生成;而对于不需要加密的子参数则直接传递至子参数组合模块,最后通过子参数组合模块,输出成品参数组,其中,成品参数组包括上述的加密后的接口参数和无需加密的接口参数,为接口能接受能解析的数据,供子函数调用。

通过上述过程,可以实现在不同场景下,运用参数模板生成具体的参数组,例如,假设有项目a,项目a登录需要发送账号和密码两个参数,若要测试项目a的登录功能,则需要把项目a的代称、登录地址、账号传给参数模板,参数模板自动生成合法的消息头,同时会把a的账号对应的密码查找出,填进消息体中。而项目b下有接口提供的是查询功能,消息体需要传递十个参数,则参数模板根据项目代称、接口代称自动生成正确的消息头和消息体。在本申请又一实施例中,测试买票接口,首先传递项目名称、接口名称、账号、乘车时间、路线名称至组合层的总模块,总模块根据接口地址查找对应的子模块,子模块根据总模块所传递的值进行加工后输出可用的参数,如在子模块中根据接收到的各值进行加工,将{time:"",route_name:''}进行填充,输出{time:"09:00:00",route_name:'上海-苏州'},在此,接口名称为一个关键参数,time和route_time为与其接口名称关联的两个子参数。

进一步地,对上述过程进行优化,在有被测接口需要其他接口产生的数据作为参数,才可正确调用的场景下实现高度灵活的测试数据准备,按照指定顺序,运行前置接口并传递关键参数到用于被测接口的运行,从而高效、准确的获得正确数据,降低人工准备数据造成的错误几率和时间成本。具体的过程通过以下方式实现:

当根据接口协议文档,接口参数需要加密时,根据所述传入参数、从所述前置接口中获取的关键数据及预设的参数加密算法确定加密后的接口参数;基于所述会话唯一标识、所述加密信息及所述加密后的接口参数生成用于测试接口的请求消息。而对于不需要加密的接口参数,根据所述传入参数确定与其关联的子参数,将确定的子参数及从所述前置接口中获取的关键数据作为接口参数;基于所述会话唯一标识、所述加密信息及所述接口参数生成用于测试接口的请求消息。

在此,所述设备还包括判断装置141、确定装置142和关键数据获取装置143,可以通过以下方式获取上述的关键数据:所述判断装置141用于获取测试接口的统一资源定位符,并判断所述测试接口的统一资源定位符是否在处理后的统一资源定位符列表中;若是,则确定装置142用于从所述处理后的统一资源定位符列表中获取与所述测试接口关联的前置接口的统一资源定位符;关键数据获取装置143用于根据所述前置接口的统一资源定位符从所述前置接口中获取关键数据。

在本申请一实施例中,如图5所示,首先接收被测接口的url,读取处理后的统一资源定位符列表,即需要特殊处理url列表,判断所接收的url是否在特殊处理url列表中,若是,则载入与之相关的前置接口执行列表,按序执行前置列表中接口,若否,则直接调用被测接口;从前置接口提取关键数据,提取方式通过key来提取对应value,提取到则传递给被测接口,未找到key或者value为空,则前置接口运行失败,输出执行结果。从而,将上述关键参数用于被测接口的运行,生成请求消息。

其中,特殊处理的接口为与其他接口有数据依赖的接口,将此类接口统一放置在特殊处理url列表中,需要读取前置接口,提前准备数据,不在特殊处理url列表中的接口,则与其他接口无数据依赖,上传的参数不需要从其他接口获取,所使用的格式及值为固定的格式固定的值,比如注销接口,上传的参数为固定的,以具体实施例进行描述上述过程,比如,验证退票功能,需要测试“登录-买车票-退票”这三个接口,测试目标为退票,通过上述方法脚本执行登录、买车票,再把买好的车票id传递给退票接口,把退票接口需要提前准备的数据提前准备好。通过上述方式,可以实现简单快捷、不容易出错、数据为最新数据。

通过本申请所述的设备用于测试接口的请求消息的生成,提供了高度灵活的分层的测试数据准备模式,解决了脚本通用性不强的问题,使脚本在接收到执行命令后,无需手动配置过多参数,即可生成与之对应的参数集合,实现快速、方便的执行。

显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,例如,可采用专用集成电路(asic)、通用目的计算机或任何其他类似硬件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数据结构)可以被存储到计算机可读记录介质中,例如,ram存储器,磁或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。

另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。

对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1