本发明涉及接口测试技术,尤其涉及一种接口数据测试方法、装置及电子设备。
背景技术:
随着计算机通信以及互联网技术的不断发展,开发的应用程序也越来越多,各应用程序中开发的接口也越来越多,各应用程序通过相应的接口进行数据传输,例如,一应用程序的X接口需要调用另一应用程序的Y接口来获取数据以进行交互。两个接口在互传数据之前,双方会互相约定一种数据交流格式。
谷歌缓存协议(Protobuf,Google Protocol Buffer)为谷歌(google)公司提供的一种数据描述语言,能够将结构化数据序列用于数据存储、通信协议等领域,是一种与语言无关、与平台无关、可扩展的序列化结构数据格式。其最大的特点是基于二进制来存储数据,因此,相对于传统的可扩展标记语言(XML,Extensible Markup Language)数据存储格式或轻量级数据交换格式(JSON,JavaScript Object Notation),具有数据体积小(例如,Protobuf消息大小只需要XML的1/10~1/3)、解析速度快(解析速度比XML快20~100倍)、向下或向上兼容性好,且使用Protobuf的编译器,可以生成更容易在编程中使用的数据访问代码,是一种轻便高效的结构化数据存储格式,广泛应用于数据存储或远程过程调用(RPC,Remote Procedure Call)的数据交换,例如,接口间的数据交换。
但对于新开发的接口,需要进行正常的功能测试和异常的功能测试以收集功能测试数据,从而验证开发的接口是否正确,接口运行是否稳定以及接口对异常数据的处理机制等接口功能,以便于优化开发的接口功能。而采用Protobuf文件作为接口间的数据传输格式,由于Protobuf文件节点中的测试数据为二进制数据,无法直接获取其具体内容,因而,在需要修改节点的测试数据以进行异常测试时,无法获知哪一范围内的二进制字符串为待修改的目标节点的测试数据,使得功能测试效率不高。
技术实现要素:
有鉴于此,本发明实施例提供一种接口数据测试方法、装置及电子设备,能够提升功能测试效率,以解决现有的接口数据测试方法中,在需要修改节点的测试数据以进行异常测试时,由于Protobuf文件节点中的测试数据为二进制数据,无法获知哪一范围内的二进制字符串为待修改的目标节点的测试数据导致的功能测试效率不高的问题。
第一方面,本发明实施例提供一种接口数据测试方法,包括:
构建一用于接口数据测试的模拟服务器;
在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;
调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件二进制格式的目标协议格式文件;
根据数据异常测试流程,获取所述目标协议格式文件以进行数据异常测试。
结合第一方面,在第一方面的第一种实施方式中,调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件转换为二进制格式的目标协议格式文件之前,所述方法还包括:
根据数据异常测试目标,修改所述非二进制格式文件中节点的接口数据测试参数。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,所述修改所述非二进制格式文件中节点的接口数据测试参数,包括:
删除所述非二进制格式文件中的特定节点数据;或者
修改所述非二进制格式文件中的特定节点对应的属性值。
结合第一方面或第一方面的第一种实施方式,在第一方面的第三种实施方式中,所述非二进制格式文件为轻量级数据交换格式文件或可扩展标记语言文件。
结合第一方面或第一方面的第一种实施方式,在第一方面的第四种实施方式中,所述文件转换脚本为面向对象、解释型计算机程序设计语言脚本。
第二方面,本发明实施例提供一种接口数据测试装置,包括:模拟服务器构建模块、参数设置模块、文件转换模块以及测试模块,其中,
模拟服务器构建模块,用于构建一用于接口数据测试的模拟服务器;
参数设置模块,用于在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;
文件转换模块,用于调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件二进制格式的目标协议格式文件;
测试模块,用于根据数据异常测试流程,获取所述目标协议格式文件以进行数据异常测试。
结合第二方面,在第二方面的第一种实施方式中,所述装置还包括:
参数编辑模块,用于根据数据异常测试目标,修改所述非二进制格式文件中节点的接口数据测试参数。
结合第第二方面的第一种实施方式,在第二方面的第二种实施方式中,所述修改所述非二进制格式文件中节点的接口数据测试参数,包括:
删除所述非二进制格式文件中的特定节点数据;或者
修改所述非二进制格式文件中的特定节点对应的属性值。
结合第二方面或第二方面的第一种实施方式,在第二方面的第三种实施方式中,所述非二进制格式文件为轻量级数据交换格式文件或可扩展标记语言文件。
结合第二方面或第二方面的第一种实施方式,在第二方面的第四种实施方式中,所述文件转换脚本为面向对象、解释型计算机程序设计语言脚本。
第三方面,本发明实施例提供一种电子设备,所述电子设备包括:壳体、处理器、存储器、电路板和电源电路,其中,电路板安置在壳体围成的空间内部,处理器和存储器设置在电路板上;电源电路,用于为上述电子设备的各个电路或器件供电;存储器用于存储可执行程序代码;处理器通过读取存储器中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一所述的接口数据测试方法。
本发明实施例提供的一种接口数据测试方法、装置及电子设备,通过构建一用于接口数据测试的模拟服务器;在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件二进制格式的目标协议格式文件;根据数据异常测试流程,获取所述目标协议格式文件以进行数据异常测试,能够提升功能测试效率,以解决现有的接口数据测试方法中,在需要修改节点的测试数据以进行异常测试时,由于Protobuf文件节点中的测试数据为二进制数据,无法获知哪一范围内的二进制字符串为待修改的目标节点的测试数据导致的功能测试效率不高的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本发明的实施例一接口数据测试方法流程示意图;
图2为本发明的实施例二接口数据测试装置结构示意图;
图3为本发明电子设备一个实施例的结构示意图。
具体实施方式
下面结合附图对本发明实施例进行详细描述。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
图1为本发明的实施例一接口数据测试方法流程示意图,如图1所示,本实施例的方法可以包括:
步骤101,构建一用于接口数据测试的模拟服务器;
本实施例中,构建的模拟服务器(mock server)作为上游应用,上游应用与作为测试的下游应用协商使用的测试数据格式为Protobuf格式,并共用一结构描述文件(.proto文件)。
本实施例中,模拟服务器为一响应请求,例如,数据测试请求,并向发送测试数据的接口返回响应的服务器,用于模拟获取到不同的结果返回值。
本实施例中,作为一可选实施例,构建的模拟服务器具有如下功能:
A,使用接口定义的Protobuf文件,生成对应面向对象、解释型计算机程序设计语言(Python)格式的文件。
本实施例中,作为一可选实施例,Python格式的文件为py文件。Python是一种不受局限、跨平台的开源编程语言。本实施例中,生成py文件的命令行如下:
protoc--proto_path=ufs_proto/ufs_proto/user_profile.proto--python_out=.
其中,
ufs_proto/ufs_proto/user_profile.proto为接口定义的Protobuf文件。
B,调用预先编写的文件转换脚本,即python脚本,以将非二进制格式文件,例如,将JSON文件转换成二进制格式的Protobuf文件。
C,将测试结果以二进制格式的形式返回。
本实施例中,作为一可选实施例,利用面向对象、解释型计算机程序设计语言网页框架构建模拟服务器。
本实施例中,面向对象、解释型计算机程序设计语言网页框架(Webpy)为一轻量级开源python web框架,可以快速实现网页(web)页面,便于设置接口数据测试参数。
步骤102,在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;
本实施例中,通过在模拟服务器中构建虚拟的用于接口功能测试的测试数据,然后将构建的测试数据保存为JSON文件。
本实施例中,作为一可选实施例,非二进制格式文件为轻量级数据交换格式文件(JSON文件)或可扩展标记语言文件(XML文件)等,本实施例对此不作限定。
步骤103,调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件二进制格式的目标协议格式文件;
本实施例中,作为一可选实施例,文件转换脚本为python脚本。
步骤104,根据数据异常测试流程,获取所述目标协议格式文件以进行数据异常测试。
本实施例中,作为一可选实施例,可以将下游接口指定到模拟服务器中获取上游数据。
本实施例中,作为一可选实施例,调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件转换为二进制格式的目标协议格式文件之前,该方法还包括:
根据数据异常测试目标,修改所述非二进制格式文件中节点的接口数据测试参数。
本实施例中,作为一可选实施例,修改所述非二进制格式文件中节点的接口数据测试参数,包括:
删除所述非二进制格式文件中的特定节点数据;或者
修改所述非二进制格式文件中的特定节点对应的属性值。
本实施例中,如果需要构建异常案例,只需依据测试结果修改对应JSON文件中的相关内容即可。当然,实际应用中,也可以直接修改非二进制格式文件(JSON文件)中的相关内容,然后,依据测试结果确认是否达到预期的异常测试目的,例如,如果需要验证上游接口,返回的测试结果内容中缺少某一预设的必要节点时,下游接口是否会舍弃掉脏数据时,可以通过修改JSON文件,将该预设的必要节点(该预设的必要节点的所有接口数据测试参数)删除,然后,调用python脚本,将修改的JSON文件转化成对应的Protobuf格式,最终以二进制格式输出,下游接口发起请求就可获得二进制格式的测试结果文件中的相关内容。再例如,如果需要验证上游接口,返回的测试结果内容中,节点属性值不合法,下游接口是否会舍弃掉脏数据时,可以通过修改JSON文件中预设节点对应的属性值(该预设节点对应的属性数据测试参数),然后,调用python脚本,将修改属性值的JSON文件转化成对应的Protobuf格式,最终以二进制格式输出,下游接口发起请求就可获得二进制格式的测试结果文件中的相关内容。
本实施例的接口数据测试方法,通过构建一用于接口数据测试的模拟服务器;在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件内容二进制格式的目标协议格式文件内容;最终以二进制格式输出。这样,通过解析非二进制格式文件,可以获知哪一范围内的二进制字符串为待修改的目标节点的测试数据,再将修改的文件二进制格式的目标协议格式文件进行测试,从而可以对Protobuf存储格式的接口进行异常测试,以降低预知风险,有效提升功能测试效率;进一步地,通过在网页界面修改测试数据,使得上下游接口无需修改代码就可以进行测试,能够有效降低功能测试所需时间及成本。
图2为本发明的实施例二接口数据测试装置结构示意图,如图2所示,本实施例的装置可以包括:模拟服务器构建模块21、参数设置模块22、文件转换模块23以及测试模块24,其中,
模拟服务器构建模块21,用于构建一用于接口数据测试的模拟服务器;
本实施例中,构建的模拟服务器(mock server)作为上游应用,上游应用与作为测试的下游应用协商使用的测试数据格式为Protobuf格式,并共用一结构描述文件(.proto文件)。
本实施例中,作为一可选实施例,利用面向对象、解释型计算机程序设计语言网页框架构建模拟服务器。
参数设置模块22,用于在模拟服务器中设置接口数据测试参数并存储为非二进制格式文件;
本实施例中,通过在模拟服务器中构建虚拟的用于接口功能测试的测试数据,然后将构建的测试数据保存为JSON文件。
本实施例中,作为一可选实施例,非二进制格式文件为轻量级数据交换格式文件或可扩展标记语言文件。
文件转换模块23,用于调用所述模拟服务器中预先编写的文件转换脚本,将存储的非二进制格式文件二进制格式的目标协议格式文件;
本实施例中,作为一可选实施例,可以将下游接口指定到模拟服务器中获取上游数据。
本实施例中,作为一可选实施例,文件转换脚本为面向对象、解释型计算机程序设计语言脚本。
测试模块24,用于根据数据异常测试流程,获取所述目标协议格式文件以进行数据异常测试。
本实施例中,作为一可选实施例,该装置还包括:
参数编辑模块(图中未示出),用于根据数据异常测试目标,修改所述非二进制格式文件中节点的接口数据测试参数。
本实施例中,作为一可选实施例,修改所述非二进制格式文件中节点的接口数据测试参数,包括:
删除所述非二进制格式文件中的特定节点数据;或者
修改所述非二进制格式文件中的特定节点对应的属性值。
本实施例中,如果需要构建异常案例,只需依据测试结果修改对应JSON文件中的相关内容即可。
本实施例的装置,可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。
在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本发明实施例还提供一种电子设备,所述电子设备包含前述任一实施例所述的装置。
图3为本发明电子设备一个实施例的结构示意图,可以实现本发明图1-2所示实施例的流程,如图3所示,上述电子设备可以包括:壳体31、处理器32、存储器33、电路板34和电源电路35,其中,电路板34安置在壳体31围成的空间内部,处理器32和存储器33设置在电路板34上;电源电路35,用于为上述电子设备的各个电路或器件供电;存储器33用于存储可执行程序代码;处理器32通过读取存储器33中存储的可执行程序代码来运行与可执行程序代码对应的程序,用于执行前述任一实施例所述的接口数据测试方法。
处理器32对上述步骤的具体执行过程以及处理器32通过运行可执行程序代码来进一步执行的步骤,可以参见本发明图1-2所示实施例的描述,在此不再赘述。
该电子设备以多种形式存在,包括但不限于:
(1)移动通信设备:这类设备的特点是具备移动通信功能,并且以提供话音、数据通信为主要目标。这类终端包括:智能手机(例如iPhone)、多媒体手机、功能性手机,以及低端手机等。
(2)超移动个人计算机设备:这类设备属于个人计算机的范畴,有计算和处理功能,一般也具备移动上网特性。这类终端包括:PDA、MID和UMPC设备等,例如iPad。
(3)便携式娱乐设备:这类设备可以显示和播放多媒体内容。该类设备包括:音频、视频播放器(例如iPod),掌上游戏机,电子书,以及智能玩具和便携式车载导航设备。
(4)服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
(5)其他具有数据交互功能的电子设备。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
为了描述的方便,描述以上装置是以功能分为各种单元/模块分别描述。当然,在实施本发明时可以把各单元/模块的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。