接口测试方法、装置、设备以及存储介质与流程

文档序号:22500245发布日期:2020-10-13 09:32阅读:103来源:国知局
接口测试方法、装置、设备以及存储介质与流程

本申请涉及计算机领域,尤其涉及互联网、接口测试等领域。



背景技术:

api(applicationprogramminginterface,应用程序接口)的接口签名认证的过程主要包括:服务端通常会给合法的客户端分配一个密钥(a),客户端在请求数据时需要用密钥对请求参数进行加密,得到的加密结果通常叫做签名(s)。服务端接收到请求后会使用相同的秘钥(a)加密数据,如果得到相同的签名(s),就认为客户端是合法的,因此使用接口签名可以有效的验证客户端的合法性。

由于请求参数改变会导致签名改变,测试需要签名认证的接口主要有以下方法:

1)注释判断签名的代码:这样可以绕过判断签名的逻辑,不会对签名参数的合法性做判断;该方式对于有些环境不可用,也存在安全隐患。

2)手动计算签名值:开发者手动调用程序计算签名,并把签名作为参数之一发起请求;这种方式需要人工干预的方式计算签名值,操作复杂,人工成本高。



技术实现要素:

本申请提供了一种接口测试方法、装置、设备以及存储介质。

根据本申请的一方面,提供了一种接口测试方法,包括:

获取需要测试的接口的业务参数;

执行该接口对应的签名生成脚本,按照该签名生成脚本中的加密算法对该接口的业务参数进行计算,生成该接口的签名参数;

根据该接口的业务参数和该接口的签名参数,生成测试请求。

根据本申请的另一方面,提供了一种接口测试装置,包括:

获取模块,用于获取需要测试的接口的业务参数;

签名模块,用于执行该接口对应的签名生成脚本,按照该签名生成脚本中的加密算法对该接口的业务参数进行计算,生成该接口的签名参数;

请求模块,用于根据该接口的业务参数和该接口的签名参数,生成测试请求。

根据本申请的另一方面,提供了一种电子设备,包括:

至少一个处理器;以及

与该至少一个处理器通信连接的存储器;其中,

该存储器存储有可被该至少一个处理器执行的指令,该指令被该至少一个处理器执行,以使该至少一个处理器能够执行接口测试方法。

根据本申请的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,该计算机指令用于使该计算机执行接口测试方法。

根据本申请实施例,通过执行接口对应的签名生成脚本,可以按照脚本中的加密算法自动对业务参数进行加密计算,生成该接口的签名参数,然后利用该签名参数与业务参数生成测试请求,能够提高接口测试效率,安全性高。

应当理解,本部分所描述的内容并非旨在标识本申请的实施例的关键或重要特征,也不用于限制本申请的范围。本申请的其它特征将通过以下的说明书而变得容易理解。

附图说明

附图用于更好地理解本方案,不构成对本申请的限定。其中:

图1是根据本申请一实施例的接口测试方法的流程图;

图2是http协议基本流程;

图3是根据本申请另一实施例的接口测试方法的流程图;

图4是根据本申请另一实施例的接口测试方法的流程图;

图5是用户发送请求的url和参数的示意图;

图6是使用postman自动计算签名并发起http请求的流程图;

图7是根据本申请一实施例的接口测试装置的框图;

图8是根据本申请另一实施例的接口测试装置的框图;

图9是根据本申请实施例的接口测试方法的电子设备的框图。

具体实施方式

以下结合附图对本申请的示范性实施例做出说明,其中包括本申请实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本申请的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。

图1是根据本申请一实施例的接口测试方法的流程图,该方法可以包括:

s101、获取需要测试的接口的业务参数;

s102、执行该接口对应的签名生成脚本,按照该签名生成脚本中的加密算法对该接口的业务参数进行计算,生成该接口的签名参数;

s103、根据该接口的业务参数和该接口的签名参数,生成测试请求。

