一种网络服务接口评测方法和装置与流程

文档序号:25957441发布日期:2021-07-20 17:17阅读:128来源:国知局
一种网络服务接口评测方法和装置与流程

本发明涉及服务接口评测技术领域,尤其涉及一种网络服务接口评测方法和装置。



背景技术:

app、邮件等具有专门客户端的互联网服务,其服务接口的质量能直接影响到用户对整个服务的观感和体验,如果接口bug、漏洞多并且不稳定,很容易导致业务故障、用户流失并最终导致收益下降。但由于服务接口缺乏对应的ui,测试人员不能根据ui上的可操作元素以及每个部分操作后能观察到的结果来人工判断测试通过与失败的条件,也难以在测试时方便地准确确定对应测试对象和环境的测试数据,因此具有一定的门槛而导致难以实施,并且存在很多接口只做了简单的测试,甚至只能通过包含ui的客户端软件来间接测试,严重情况下会导致部分功能上线后不定时地引发投诉,甚至出现故障并导致大量经济损失的情况。

为此,现有技术中通常是采用postman、jmeter这些工具,通过手工输入要测试的url、httpheader和请求参数信息,手工执行请求,然后观察返回结果,把返回结果与接口的说明文档进行对照判断接口是否正常;或者利用文档管理工具例如yapi提供类似postman的功能,进行手动发起测试、记录结果和整合测试报告。

但上述现有技术通常需要手动重复输入大量数据,而且无法集中自动搜集、分析测试结果,且还需要手工整理测试报告,接口评测便利性较低,导致接口评测的效率降低,无法及时发现服务中的漏洞,进而容易造成大量的经济损失。



技术实现要素:

本发明提供了一种网络服务接口评测方法和装置,解决了现有的接口评测方案的便利性较低,接口评测效率下降,无法及时发现接口服务中的漏洞,进而容易造成大量的经济损失的技术问题。

本发明提供的一种网络服务接口评测方法,包括:

接收针对至少一个待评测接口的接口说明文档;

解析所述接口说明文档,生成由多个接口信息组成的待评测接口信息列表;

根据所述待评测接口信息列表和预设的评测操作语言规则,生成每个所述待评测接口对应的多个测试用例;

查询预设的数据库,得到每个所述测试用例对应的参数值,并构建每个所述待评测接口对应的评测套件;

响应于输入的评测启动指令,运行多个所述评测套件,生成每个所述待评测接口对应的运行报告并输出。

可选地,所述接收针对至少一个待评测接口的接口说明文档的步骤,包括:

当接收到接口评测请求时,确定所述接口评测请求对应的至少一个待评测接口,并生成与每个所述待评测接口对应的输入提示;

接收响应所述输入提示上传的接口说明文档。

可选地,所述解析所述接口说明文档,生成由多个接口信息组成的待评测接口信息列表的步骤,包括:

检测所述接口说明文档的文档类型;

若所述文档类型为普通文档,则通过预设的应用编程接口对所述接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表;

若所述文档类型为纯表格文档,则从所述接口说明文档中按行提取字段内容,并根据全部所述字段内容生成由多个接口信息组成的待评测接口信息列表;

若所述文档类型为网页文档,则采用预设的网页爬虫工具对所述接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表。

可选地,所述普通文档包括文字部分和表格部分;所述若所述文档类型为普通文档,则通过预设的应用编程接口对所述接口说明文档进行解析,生成待评测接口信息列表的步骤,包括:

若所述文档类型为普通文档,则判断所述文字部分是否存在分节序号;

若判定存在所述分节序号,则通过预设的应用编程接口根据输入的序号层次信息,确定所述文字部分中的接口名序号层次;

通过所述应用编程接口基于所述接口名序号层次,确定各个所述待评测接口对应的接口名称;

若所述表格部分中的任一行或任一列包含目标内容时,则对所述目标内容的相邻行或相邻列进行解析,确定至少一个接口调用信息;

若所述接口名称与所述目标内容之间的距离小于预设阈值,则将所述接口名称与所述接口调用信息关联,得到所述接口信息;

采用全部所述接口信息生成待评测接口信息列表。

可选地,所述若所述文档类型为普通文档,则通过预设的应用编程接口对所述接口说明文档进行解析,生成待评测接口信息列表的步骤,还包括:

若判定不存在所述分节序号,则通过所述应用编程接口根据输入的判断文本,判断所述文字部分是否符合指定条件;

将符合所述指定条件的所述文字部分作为目标段落;

将所述目标段落中与各个所述待评测接口相同的名称分别确定为各个所述待评测接口对应的所述接口名称。

可选地,所述根据所述待评测接口信息列表和预设的评测操作语言规则,生成每个所述待评测接口对应的多个测试用例的步骤,包括:

从所述待评测接口信息列表中提取多个所述接口信息;

基于多个所述接口信息和所述待评测接口的对应关系,确定每个待评测接口所对应的目标接口信息;

按照预设的评测操作语言规则,对所述目标接口信息进行格式转换,生成每个所述待评测接口对应的多个测试用例。

可选地,所述数据库包括系统数据库和网页数据库;所述查询预设的数据库,得到每个所述测试用例对应的参数值,并构建每个所述待评测接口对应的评测套件的步骤,包括:

从每个所述测试用例分别提取参数变量名称;

采用结构化查询语言检索所述系统数据库,确定与所述参数变量名称对应的值作为参数值;

从所述网页数据库中确定存在所述待评测接口的目标网页;

