创建接口用例自动化测试脚本的方法及装置与流程

文档序号:18642302发布日期:2019-09-11 23:36阅读:232来源:国知局
创建接口用例自动化测试脚本的方法及装置与流程

本发明涉及自动化测试领域,尤其是一种创建接口用例自动化测试脚本的方法、装置、设备和存储介质。



背景技术:

软件测试是app软件开发周期中必不可少的组成部分,通过软件测试实现软件正确性、完整性、安全性和质量的管理,而接口测试是测试软件系统组件间接口的一种测试,接口测试主要用于检测外部系统与系统之间以及内部各个子模块之间的交互点,该测试的重点是检查数据的交换、传递和控制管理过程,以及系统间的相互逻辑依赖关系等,属于功能测试的一种,接口测试在保障产品质量的过程中处于至关重要的环节,同时其带来的收益也非常可观,接口测试能大大提高测试效率,能发现功能测试不能发现的问题等。

但是测试过程中会出现下面这些问题,例如接口数量庞大,编写接口自动化测试用例会耗费相当多人力资源,并且相似的接口用例编写基本是复制粘贴后进行适应性修改,工作相对枯燥,另外,当接口文档编写较为简单且代码逻辑描述不全时,会造成编写自动化测试用例的人工沟通成本非常大,最后,由于不同测试人员编写的脚本风格和测试侧重点有偏差,从而造成用例维护困难,测试功能不全等问题,因此提出一种自动分析接口描述文档和接口代码创建接口用例自动化测试脚本的方法来解决这些问题是很有必要的。



技术实现要素:

本发明实施例旨在至少在一定程度上解决背景技术中的技术问题之一。为此,本发明的目的是提供一种自动分析接口描述文档和接口代码创建接口用例自动化测试脚本的方法、装置、设备和存储介质。

本发明实施例所采用的技术方案是:

第一方面,本发明提供一种创建接口用例自动化测试脚本的方法,包括步骤:

分析接口描述文档和接口代码,获取接口特征数据和请求参数;

根据所述请求参数设计接口测试请求参数;

将所述接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型;

在所述神经网络模型中输入待测接口的接口特征数据,生成测试模板;

将所述接口测试请求参数和对应的断言参数填充进所述测试模板中,创建用于所述待测接口的自动化测试脚本。

进一步地,所述接口特征数据包括以下一种或多种:请求url、请求方法或返回参数。

进一步地,所述神经网络模型采用tensorflow框架搭建。

进一步地,采用梯度下降法进行神经网络模型训练。

进一步地,所述神经网络模型的损失函数为交叉熵损失函数。

第二方面,本发明还提供一种创建接口用例自动化测试脚本的装置,包括:

获取接口特征数据和请求参数模块,用于分析接口描述文档和接口代码,获取接口特征数据和请求参数;

设计接口测试请求参数模块,用于根据所述请求参数设计接口测试请求参数;

神经网络模型训练模块,用于将所述接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型;

测试模板生成模块,用于在所述神经网络模型中输入待测接口的接口特征数据,生成测试模板;

创建自动化测试脚本模块,用于将所述接口测试请求参数和对应的断言参数填充进所述测试模板中,创建用于所述待测接口的自动化测试脚本。

第三方面,本发明提供一种创建接口用例自动化测试脚本的设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如第一方面任一项所述的方法。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行指令,所述计算机可执行指令用于使计算机执行如第一方面任一项所述的方法。

本发明实施例的有益效果是:

本发明通过分析接口描述文档和接口代码,获取接口特征数据和请求参数,并根据请求参数设计接口测试请求参数,将接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型,然后在神经网络模型中输入待测接口的接口特征数据,生成测试模板,将接口测试请求参数和对应的断言参数填充进测试模板中,创建用于待测接口的自动化测试脚本。克服了现有测试过程中需要测试的接口数量庞大,采用手动编写接口自动化测试用例耗费相当多人力资源,并且相似的接口用例编写基本是复制粘贴后进行适应性修改,工作相对枯燥的问题,以及当接口文档编写较为简单且代码逻辑描述不全时,造成的编写自动化测试用例的人工沟通成本高的问题;另外,还克服了不同测试人员编写的脚本风格和测试侧重点有偏差,导致的用例维护困难、测试功能不全等问题,达到了解放人力资源、降低自动化测试成本、减少重复性劳动的效果。

附图说明

图1是本发明中创建接口测试自动化测试脚本方法的实施例一的实现流程图;

图2是本发明中创建接口测试自动化测试脚本方法的实施例一的特征数据示意图;