在一种可能的实施方式中,测试请求可以为http请求。示例性地,可以利用接口测试工具例如postman来调试或测试接口。postman是一个功能强大的支持用户发送http请求的软件,通常用于进行httpapi接口的测试与联调。开发者可以在postman上填写需要测试的api地址、参数、header(头)等信息。postman可以将这些信息封装成http请求头进行请求,并返回请求结果。使用postman调试或测试接口,可以快速验证接口的可用性或定位出问题。

在一种可能的实施方式中,需要测试的接口为api(applicationprogramminginterface,应用程序接口)。如图2所示,浏览器和移动端app(application,应用程序)通常是通过api从服务端获取数据的,并最终格式化展现给用户的。例如,浏览器通过api向服务端发送http请求-a,接收服务端返回的http响应-a。例如,移动端app通过api向服务端发送http请求-b,接收服务端返回的http响应-b。如果通过app进行聊天、购物、支付,数据会通过api传输到服务端,因此通过api传输数据的安全性和身份确认至关重要。保证api的数据安全可以通过多方面共同保障,比如使用https协议、使用接口签名认证等多种方式。采用本申请实施例的接口测试方法可以完成接口签名认证。

接口的业务参数可以包括与该接口的业务相关的参数。例如,调用提交用户信息接口,参数可以包括:访问者的用户名、年龄、性别、身高、国籍等。再如,调用查询天气服务接口,参数可以包括:经度(longitude)、纬度(latitude)、城市名(city)、日期(date)等。

每次访问该api的业务参数也可能发生变化。在对api进行测试阶段,可以利用postman等工具输入若干不同的业务参数进行测试。由于每一次发起http请求都需要携带签名参数(s),但是签名参数(s)不是用户填写的固定参数,而是通过复杂的加密计算得来的。因此,需要额外计算签名,并把签名参数(s)再填到请求中去,之后才能发起http请求,验证接口。为了方便快捷得到并填充签名参数(s),可以根据需要测试的接口所支持的加密算法,预先编写该接口对应的签名生成脚本。在postman中输入业务参数后,如果用户点击发起请求,可以先执行该接口对应的签名生成脚本,计算并填充签名参数,再发起http请求。

在本申请实施例中,通过执行接口对应的签名生成脚本,可以按照脚本中的加密算法自动对业务参数进行加密计算,生成该接口的签名参数,然后利用该签名参数与业务参数生成测试请求,能够提高接口测试效率,安全性高。由于不需要人工干预的方式计算签名值,操作简单,可以降低人工成本。由于也不需要注释判断签名的代码,不仅能够在测试和开发环境使用,还可以在线上生产环境使用,由于不需要直接在生产环境修改或注释代码,因此不存在安全隐患,安全性高,本实施例可用于云平台或云服务场景。

图3是根据本申请另一实施例的接口测试方法的流程图。该实施例的接口测试方法可以包括上述实施例的各步骤。在本实施例中,该接口测试方法还包括:

s201、向服务端发送该测试请求;

s202、接收该服务端返回的根据该加密算法对该业务参数进行计算后与该签名参数进行比较得到的测试结果。

在一种可能的实施方式中,该接口为应用程序接口,该接口测试方法还包括:获取该应用程序接口的url(uniformresourcelocator,统一资源定位符)地址。

在本实施例中,测试终端通过接口的url地址,可以找到接口的服务端,向该接口的服务端发送测试请求。服务端收到该测试请求后,解析得到该接口的业务参数和签名参数。以对称加密为例,请求端和服务端执行加密算法所用的秘钥可以相同。服务端可以按照与签名生成脚本中的加密算法对业务参数进行加密计算。如果计算结果与解析的签名参数相同,表示测试成功。服务端可以向测试终端返回成功的测试结果,接口测试效率高,速度快。

图4是根据本申请另一实施例的接口测试方法的流程图。该实施例的接口测试方法可以包括上述实施例的各步骤。在本实施例中,在s102中,执行接口对应的签名生成脚本后,根据该接口的业务参数生成该接口的签名,包括:

s1021、响应于初始请求,获取当前的时间戳;

s1022、根据该业务参数和该时间戳执行该签名生成脚本所包括的加密算法,计算得到该接口的签名参数。