检索所述目标网页,确定与所述参数变量名称对应的值作为所述参数值;

采用所述参数值对每个所述测试用例中的所述参数变量名称进行赋值,生成评测套件。

可选地,所述响应于输入的评测启动指令,运行多个所述评测套件,生成每个所述待评测接口对应的运行报告并输出的步骤,包括:

响应与输入的评测启动指令,确定所述评测套件对应的运行方案;

分别获取多个预设的子服务器的计算单元数量;

根据每个所述子服务器的计算单元数量和所述运行方案,将多个所述评测套件分配到至少一个所述子服务器;

通过所述子服务器运行多个所述评测套件,生成多个运行结果;

通过所述子服务器分别将所述运行结果回传到与每个所述子服务器均连接的主服务器;

通过所述主服务器根据全部所述运行结果,生成每个所述待评测接口对应的运行报告并输出。

可选地,所述运行方案包括运行数量、每个所述评测套件分别对应的请求次数和请求总数;所述根据每个所述子服务器的计算单元数量和所述运行方案,将多个所述评测套件分配到至少一个所述子服务器的步骤,包括:

根据每个所述子服务器的计算单元数量与预设单元数的差值作为评测进程的数量;

若所述运行数量小于或等于所述评测进程的数量,则将多个所述评测套件分配到至少一个所述子服务器,以使每个所述评测进程执行一个所述评测套件;

若所述运行数量大于所述评测进程的数量,则计算所述请求总数与所述计算单元数量的商值作为数量阈值;

为每个所述子服务器中的每个计算单元分别分配一个所述请求总数大于所述数量阈值的所述评测套件;

若存在剩余的所述评测套件和剩余的所述子服务器,则按照预设规则进行分组,得到多个套件小组;

将每个所述套件小组分别分配到剩余的所述子服务器。

本发明还提供了一种网络服务接口评测装置,包括:

说明文档接收模块,用于接收针对至少一个待评测接口的接口说明文档;

信息列表生成模块,用于解析所述接口说明文档,生成由多个接口信息组成的待评测接口信息列表;

测试用例生成模块,用于根据所述待评测接口信息列表和预设的评测操作语言规则,生成每个所述待评测接口对应的多个测试用例;

评测套件构建模块,用于查询预设的数据库,得到每个所述测试用例对应的参数值,并构建每个所述待评测接口对应的评测套件;

运行报告生成模块,用于响应于输入的评测启动指令,运行多个所述评测套件,生成每个所述待评测接口对应的运行报告并输出。

从以上技术方案可以看出,本发明具有以下优点:

本发明通过接收针对至少一个待评测接口的接口说明文档,对其接口说明文档进行解析,以生成由于多个接口信息组成的待评测接口信息列表;再按照预设的评测操作语言规则,对待评测接口信息列表内的多个接口信息进行格式简化转换,生成每个待评测接口对应的多个测试用例;在得到测试用例后,可以对预设的数据库发起数据查询行为,以确定在每个测试用例中所使用的参数值,并以多个测试用例为基础构建每个待评测接口对应的评测套件;当接收到输入的评测启动指令时,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。从而解决现有的接口评测方案的便利性较低,接口评测效率下降,无法及时发现接口服务中的漏洞,进而容易造成大量的经济损失的技术问题,提高接口评测便利性和评测效率,更为及时地发现接口漏洞,降低经济损失。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1为本发明实施例一提供的一种网络服务接口评测方法的步骤流程图;

图2为本发明实施例二提供的一种网络服务接口评测方法的步骤流程图;

图3为本发明实施例三提供的一种网络服务接口评测装置的结构框图。

具体实施方式

本发明实施例提供了一种网络服务接口评测方法和装置,用于解决现有的接口评测方案的便利性较低,接口评测效率下降,无法及时发现接口服务中的漏洞,进而容易造成大量的经济损失的技术问题。

为使得本发明的发明目的、特征、优点能够更加的明显和易懂,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,下面所描述的实施例仅仅是本发明一部分实施例,而非全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

请参阅图1,图1为本发明实施例一提供的一种网络服务接口评测方法的步骤流程图。

本发明提供的一种网络服务接口评测方法,包括:

步骤101,接收针对至少一个待评测接口的接口说明文档;

待评测接口指的是能够提供网络服务的软件接口,当客户端访问服务器时,实际访问的是服务器程序提供的一个个的接口。客户端的每一个需要与服务器通信的功能,都必须访问接口来调用服务器程序提供的功能,才能完成完整的业务操作。如果接口不稳定或出现故障,那么客户端面向用户提供的业务功能就无法正常运行。接口使用的通信协议可以是http/https或tcp/ip,一般会在这些协议基础上添加应用自定义的通信要求。

在本发明实施例中,在用户需要对至少一个待评测接口进行评测时,可以通过输入与这些待评测接口对应的接口说明文档,以为后续用例的生成提供数据基础。

其中,接口说明文档中可以包括至少一个待评测接口的接口说明信息,可以包括但不限于待评测接口的接口名称、接口url(uniformresourcelocator,资源定位符)、接口调用方法、接口功能、接口评测需要的参数名称和参数类型等信息。

步骤102,解析接口说明文档,生成由多个接口信息组成的待评测接口信息列表;

在接收到用户输入的接口说明文档后,可以进一步对接口说明文档进行解析,从中提取到与待评测接口对应的接口信息,如:名称、接口url、请求方法、请求参数的名称、类型和位置等信息,以生成待评测接口信息列表。