图3是本发明中创建接口测试自动化测试脚本方法的实施例一中接口特征数据另一种实施方式示意图;

图4是本发明中创建接口测试自动化测试脚本方法的实施例一的自动化测试脚本模板划分示意图;

图5是本发明中创建接口测试自动化测试脚本方法的实施例一的接口特征数据与自动化测试脚本模板对应关系示意图;

图6是本发明中创建接口测试自动化测试脚本装置的实施例二的结构框图。

具体实施方式

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

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。

实施例一:

本发明的一个实施例通过自动分析接口描述文档和接口代码创建接口用例自动化测试脚本,而接口测试流程与一般功能测试流程一致,包括:编写测试接口描述文档,根据接口描述文档编写测试用例,执行测试,并查看不同的参数请求以及接口的返回的数据是否达到预期,实施例一提供一种创建接口测试自动化测试脚本的方法。

在项目开发过程中,由前后端工程师共同定义接口并编写接口描述文档,之后都根据这个接口描述文档进行开发,一直维护到项目结束。便于项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发细节,另外项目维护中或者项目人员更迭的时候,方便后期人员查看和维护,接口测试就是在接口描述文档和接口代码的基础上,通过测试不同情况下的入参与之相应的出参信息来判断接口是否符合或满足相应的功能性、安全性要求。

图1为本发明实施例提供的一种创建接口测试自动化测试脚本的方法的实现流程图,如图1所示,该方法可以包括以下步骤:

s1:获取接口特征数据和请求参数。通过静态分析的方式,分析接口描述文档和接口代码,获取接口特征数据和请求参数,本实施例中,接口特征数据包括:请求url、请求方法和返回参数。

其中,请求方法包括以下几种:get、post、retrieve和update,请求url指接口地址,请求参数包括参数类型及其限制条件,返回参数指调用接口后返回的数据,请求参数和返回参数均包括:字段、说明、类型、备注、是否必须这5项。

s2:设计接口测试请求参数。根据步骤s1中所获取的请求参数设计接口测试请求参数,本实施例中,指通过接口描述文档和接口代码分析请求参数的类型以及取值特点,利用等价类划分、边界值等设计方法,设计接口测试请求参数。

s3:训练神经网络模型,指将接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型,本实施例中,神经网络模型为训练得到接口特征数据与自动化测试脚本模板的对应关系,记为m=f(d),其中m指自动化测试脚本模板,d指接口特征数据,f()指两者的对应关系。

s4:生成测试模板。

在步骤s3训练后的神经网络模型中输入待测接口的接口特征数据,生成测试模板,本实施例中,获得神经网络模型之后,即可通过在模型中输入待测接口或者变更后接口的接口特征数据,得到对应的自动化测试模板。

s5:创建自动化测试脚本,将设计的接口测试请求参数和其对应的断言参数填充进步骤s4中生成的测试模板中,创建用于待测接口或变更后接口的自动化测试脚本,接口测试中,无需挨个检查每个接口的返回参数是否正确,通过添加断言参数的方式对接口的正确性进行判断,本实施例中,断言参数指:首先断定一个表达式结果为真,如果其测试结果不为真,就通过抛出异常或者其他方式,以提示这个测试用例失败的一种参数。

下面以一个具体实施示例详细描述本实施例一种创建接口测试自动化测试脚本方法的实现过程。本具体实施示例中,将接口特征数据记为d,表示为d1、d2、d3…dn,将自动化测试脚本模板记为m,表示为m1、m2…mm。

首先通过静态分析的方式,分析接口描述文档和接口代码获得接口特征数据,如图2所示,为实施例一的接口特征数据示意图,设相关的模块有x个,表中接口特征数据有d1(请求方法)、d2(代码分支个数)、d3(请求参数个数)、d4(每个请求参数类型)。

如图3所示,为实施例一中接口特征数据另一种实施方式示意图,该图中给出了具体的d1、d2、d3…dx的内容,例如请求方法、代码分支数、参数个数、是否必须以及各参数的类型和取值范围。

本实施例中,通过接口描述文档和接口代码分析请求参数的类型以及取值特点,利用等价类划分、边界值等设计方法,设计接口测试请求参数。

对自动化测试脚本模板进行功能划分,如图4所示,为实施例一的自动化测试脚本模板划分示意图,具体的,可以根据断言参数的结果不同划分自动化测试脚本模板,例如,接口测试时,每发出一个http请求之后,都会有一个断言参数的响应,而http本身会有一个状态码用来标示这个请求是否成功,常见的状态码有以下几种:200:表示这个请求是正确的,服务器能够返回;302:表示把这个请求重定向到别的地方;401:表示访问的页面没有授权;403:表示没有权限访问这个页面;404:表示没有这个页面;500:表示服务器内部异常;504:表示服务器端超时,没返回结果,可以根据上述断言参数的返回状态划分自动化测试脚本模板。