在本实施例中,时间戳也可以看作一种随时间变化的业务参数。时间戳能够体现发起初始请求的时刻。在不同时刻发起初始请求,即使该初始请求中的其他业务参数相同,由于时间戳不同,执行签名生成脚本计算的签名参数也可能不同。此外,如果发起的初始请求中的任何业务参数发生变化,都可能导致执行签名生成脚本计算的签名参数发生变化。因此,可以随着请求时刻的不同自动计算签名参数,提高接口测试效率。

在一种可能的实施方式中,在s103中,根据该接口的业务参数和该接口的签名参数,生成测试请求,包括:

s1031、将该签名参数赋值给该初始请求中的签名变量,并将该时间戳赋值给该初始请求中的时间戳变量,得到该测试请求。

有一些场景中,测试请求中需要带有发起初始请求时的时间参数。这种情况下,可以响应于用户发起初始请求的操作,获取当前的时间戳。然后按照签名生成脚本中的加密算法对业务参数和时间戳一起进行计算,得到该接口的签名参数。然后将时间戳和签名参数填充至初始请求中的相应位置。例如,将时间戳赋值给初始请求中的时间戳变量,将签名参数赋值给初始请求中的签名变量,得到测试请求。然后,可以将赋值了时间戳和签名参数的测试请求发送到服务端进行处理。自动计算签名后还可以自动填充请求中相应的变量,无需用户干预,从而可以更加方便快速的发起接口测试。

在一种可能的实施方式中,该方法还包括:

s100、根据不同接口所采用的加密算法,预先生成各该接口对应的签名生成脚本。不同网站可能支持不同的加密算法,并且,不同网站具有不同的接口,因此,不同接口可能采用不同的加密算法。可以按照接口采用的特定的加密算法编写对应的签名生成脚本,签名生成脚本中的代码逻辑可以与加密算法的处理逻辑一致。例如,加密算法可以包括但不限于md5(message-digestalgorithm,信息摘要算法)、sha-1(securehashalgorithm1,安全散列算法1)等。这样,有利于适用对各种类型的接口进行测试,适用范围广。

在测试设备中,收到初始请求后,可以根据接口的地址或标识查找其对应的签名生成脚本,执行该签名生成脚本以生成该接口的签名参数。如果时间戳不同,在不同时刻,执行同一接口的签名生成脚本生成的签名参数可能不同。

在一种应用示例中,提供一种基于postman的自动计算接口签名的方法。用户在postman的pre-requestscript(预请求脚本)模块中编写一次计算签名的脚本(简称签名生成脚本),可在postman请求时自动计算并填充参数。这样,可以极大提升接口测试效率。

如图5所示,在使用postman以及类似软件时,首先,可以设置请求接口的url,参见图5的框21中的内容,用于声明需要请求的服务地址。接下来,可以设置请求的参数表示。参见图5的框22中的各种参数,用于声明请求某个业务需要携带的数据信息,其中签名参数作为用户请求参数的一部分,通常可以根据用户业务请求参数(或称为业务参数)加密得到。如图5所示,例如框22中包括的参数可以用键值对(key-value)。框22中可以包括一些允许用户输入的业务参数中。例如,第一参数的键(key)为用户名(user_name),对应的值(value)为xxxx;第二参数的键(key)为用户年龄(user_age),对应的值(value)为59(单位为岁);第三参数的键(key)为用户性别(user_gender),对应的值(value)为男(male);第四参数的键(key)用户身高(user_height),对应的值(value)为183(单位为厘米);第五参数的键(key)为用户国籍(user_country),对应的值(value)为美国(america)。这些允许用户输入的业务参数,可以根据用户需要测试的具体内容改变。输入之后,则如果用户不修改,不会自动改变。在框22中还可以包括两个变量。时间戳变量(req_time)和签名变量(sigh),这两个变量无需用户干预可以自动改变。例如,时间戳变量的参数值可以在用户发起请求例如点击“发送(send)”控件23时获取当前时刻。签名变量的参数值,则可以执行签名生成脚本对输入的业务参数和获取的时间戳的值进行加密计算得到。