步骤103,根据待评测接口信息列表和预设的评测操作语言规则,生成每个待评测接口对应的多个测试用例;

测试用例(testcase)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单来说,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。

在得到待评测接口信息列表后,可以从中进行接口信息的提取,以获取到每个待评测接口和接口信息之间的对应关系。最后基于预设的评测操作语言规则,对提取得到的对应关系进行格式转换,以方便后续对参数修改,生成每个待评测接口对应的多个测试用例。

步骤104,查询预设的数据库,得到每个测试用例对应的参数值,并构建每个待评测接口对应的评测套件;

由于待评测接口信息列表中可能并没有包括用例所使用的参数的值,若是逐个人工输入,在数量级较大的情况下难以实现。因此可以在得到多个测试用例后,从每个测试用例中提取所需要的参数类型和名称等信息。再在预设的数据库中进行数据查询,以获取到得到每个测试用例对应的参数值;为方便后续进行多线程的处理,提高评测效率,可以对赋值后的测试用例以接口为单位进行分组,构建每个待评测接口对应的评测套件。

其中,每个待评测接口可以对应一个或多个评测套件。

步骤105,响应于输入的评测启动指令,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。

当获取到每个待评测接口对应的评测套件后,可以进一步准备开始进行对待评测接口的测评。为提高测评效率和灵活性,可以接收用户输入的评测启动指令,以便于在特定时段运行多个评测套件。当评测套件运行完成后,可以生成对应于待评测接口的运行报告,输出该运行报告。

在本发明实施例中,通过接收针对至少一个待评测接口的接口说明文档,对其接口说明文档进行解析,以生成由于多个接口信息组成的待评测接口信息列表;再按照预设的评测操作语言规则,对待评测接口信息列表内的多个接口信息进行格式简化转换,生成每个待评测接口对应的多个测试用例;在得到测试用例后,可以对预设的数据库发起数据查询行为,以确定在每个测试用例中所使用的参数值,并以多个测试用例为基础构建每个待评测接口对应的评测套件;当接收到输入的评测启动指令时,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。从而解决现有的接口评测方案的便利性较低,接口评测效率下降,无法及时发现接口服务中的漏洞,进而容易造成大量的经济损失的技术问题,提高接口评测便利性和评测效率,更为及时地发现接口漏洞,降低经济损失。

请参阅图2,图2为本发明实施例二提供的一种网络服务接口评测方法的步骤流程图。

本发明可以应用于浏览器中,例如设置特定的web门户,其采用前后端分离的架构主要通过react和java语言开发,实际部署时按主服务器和子服务器的方式部署运行,通过配置指定每个实例的角色。所有服务器通过保存评测结果的本地存储路径,实现从一个服务器可以访问任意其他服务器上的评测结果文件。主要功能可以包括以下:

a)webide

在研发上主要是实现接口服务评测代码开发过程中,根据用户的输入来进行代码提示,以及对评测代码不同成分的颜色高亮显示,实现与传统ide例如visualstudio、idea或eclipse的同类效果。编辑器就是html的textarea控件,通过div、span组合起来后用css可以控制它的外观。在运行时,直接检查代码,如果发现上述评测操作语言中的任意一个,则返回专门的css样式类名;类似地,当根据字符串的内容、格式从代码中检查到变量定义、用例名、导入的库时,分别返回各自对应的css类名,这样就可以实现代码中不同部分用不同的颜色、不同字体显示。

代码提示也利用html及其事件响应机制来触发,通过html、css来控制ui形式。在运行时自动检测用户的输入,对每一个用空格分割的字符串,如果上述定义的接口质量评测操作语言中有包含这个字符时,不区分大小写同时支持按中文查找,则立即把所有的操作过滤出来,一行显示一个,然后在用户编辑的位置弹出一个div展示所有过滤出来的操作,从而实现根据用户输入内容的代码提示。利用上述确定的用例文件的格式,这部分还支持在代码加载完毕后自动解析出每个评测套件中脚本开发人员自定义的操作及其参数,然后把这些操作放到内存中的一个集合中,然后进一步添加到编辑器的允许弹出的操作集之中。在判断是否需要弹出div来根据用户的输入提示代码时,同步查询这个集合中的内容,从而实现对任意自动测试脚本的灵活支持。弹出的div还可以检测根据[文档]这种标记以及python注释的格式自动提取每个操作的说明内容,在弹出提示时自动展示这些文档。

这样就可以对任意测试用例代码文件,支持实时地获取文件中自定义自动操作语言,包括中文接口操作动作,具有比较好的灵活性和通用性。webide在整体研发上采用react和java设计实现。

b)运行日志和报告

在上述工作的基础上,提供产品、项目、接口和用例的管理功能,其中的关联关系有助于根据每个接口的执行结果,包括是否成功、耗时、失败时的类型、消息等,分析对应功能、项目和产品的情况。对每次运行可以自动为每个用例记录各个步骤内部是否执行成功、执行的开始和结束时间。根据协议专有字段,例如http的状态码,或用户输入的校验内容判断执行是否成功。如果失败,自动记录服务端响应的全部内容。对http/https或者自定义应用协议,可以自动解析、校验状态码或者协议规定的其他典型字段,并进一步判定是否运行成功、结果符合预期。执行结果可以通过json格式的数据文件保存,同时会异步地写入到数据库服务器,然后可以根据这些数据利用预先定义好的模板同步生成html格式的面向研发的详细运行日志以及对套件中所有用例执行情况、性能和问题分析的运行报告,这些内容可以与webide整合,方便开发、评测工作,并且可以作为历史记录保存,方便后续随时查看。