将接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型,本实施例中可选用(基于tensorflow框架搭建神经网络,进一步的,可选取梯度下降法进行训练,进一步地,神经网络模型的损失函数可选为交叉熵损失函数以及其他能够替代交叉熵损失函数效果的损失函数。

具体的,tensorflow是谷歌基于distbelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理,tensor(张量)意味着n维数组,flow(流)意味着基于数据流图的计算,tensorflow为张量从流图的一端流动到另一端的计算过程,tensorflow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。

本实施例中,梯度下降法包括:批量梯度下降、随机梯度下降多余半括号以及小批量梯度下降,其中批量梯度下降法指在每一次迭代时使用所有样本来进行梯度的更新,随机梯度下降法指从训练样本中随机抽出一组,训练后按梯度更新一次,然后再抽取一组,再更新一次,在样本量极其大的情况下,不需要训练完所有的样本即可获得一个损失值在可接受范围之内的模型,而小批量随机梯度下降法指每次从样本中随机抽取一小批进行训练,而不是一组。

本实施例中,交叉熵损失函数基于softmax计算来的,softmax将网络最后输出z通过指数转变成概率形式,softmax作为分类任务的输出层,本实施例中,可以将神经网络模型归为分类过程。交叉熵损失函数表示预测值和真实值之间的距离,交叉熵越小,说明两个值的分布越接近,即预测值越接近真实值,能够用来反馈神经网络模型的预测效果。

如图5所示,为实施例一接口特征数据与自动化测试脚本模板对应关系示意图,图5中可见,不同的接口对应不同的自动化测试脚本模板。

例如,选取500个接口和已经能够稳定运行的自动化测试脚本模板作为训练样本,进行神经网络训练,每个接口都有对应的接口特征数据(d),统计这500个接口的接口特征数据,在服务器端使用tensorflow框架,进行神经网络训练后可以得到模型m=f(d),其中m指自动化测试脚本模板,d指接口特征数据,f()指两者的对应函数关系。

得到训练后的神经网络模型后,输入待测接口或者变更接口的接口特征数据,生成测试模板,并将接口测试请求参数和对应的断言参数填充进测试模板中,创建用于待测接口的自动化测试脚本。

本实施例的一种创建接口测试自动化测试脚本的方法,克服了现有测试过程中需要测试的接口数量庞大,采用手动编写接口自动化测试用例耗费相当多人力资源,并且相似的接口用例编写基本是复制粘贴后进行适应性修改,工作相对枯燥的问题,以及当接口文档编写较为简单且代码逻辑描述不全时,造成的编写自动化测试用例的人工沟通成本高的问题,还克服了不同测试人员编写的脚本风格和测试侧重点有偏差,导致的用例维护困难、测试功能不全等问题,达到了解放人力资源、降低自动化测试成本、减少重复性劳动的效果,使测试人员有更多的时间去学习思考、理解产品,从而提高其工作积极性,并且通过统一的方法生成的测试用例,其风格统一,便于后期用例维护,能够基本覆盖测试内容,提高自动化接口测试的效率。

以上是本发明实施例一所示的一种创建接口测试自动化测试脚本的方法的详细过程,下面通过实施例二描述本发明另一实施例的一种创建接口用例自动化测试脚本的装置。

实施例二:

如图6所示,为本实施例提供的一种创建接口用例自动化测试脚本的装置结构框图,如图所示,包括:

获取接口特征数据和请求参数模块10,用于分析接口描述文档和接口代码,获取接口特征数据和请求参数;

设计接口测试请求参数模块20,用于根据请求参数设计接口测试请求参数;

神经网络模型训练模块30,用于将接口特征数据和自动化测试脚本模板作为训练样本集,进行神经网络训练,获得训练后的神经网络模型;

测试模板生成模块40,用于在神经网络模型中输入待测接口的接口特征数据,生成测试模板;

创建自动化测试脚本模块50,用于将接口测试请求参数和对应的断言参数填充进测试模板中,创建用于待测接口的自动化测试脚本。

实施例三:

本发明实施例还提供一种创建接口用例自动化测试脚本的设备,包括:

至少一个处理器,以及与所述至少一个处理器通信连接的存储器;

其中,所述处理器通过调用所述存储器中存储的计算机程序,用于执行如实施例一所述的方法。

另外,本发明还提供一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,其中计算机可执行指令用于使计算机执行如实施例一所述的方法。

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

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