上述业务的类型和参数仅是示例而非限制,具体可以根据实际应用场景灵活设置。

如图6所示,为使用接口测试工具postman自动计算签名并发起http请求的流程,具体包括以下步骤:

s1.用户需要明确请求的url地址,参见图5的框21。例如,参见图6,开发人员利用postman设置请求的方法和地址(例如需要测试的api的url地址)。

s2.用户需要设置请求参数例如,参见图6,开发人员利用postman设置请求参数。参见图5的框22,是需要将用户名为xxxx的用户信息提交到http://data.api.com/new_user接口。

参见图5的框22中有{{timestamp}}和{{sign}}两个特殊参数,这标明这两个参数的值不是固定的,而是来自于postman运行过程中动态计算而赋值的。比如timestamp时间戳,如果固定写成2020-05-2010:10:10,那在5月21号在请求时,已经不再是准确的值了。签名参数sign也是同样的道理,sign作为接口的签名值,通常是用分配给用户的秘钥加密其他参数得来的,因此只要任何一个参数(比如时间戳、用户名、年龄等)发生变化,sign的值都得重新计算。本申请实施例提供了一种自动计算签名的方法,用户只用一次编写脚本,当业务参数发生变化时postman可以自动计算好sign签名值。因此,可以将req_time称为时间戳变量,将sign称为签名变量。

s4.s3.编写postman的pre-req脚本(pre-requestscript,预请求脚本)。该脚本可以包括该接口所需的加密算法,能够用于自动计算sign的签名值。自动计算sign签名值是由用户编写的脚本自动计算的,所以需要按照sign的计算规则编写脚本,并配置在postman的pre-requestscript模块中,不同服务的sign签名计算方式不同,服务方通常具有相应的文档说明。该编写脚本的步骤可以提前进行,例如在s1之前,预先编写该脚本。

一种示例性的用于自动计算签名的脚本如下:

上述脚本的最后两行用于设置postman请求变量,对应的图5中框22最后两行的特殊参数:时间戳和签名。

s4.当用户发起请求时,postman会运行用户脚本,在pre-requestscript(预请求脚本)模块中执行脚本逻辑,利用该脚本中的加密算法对业务参数(可以包括时间戳)进行加密计算,得到签名值,设置环境变量(包括签名)。

s5.pre-requestscript模块将计算结果返回到postman,postman会进行变量填充,将计算得到的值赋值给这两个特殊变量,这样sign每次都是动态且自动计算得来的。

s6.postman组合请求的数据格式。

s7.postman向服务端发起数据请求,该数据请求是经过填充、组合数据格式之后的接口测试请求。

s8.服务端对收到的请求进行逻辑处理。例如,服务提供的方在收到用户的请求中的参数后,会使用与脚本中算法逻辑相同的算法计算sign签名值。比较收到的签名值和计算的签名值是否一致。

s9.如果一致,表示签名验证通过,在签名验证通过并且处理完业务之后,将处理结果返回给用户。例如服务端向postman返回请求结果,postman可以将请求结果展示给开发人员。

本申请实施例的接口测试方法,在接口开发与测试流程中可以发挥重要的作用,开发人员只需要编写一次用于进行签名(sign)计算的脚本(或称为签名生成脚本),就可以解决接口签名计算的繁琐过程,实现自动生成签名,更不需要在代码中注释签名判断的代码片段,让开发人员能够专注于业务相关的参数与功能。

图7是根据本申请一实施例的接口测试装置的框图。该装置可以包括:

获取模块41,用于获取需要测试的接口的业务参数;

签名模块42,用于执行该接口对应的签名生成脚本,按照该签名生成脚本中的加密算法对该接口的业务参数进行计算,生成该接口的签名参数;

请求模块43,用于根据该接口的业务参数和该接口的签名参数,生成测试请求。

在一种可能的实施方式中,如图8所示,该装置还包括:

发送模块51,用于向服务端发送该测试请求;

接收模块52,用于接收该服务端返回的根据该加密算法对该业务参数进行计算后与该签名参数进行比较得到的测试结果。