通过格式:序号-产品代号-项目代号-功能代号的方式规范套件文件名,产品和项目代号与产品、项目的信息对应,解决相关资源的关联问题。

c)接口服务质量评测结果分析

由于网络、机器性能不稳定,评测结果也会存在一定的不稳定的情况,需要结合多次结果反复验证。因此,webide会在一定时间段内,例如在下班后、夜间和第二天的特定时间点,例如上班前,自动运行所有用例并且自动重新执行运行失败的用例,重复尝试的时间段和最大次数都可以设置;如果任意用例有1次或几次执行成功,则不再验证对应用例。

最后可以汇总所有结果为html或pdf分析报告,按错误原因、失败次数、运行耗时从大到小排序,webide会自动生成问题的应对建议,应对建议的生成规则可以包括但不限于:1)若只发生一次的错误,可以提示为“未重复发生、忽略”;2)对于反复发生超过一定次数的错误,通过去重后保存名称与发生次数等信息到数据库表中。其中,在保存错误后,还可以通过web管理功能对保存的错误进行归类,以确定属于bug的错误,例如空指针、越界这类异常属于典型的代码bug、以及属于人为错误例如拼写错误等。在生成报告时,把超过一定错误次数阀值的所有用例的用例名、错误信息、发生时间、执行耗时、应对建议以及相关产品、项目信息汇总后,还可以通知到研发、质量相关工作人员,以便于针对这些重点问题进行进一步的检验确认。

可选地,随着对不同类型的错误的不断标注与学习,自动评测所发现的问题或错误会愈加精准,以便于用户进行针对性修复。

本发明提供的一种网络服务接口评测方法,包括:

步骤201,接收针对至少一个待评测接口的接口说明文档;

可选地,步骤201可以包括以下子步骤s11-s12:

s11、当接收到接口评测请求时,确定接口评测请求对应的至少一个待评测接口,并生成与每个待评测接口对应的输入提示;

s12、接收响应输入提示上传的接口说明文档。

待评测接口指的是能够提供网络服务的软件接口,当客户端访问服务器时,实际访问的是服务器程序提供的一个个的接口。客户端的每一个需要与服务器通信的功能,都必须访问接口来调用服务器程序提供的功能,才能完成完整的业务操作。如果接口不稳定或出现故障,那么客户端面向用户提供的业务功能就无法正常运行。接口使用的通信协议可以是http/https或tcp/ip,一般会在这些协议基础上添加应用自定义的通信要求。

在本发明实施例中,当接收到用户输入的接口评测请求时,可以根据接口评测请求显示对应的多个提示,以不同的颜色进行高亮显示;待用户选定待评测接口后,生成与每个待评测接口对应的输入提示,接收用户各级输入提示上传的接口说明文档,以提供后续待评测接口信息列表的数据基础。

步骤202,解析接口说明文档,生成由多个接口信息组成的待评测接口信息列表;

进一步地,步骤202可以包括以下子步骤s21-s24:

s21、检测接口说明文档的文档类型;

在本发明实施例中,可以通过对接口说明文档的文档后缀进行检测,以确定接口说明文档的文档类型。

值得一提的是,接口说明文档的文档类型普通文档、表格文档或者网页文档,包括但不限于msword的doc和docx、spring支持的swagger、excel等形式。

s22、若文档类型为普通文档,则通过预设的应用编程接口对接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表;

在本发明的一个示例中,普通文档包括文字部分和表格部分;步骤s22可以包括以下子步骤s221-226:

s221、若文档类型为普通文档,则判断文字部分是否存在分节序号;

s222、若判定存在分节序号,则通过预设的应用编程接口根据输入的序号层次信息,确定文字部分中的接口名序号层次;

s223、通过应用编程接口基于接口名序号层次,确定各个待评测接口对应的接口名称;

在本发明实施例中,若文档类型为普通文档,则遍历该普通文档,确定其中的文字部分是否存在分节序号,若是存在,则说明该文字部分存在多级分节层次;此时可以生成输入提示,通过预设的应用编程接口接收用户输入的序号层次信息,以得知文字部分的接口名序号层次;而文字部分,接口名所处的序号层次通常是相同的,此时可以根据接口名序号层次,定位各个待评测接口所对应的接口名称。

其中,应用编程接口可以为apachepoi。

在具体实现中,在通过webide前端接收用户提交的接口评测请求时,可以要求用户输入必要的内容来方便后续对接口关键信息的解析,包括所属产品、项目、接口文档形式,如果是word文档,还需要指明接口名的序号层次、接口url、参数列的列名。对msword形式的接口文档,支持的接口信息包括:接口名、接口url(统一资源标识符)、请求方法、请求参数的名称和类型、位置。利用apache的poi可以解析文档段落和表格。当段落内带有1.2.3这样的分节内容时,由于一个文档中的各个接口之间的共性,所以所有的接口往往具有同样的分节层次,例如许多接口的标题都是3级标题,对这类文档利用这个特点可以找出所有的接口名。

s224、若表格部分中的任一行或任一列包含目标内容时,则对目标内容的相邻行或相邻列进行解析,确定至少一个接口调用信息;

s225、若接口名称与目标内容之间的距离小于预设阈值,则将接口名称与接口调用信息关联,得到接口信息;

s226、采用全部接口信息生成待评测接口信息列表。

在本发明实施例中,可以若表格部分中的任一行或任一列包含目标内容时,则对目标内容的相邻行或相邻列进行解析,确定至少一个接口调用信息;若接口名称与目标内容之间的距离小于预设阈值,则将接口名称与接口调用信息关联,得到接口信息;采用全部接口信息生成待评测接口信息列表。

在具体实现中,接下来按从上到下的顺序解析,由于接口说明、接口的输入参数、响应结果普遍都会用表格的方式说明,用poi可以基于对表格部分的分析直接获取指定行、列的内容,或者当某一行、某一列包含指定内容时,解析相邻行列的内容,从而获取请求方法、接口url、参数及其类型和是否必须的信息。通过计算表格在文档中的位置与接口名的位置的距离,当这个距离小于一定的预设阈值时,可以判定表格属于对应的接口;对于一个接口说明中的其他表格,利用计算出来的表格之间的距离以及表格中是否包含指定内容或判断提取的内容是否符合一定的规则,也可以找出需要的表格及其中的需要解析的信息,通过这些措施可以把接口名和从表格中处理得到的其他信息关联起来,即可以确定这些信息属于哪一个接口。这样对于部分研发人员在打字时由于一定的随意性而输出不太规范的接口文档,也能够正确地解析出待评测接口信息列表。

在本发明的另一个示例中,步骤s22还可以包括以下子步骤s227-s229:

s227、若判定不存在分节序号,则通过应用编程接口根据输入的判断文本,判断文字部分是否符合指定条件;

s228、将符合指定条件的文字部分作为目标段落;

s229、将目标段落中与各个待评测接口相同的名称分别确定为各个待评测接口对应的接口名称。

在本发明实施例中,若是判定文字部分不存在分节序号,则可以通过应用编程接口根据输入的判断文本,以确定文字部分是否符合指定条件。将符合指定条件的文字部分作为目标段落,最后对目标段落中与各个待评测接口相同的名称,确定为各个待评测接口对应的接口名称

其中,判断文本可以包括但不限于每个接口开始的小节的层次、接口开始和结束文本等;指定条件可以包括但不限于是否包含指定的文本、不包含另外的文本、上一段检验的内容的位置与当前段落的位置的距离。本发明实施例对此不作限制。

在具体实现中,可以利用java语言的一个接口根据实际需要开发一系列不同的实现类的机制,并配合工厂模式可以根据用户在前端设置的生产需求自动适配上述任意文档形式、任意项目的接口说明格式,在检测到一个段落时,可以同步检查上一个接口的结束内容是否满足指定条件,还可以在解析不同的接口文档时,将上述判断文本分别作为参数传入。通过这种方式,在接口名中没有分节序号时也能解析出用例名。

s23、若文档类型为纯表格文档,则从接口说明文档中按行提取字段内容,并根据全部字段内容生成由多个接口信息组成的待评测接口信息列表;

在具体实现中,若是文档类型为纯表格文档,则表明该文档内的每行内容都表示一个待评测接口的全部接口信息,此时可以按行提取的方式,从接口说明文档中提取到每行的每个表格内的字段内容;最后以全部字段内容按照待评测接口的接口名进行分类,得到多个接口信息,采用多个接口信息组合成待评测接口信息列表。

其中,可以按照接口名的首字母排序的方式进行待评测接口信息列表的组合。

s24、若文档类型为网页文档,则采用预设的网页爬虫工具对接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表。

网页爬虫工具指的是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,例如通用网络爬虫(generalpurposewebcrawler)、聚焦网络爬虫(focusedwebcrawler)、增量式网络爬虫(incrementalwebcrawler)、深层网络爬虫(deepwebcrawler)等。

在本发明实施例中,若文档类型为网页文档,例如swagger网页形式,可以采用预设的网页爬虫工具对该文档进行解析,以关键字和url等为目标,从网页文档中获取到对应的接口信息,最后采用全部接口信息组成待评测接口信息列表。

步骤203,从待评测接口信息列表中提取多个接口信息;

在本发明实施例中,可以从待评测接口信息列表进行信息提取,以获取到多个接口信息,提供测试用例的数据基础。

步骤204,基于多个接口信息和待评测接口的对应关系,确定每个待评测接口所对应的目标接口信息;

由于待评测接口信息列表中包含有多个待评测接口分别对应的接口信息,而接口信息中包括有接口名及其调用信息。因此可以通过多个接口信息中的接口名与待评测接口的名称进行比对,分别得到每个待评测接口所对应的目标接口信息。

步骤205,按照预设的评测操作语言规则,对目标接口信息进行格式转换,生成每个待评测接口对应的多个测试用例;

在本发明实施例中,在得到每个待评测接口分别对应的目标接口信息后,可以按照预设的评测操作语言规则对目标接口信息进行格式转换,生成每个待评测接口对应的多个测试用例。

在具体实现中,格式转换的过程可以如下a-e:

a)通过抽象实际测试工作中的必要工作步骤为一个个属于某个类的方法或函数,抽象出必须要输入的参数,并且简化操作的参数的形式,例如一个对http接口的评测操作,典型地可以是:发起get请求参数1=参数1的值参数2=参数2的值、输出、校验结果等;

b)再利用python语言支持通过中文定义类名、函数名甚至变量的特性,直接把评测操作定义为中文形式的操作语言,使得对接口的典型评测操作都有对应的实现代码,利用python生态圈的相关技术开发实现每个评测操作并测试通过,底层采用python生态圈对每个通信协议的支持库实现与服务器的通信,例如,对于http/https服务可以采用psf的requests库实现封装参数、向服务器发送get或post请求并解析响应的操作,也可以根据需要利用pythonsdk自带的组件开发底层的通讯客户端组件实现对任意自定义通信协议的支持。