在一种可能的实施方式中,该接口为应用程序接口,该装置还包括:

地址模块53,用于获取该应用程序接口的统一资源定位符url地址。

在一种可能的实施方式中,该签名模块42包括:

时间戳子模块421,用于响应于初始请求,获取当前的时间戳;

计算子模块422,用于根据该业务参数和该时间戳执行该签名生成脚本所包括的加密算法,计算得到该接口的签名参数。

在一种可能的实施方式中,该请求模块43具体用于将该签名参数赋值给该初始请求中的签名变量,并将该时间戳赋值给该初始请求中的时间戳变量,得到该测试请求。

在一种可能的实施方式中,该装置还包括:

脚本模块54,用于根据不同接口所采用的加密算法,预先生成各该接口对应的签名生成脚本。

本申请实施例各装置中的各模块的功能可以参见上述方法中的对应描述,在此不再赘述。

根据本申请的实施例,本申请还提供了一种电子设备和一种可读存储介质。

如图9所示,是根据本申请实施例的接口测试方法的电子设备的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。

如图9所示,该电子设备包括:一个或多个处理器901、存储器902,以及用于连接各部件的接口,包括高速接口和低速接口。各个部件利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示gui的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。图9中以一个处理器901为例。

存储器902即为本申请所提供的非瞬时计算机可读存储介质。其中,该存储器存储有可由至少一个处理器执行的指令,以使该至少一个处理器执行本申请所提供的接口测试方法。本申请的非瞬时计算机可读存储介质存储计算机指令,该计算机指令用于使计算机执行本申请所提供的接口测试方法。

存储器902作为一种非瞬时计算机可读存储介质,可用于存储非瞬时软件程序、非瞬时计算机可执行程序以及模块,如本申请实施例中的接口测试方法对应的程序指令/模块(例如,附图7所示的获取模块41、签名模块42和请求模块43)。处理器901通过运行存储在存储器902中的非瞬时软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例中的接口测试方法。

存储器902可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据接口测试方法的电子设备的使用所创建的数据等。此外,存储器902可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施例中,存储器902可选包括相对于处理器901远程设置的存储器,这些远程存储器可以通过网络连接至接口测试方法的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

接口测试方法的电子设备还可以包括:输入装置903和输出装置904。处理器901、存储器902、输入装置903和输出装置904可以通过总线或者其他方式连接,图9中以通过总线连接为例。

输入装置903可接收输入的数字或字符信息,以及产生与接口测试方法的电子设备的用户设置以及功能控制有关的键信号输入,例如触摸屏、小键盘、鼠标、轨迹板、触摸板、指示杆、一个或者多个鼠标按钮、轨迹球、操纵杆等输入装置。输出装置904可以包括显示设备、辅助照明装置(例如,led)和触觉反馈装置(例如,振动电机)等。该显示设备可以包括但不限于,液晶显示器(lcd)、发光二极管(led)显示器和等离子体显示器。在一些实施方式中,显示设备可以是触摸屏。

此处描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、专用asic(专用集成电路)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。

这些计算程序(也称作程序、软件、软件应用、或者代码)包括可编程处理器的机器指令,并且可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。如本文使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、设备、和/或装置(例如,磁盘、光盘、存储器、可编程逻辑装置(pld)),包括,接收作为机器可读信号的机器指令的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。

为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,crt(阴极射线管)或者lcd(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。

可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(lan)、广域网(wan)和互联网。

计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与虚拟专用服务器(vps)服务中,存在的管理难度大,业务扩展性弱的缺陷。

在本申请实施例中,通过执行接口对应的签名生成脚本,可以按照脚本中的加密算法自动对业务参数进行加密计算,生成该接口的签名参数,然后利用该签名参数与业务参数生成测试请求,能够提高接口测试效率,安全性高。

应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发申请中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本申请公开的技术方案所期望的结果,本文在此不进行限制。

上述具体实施方式,并不构成对本申请保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本申请的精神和原则之内所作的修改、等同替换和改进等,均应包含在本申请保护范围之内。

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