经过这样封装的接口质量评测操作可以是:连接xx(业务名)接口服务器、发起post请求并验证等,对接口执行结果的校验可以通过操作参数接收校验条件和内容然后在操作语言的实现中自动完成校验并输出接口的完整返回,供开发和调试使用,这些组件测试后按照到pythonsdk的安装目录下,使之与sdk自带的一系列基础库一样可以供不同的项目复用,然后提供专门的工具解析这些组件,获取函数名、形参和返回值作为支持的评测操作,接下来作为允许弹出提示的集合生成js文件后同步到前端项目指定的目录,可以实现基于网页的webide上的代码弹出提示。进一步,通过[template]、[模板]或类似写法,可以把url、参数、校验条件作为可变内容,实现基于数据驱动的评测;类似地可以用[documentdation]或[文档]来表明后面的内容是用于注释的字符串;

c)把对常见的各种服务接口的评测操作语言封装为一个有限的集合,把用户的输入与这个集合中的内容做语义分析对比,通过计算编辑距离和余弦相似度,在满足一定的相似条件时可以把用户的输入转换为已支持的评测操作语言供用户选择确认;

d)把对一系列接口的评测脚本分为变量及其值设置、用例列表、基础操作(可选)4个部分,通过专门格式的字符串唯一区分各个部分,这些部分组成的文件作为测试套件。变量用形如${变量名}的格式定义,方便在后续代码中引用。用例列表中的每个用例通过换行、空格区分用例名、操作和参数,即用例之间用空行分割,用例名顶格写,用例内部用4个空格分割操作、参数和返回值,这样不但简单可以区分常见的参数中包含1个空格的情况。连接服务器这样的一次性操作可以在开始阶段利用对每个服务的支撑中作为基础操作自动完成。这样就可以把对http/https、websocket接口的评测操作以一条语义实现;

e)采集所有用例的执行结果,包括用例名、包含的操作、每个操作的执行结果、开始和结束的时间戳、是否成功、失败时的错误提示消息、重要性登记等,最后把一次执行的所有测试结果输出成json格式的文件到本地硬盘上,后续可以根据这个文件中的数据生成html、pdf等不同形式的评测报告。

经过上述步骤实现的测试用例的形式为:

获取设备信息

[文档]这是一个完整用例的例子。

[模板]请求get

接口url校验内容参数1=参数1值参数2=参数2值

上面“请求get”的具体内容可以在任意数量的接口中进行复用。

请求get

[文档]需要参数有接口url,检查msg的包含文本,接口的业务参数

[参数]${api}${checkedcontent}&{field_dictionary}

连接接口服务器${host}

${param}生成加密参数&{field_dictionary}

${resp}发起get请求${api}${param}${host}

输出${resp.status_code}

校验结果${resp.status_code}${resp.cnt}${checkedcnt}

对连接服务器的操作封装,会因为接口服务在协议、加解密上的差异有所不同。通过生成加密参数(可选,如果需要)、连接接口服务、按http协议封装评测操作为请求get、请求post、请求delete、请求put供使用,再把加密结果作为操作请求的参数即可;对于java相关的数据加解密需求,可以利用jvm开放的c/c++接口以及python方便调用c/c++接口的特点直接调用服务方提供的jar,不仅简单、能快速对接成功还能通过混淆等措施保障安全性。对于websocket接口,类似地对这个协议封装项目的评测操作语言,包括连接接口服务、生成加密参数、发送消息、接受消息,也能支持所有接口的评测;

对于邮件底层服务等基于tcp/ip协议开发的服务的接口,按使用这些接口的邮件客户端的功能或者开发、测试上的需求的步骤,按上述原则,也可以封装为一个个的接口质量评测操作,包括:收邮件、打开邮箱、遍历附件、是否有附件、解析邮件头、获得邮件内容字段、标记已读、打开和关闭邮箱,这样封装的操作可以用于评测不同邮件服务厂商的产品。

步骤206,查询预设的数据库,得到每个测试用例对应的参数值,并构建每个待评测接口对应的评测套件;

进一步地,数据库包括系统数据库和网页数据库;步骤206可以包括以下子步骤s41-s45:

s41、从每个测试用例分别提取参数变量名称;

s42、采用结构化查询语言检索系统数据库,确定与参数变量名称对应的值作为参数值;

在本发明实施例中,在得到多个测试用例后,由于并未对测试用例中的参数变量进行赋值,此时可以从每个测试用例中分别提取到参数变量名称;再采用结构化查询语言对系统数据库进行检索,确定与参数变量名对应的值作为参数值。

例如,可以设置特定的sql对系统数据库进行检索,以提高对测试用例中的参数选择便利性。

结构化查询语言(structuredquerylanguage)简称sql,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

其中,系统数据库指的是待评测接口所存在的系统的数据库。

s43、从网页数据库中确定存在待评测接口的目标网页;

s44、检索目标网页,确定与参数变量名称对应的值作为参数值;

s45、采用参数值对每个测试用例中的参数变量名称进行赋值,生成评测套件。

在本发明实施例中,可以从网页数据库中,确定存在待评测接口的目标网页,通过检索目标网页,以确定与参数变量名称对应的值作为参数值,再采用上述参数值对每个测试用例中的参数变量名称进行赋值,生成评测套件。

例如,从网页查询时,可以用javascript代码在指定网页输入对于评测用户的数据然后发起查询操作,再解析查询结果即可提取需要的数据的值。

下面是对测试用例内的参数变量进行赋值后的示例:

登录邮箱

打开邮箱host=imap.189.cnuser=accountpassword=密码port=993

获取最新的邮件附件信息

${latest}收邮件sender=accounttimeout=120

${parts}遍历附件${latest}

log${parts}

设置套件变量${latest}

获取最新的邮件

${mail_content}getemailbody${latest}

设置套件变量${mail_content}

等待最新未读的邮件

${latest}收邮件sender=accounttimeout=120status=unseen

获取最新未读的邮件并标记为已读

标记邮件已读${latest}

值得一提的是,对于整数、浮点类型的参数,还可以自动生成上、下限、0、-1这样的参数值对应的测试用例;对于布尔类型的参数,可以分别生成参数为true和false时的测试用例。

步骤207,响应于输入的评测启动指令,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。

可选地,步骤207可以包括以下子步骤s51-s56:

s51、响应与输入的评测启动指令,确定评测套件对应的运行方案;

在本发明实施例中,可以通过输入的评测启动指令,以确定评测套件对应的运行方案,其中,运行方案可以包括但不限于指定要运行哪些测试套件文件、在哪些服务器上运行、生成的评测结果文件的命名规则。

s52、分别获取多个预设的子服务器的计算单元数量;

在本发明实施例中,可以通过采集各个子服务器和主服务器的cpu核数和内存大小,按照1核cpu+2gb内存作为一个计算单元,以确定多个子服务器的计算单元数量。

s53、根据每个子服务器的计算单元数量和运行方案,将多个评测套件分配到至少一个子服务器;

进一步地,运行方案包括运行数量、每个评测套件分别对应的请求次数和请求总数;步骤s53可以包括以下子步骤s531-s536:

s531、根据每个子服务器的计算单元数量与预设单元数的差值作为评测进程的数量;

s532、若运行数量小于或等于评测进程的数量,则将多个评测套件分配到至少一个子服务器,以使每个评测进程执行一个评测套件;

在本发明的一个示例中,每个子服务器的计算单元数量可以相同也可以不同。在对评测套件的分配过程中,可以先计算每个子服务器的计算单元数量与预设单元数的差值,以保证每个子服务器能够在维持正常运转的同时尽可能执行评测套件中的测试用例。若运行数量小于或等于评测进程的数量,则将多个评测套件分配到至少一个子服务器,以使每个评测进程执行一个评测套件。

其中,预设单元数可以设置为2、3、4等,本发明实施例对此不作限制。

s533、若运行数量大于评测进程的数量,则计算请求总数与计算单元数量的商值作为数量阈值;

s534、为每个子服务器中的每个计算单元分别分配一个请求总数大于数量阈值的评测套件;

s535、若存在剩余的评测套件和剩余的子服务器,则按照预设规则进行分组,得到多个套件小组;

s536、将每个套件小组分别分配到剩余的子服务器。

在本发明实施例中,若是评测套件的运行数量大于评测进程的数量,则可以根据每个评测套件中的请求总数与计算单元数量的商值作为数量阈值。将请求总数超过数量阈值的评测套件分配到子服务器中的计算单元;若是存在剩余的评测套件,则可以按照预设规则对评测套件进行分组,最后将每个套件小组分配到剩余的子服务器。

其中,把剩余的评测套件按上述数量阀值、请求总数分组,使得每个小组的请求总数小于数量阀值,或者减少一个套件后小组的请求总数小于上述阀值,请求总数可以http请求总数。

s54、通过子服务器运行多个评测套件,生成多个运行结果;

s55、通过子服务器分别将运行结果回传到与每个子服务器均连接的主服务器;

s56、通过主服务器根据全部运行结果,生成每个待评测接口对应的运行报告并输出。

在本发明实施例中,可以通过多个子服务器运行多个评测套件,以分别生成运行结果,再通过子服务器分别将运行结果回传到连接各个子服务器的主服务器,最后通过主服务器根据全部运行结果,生成每个待评测接口对应的运行报告并输出。

其中,运行结果可以包括但不限于是否成功、耗时、失败时的类型、消息等,分析对应功能、项目和产品的情况。对每次运行可以自动为每个用例记录各个步骤内部是否执行成功、执行的开始和结束时间。根据协议专有字段,例如http的状态码,或用户输入的校验内容判断执行是否成功。如果失败,自动记录服务端响应的全部内容。对http/https或者自定义应用协议,可以自动解析、校验状态码或者协议规定的其他典型字段,并进一步判定是否运行成功、结果符合预期。运行报告可以包括但不限于html或pdf分析报告,还可以按失败次数、运行耗时从大到小排序。

在本发明实施例中,通过接收针对至少一个待评测接口的接口说明文档,对其接口说明文档进行解析,以生成由于多个接口信息组成的待评测接口信息列表;再按照预设的评测操作语言规则,对待评测接口信息列表内的多个接口信息进行格式简化转换,生成每个待评测接口对应的多个测试用例;在得到测试用例后,可以对预设的数据库发起数据查询行为,以确定在每个测试用例中所使用的参数值,并以多个测试用例为基础构建每个待评测接口对应的评测套件;当接收到输入的评测启动指令时,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。从而解决现有的接口评测方案的便利性较低,接口评测效率下降,无法及时发现接口服务中的漏洞,进而容易造成大量的经济损失的技术问题,提高接口评测便利性和评测效率,更为及时地发现接口漏洞,降低经济损失。

请参阅图3,图3为本发明实施例三提供的一种网络服务接口评测装置的结构框图。

本发明还提供了一种网络服务接口评测装置,包括:

说明文档接收模块301,用于接收针对至少一个待评测接口的接口说明文档;

信息列表生成模块302,用于解析接口说明文档,生成由多个接口信息组成的待评测接口信息列表;

测试用例生成模块303,用于根据待评测接口信息列表和预设的评测操作语言规则,生成每个待评测接口对应的多个测试用例;

评测套件构建模块304,用于查询预设的数据库,得到每个测试用例对应的参数值,并构建每个待评测接口对应的评测套件;

运行报告生成模块305,用于响应于输入的评测启动指令,运行多个评测套件,生成每个待评测接口对应的运行报告并输出。

可选地,说明文档接收模块301,包括:

输入提示生成子模块,用于当接收到接口评测请求时,确定接口评测请求对应的至少一个待评测接口,并生成与每个待评测接口对应的输入提示;

文档接收子模块,用于接收响应输入提示上传的接口说明文档。

可选地,信息列表生成模块302,包括:

文档类型检测子模块,用于检测接口说明文档的文档类型;

第一列表生成子模块,用于若文档类型为普通文档,则通过预设的应用编程接口对接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表;

第二列表生成子模块,用于若文档类型为纯表格文档,则从接口说明文档中按行提取字段内容,并根据全部字段内容生成由多个接口信息组成的待评测接口信息列表;

第三列表生成子模块,用于若文档类型为网页文档,则采用预设的网页爬虫工具对接口说明文档进行解析,生成由多个接口信息组成的待评测接口信息列表。

可选地,普通文档包括文字部分和表格部分;第一列表生成子模块,包括:

分节序号判断单元,用于若文档类型为普通文档,则判断文字部分是否存在分节序号;

层次确定单元,用于若判定存在分节序号,则通过预设的应用编程接口根据输入的序号层次信息,确定文字部分中的接口名序号层次;

第一接口名称确定单元,用于通过应用编程接口基于接口名序号层次,确定各个待评测接口对应的接口名称;

接口调用信息确定单元,用于若表格部分中的任一行或任一列包含目标内容时,则对目标内容的相邻行或相邻列进行解析,确定至少一个接口调用信息;

接口信息生成单元,用于若接口名称与目标内容之间的距离小于预设阈值,则将接口名称与接口调用信息关联,得到接口信息;

列表生成单元,用于采用全部接口信息生成待评测接口信息列表。

可选地,第一列表生成子模块,还包括:

指定条件判断单元,用于若判定不存在分节序号,则通过应用编程接口根据输入的判断文本,判断文字部分是否符合指定条件;

目标段落确定单元,用于将符合指定条件的文字部分作为目标段落;

第二接口名称确定单元,用于将目标段落中与各个待评测接口相同的名称分别确定为各个待评测接口对应的接口名称。

可选地,测试用例生成模块303,包括:

接口信息提取子模块,用于从待评测接口信息列表中提取多个接口信息;

目标接口信息确定子模块,用于基于多个接口信息和待评测接口的对应关系,确定每个待评测接口所对应的目标接口信息;

测试用例生成子模块,用于按照预设的评测操作语言规则,对目标接口信息进行格式转换,生成每个待评测接口对应的多个测试用例。

可选地,数据库包括系统数据库和网页数据库;评测套件构建模块304,包括:

参数变量名称提取子模块,用于从每个测试用例分别提取参数变量名称;

第一参数值确定子模块,用于采用结构化查询语言检索系统数据库,确定与参数变量名称对应的值作为参数值;

目标网页子模块,用于从网页数据库中确定存在待评测接口的目标网页;

第二参数值确定子模块,用于检索目标网页,确定与参数变量名称对应的值作为参数值;

评测套件构建子模块,用于采用参数值对每个测试用例中的参数变量名称进行赋值,生成评测套件。

可选地,运行报告生成模块305,包括:

运行方案确定子模块,用于响应与输入的评测启动指令,确定评测套件对应的运行方案;

计算单元数量获取子模块,用于分别获取多个预设的子服务器的计算单元数量;

套件分配子模块,用于根据每个子服务器的计算单元数量和运行方案,将多个评测套件分配到至少一个子服务器;

运行结果生成子模块,用于通过子服务器运行多个评测套件,生成多个运行结果;

结果回传子模块,用于通过子服务器分别将运行结果回传到与每个子服务器均连接的主服务器;

运行报告生成子模块,用于通过主服务器根据全部运行结果,生成每个待评测接口对应的运行报告并输出。

可选地,运行方案包括运行数量、每个评测套件分别对应的请求次数和请求总数;套件分配子模块,包括:

评测进程数量确定单元,用于根据每个子服务器的计算单元数量与预设单元数的差值作为评测进程的数量;

第一评测套件分配单元,用于若运行数量小于或等于评测进程的数量,则将多个评测套件分配到至少一个子服务器,以使每个评测进程执行一个评测套件;

数量阈值计算单元,用于若运行数量大于评测进程的数量,则计算请求总数与计算单元数量的商值作为数量阈值;

第二评测套件分配单元,用于为每个子服务器中的每个计算单元分别分配一个请求总数大于数量阈值的评测套件;

套件小组生成单元,用于若存在剩余的评测套件和剩余的子服务器,则按照预设规则进行分组,得到多个套件小组;

套件小组分配单元,用于将每个套件小组分别分配到剩余的子服务器。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的模块、子模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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