掌桥专利:专业的专利平台
掌桥专利
首页

一种基于API的自动化测试方法、装置及计算机设备

文献发布时间:2023-06-19 09:27:35


一种基于API的自动化测试方法、装置及计算机设备

技术领域

本申请实施例涉及信息处理领域,具体涉及一种基于API的自动化测试方法、装置及计算机设备。

背景技术

在网站的设计和维护中,开发人员会不断增加或修改网站的功能模块,为网站增加新的功能,或修改已有的一些功能。开发人员在完成对网站的修改后,会对网站进行测试,检测网站是否能够正常运行。

由于网站的功能模块繁多,互相之间也存在联系,开发人员每次修改后,不仅要对修改的模块进行测试,也需要对整个网站进行测试。这就导致每次修改后,不论是前端开发人员还是后端开发人员都需要耗费大量时间和精力对网站的各个功能进行一一测试。

发明内容

本申请实施例提供了一种基于API的自动化测试方法、装置及计算机设备,能够通过API接口被调用运行,自动完成对网站的功能测试。

本申请第一方面提供了一种基于API的自动化测试方法,包括:

通过API接口接收测试请求;

获取测试脚本;

获取目标网站;

根据所述测试请求,启动测试脚本,所述测试脚本包括多个测试套件,每个所述测试套件中包括至少一个测试用例;

使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

根据所述测试用例的执行结果向目标人员发送测试报告。

可选地,所述获取测试脚本,包括:

从云端存储中获取测试脚本。

可选地,所述获取目标网站,包括:通过API接口接收目标网站地址。

可选地,所述根据所述测试用例的执行结果向目标人员发送测试报告,包括:

检测所述测试用例的执行结果是否正确;

若不正确,向所述测试用例对应的目标人员发送测试报告。

可选地,所述测试脚本使用unittest框架构建。

本申请第二方面提供一种基于API的自动化测试装置,包括:

接收单元,用于通过API接口接收测试请求;

第一获取单元,用于获取测试脚本;

第二获取单元,用于获取目标网站;

启动单元,用于根据所述测试请求,执行测试脚本,所述测试脚本包括多个测试套件,每个所述测试套件中包括至少一个测试用例;

测试单元,用于使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

发送单元,用于根据所述测试用例的执行结果向目标人员发送测试报告。

可选地,所述第一获取单元具体用于:

从云端存储中获取测试脚本。

可选地,所述第二获取单元具体用于:

通过API接口接收目标网站地址。

可选地,所述测试单元包括:

检测模块,用于检测所述测试用例的执行结果是否正确;

发送模块,用于向所述测试用例对应的目标人员发送测试报告。

本申请第三方面提供一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现前述第一方面中任一项所述方法的步骤。

本申请第四方面提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被处理器执行时,实现前述第一方面中任一项所述的方法的步骤。

从以上技术方案可以看出,本申请实施例具有以下优点:本申请的基于API的自动化测试方法能够从API启动编写好的整合的测试套件,自动使用测试套件对网站进行各个功能模块的测试,使得开发人员不必自行手动对网站的各个模块一一进行测试,减轻了开发人员的工作量。

附图说明

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

图1为本申请一种基于API的自动化测试方法的一个实施例示意图;

图2为本申请一种基于API的自动化测试方法的一个实施例示意图;

图3为本申请一种基于API的自动化测试装置的一个实施例示意图;

图4为本申请计算机设备的一个实施例示意图。

具体实施方式

本申请实施例提供了一种基于API的自动化测试方法、装置及计算机设备,用于帮助目标人员在对网站进行修改后,快捷、全面地对网站的功能进行测试。

本申请通过预先设计测试脚本的方式,在测试脚本中准备了对网站各个功能模块进行测试用的测试套件。无论是前端目标人员还是后端目标人员,都可以通过公用的API接口来调用测试服务器来运行这套测试脚本,对网站的各个功能模块进行快速、完整的测试。

目前网站后台服务版本迭代快,需要频繁进行重复回归测试,多次重复回归老功能接口。通过API接口自动化测试网站,可以极大程度提高后端接口的测试效率。如果需要因为网站的改动而需要修改测试脚本时,修改测试套件内的测试用例,就可以使测试脚本适用于修改后的网站,大大减少了开发人员的工作量。该脚本存储在网盘或测试服务器上,前端和后端的开发人员在取得了相应权限后,都可以对测试脚本进行更新,使开发人员的测试脚本、测试环境保持一致。且该测试用例被API接口调用时,可以在本身性能较高的测试服务器上运行,不必占用其他计算机的计算资源。

下面对本申请的基于API的自动化测试方法进行具体说明,请参见图1,本申请一种基于API的自动化测试方法的实施例包括:

101、通过API接口接收测试请求;

通过预设的API接口接收来自开发人员的测试请求。开发人员在对目标网站进行了升级、维护或其他任何改动后,都可以使用这个API接口远程对网站进行功能测试,该接口通常采用HTTP协议的接口、以json格式的字符串传输数据。

102、获取测试脚本,所述测试脚本包括多个测试套件,每个所述测试套件中包括至少一个测试用例;

获取用于测试目标网站的测试脚本,该测试脚本由多个测试套件构成,每个测试套件中都至少包括一个测试用例,这些测试套件和测试用例可以对网站的某个功能进行单独的测试。将这些测试套件和测试用例整合在一起后,可以对网站进行较为全面的测试,排查网站的各个功能模块是否正常运行。一种较佳的实施方式是使用pyhthon下的unittest单元测试框架进行编写,unittest单元测试框架具备编写测试用例、组织测试用例、执行测试用例、输出报告等自动化框架的功能,同时使用requests库编写测试用例,requests库内功能齐全,可以自动实现持久连接keep-alive,完成所有的浏览器操作,便于扩展。

可以理解的是,一个网站常常需要许多开发人员协同进行开发设计,测试脚本的内容也可能需要多个开发人员共同进行编辑。因此,这个测试脚本可以存在于云端存储中,例如存储在网盘中或公司内部的测试服务器中,以便各个开发人员共同对测试脚本进行在线修改。本申请中,测试脚本由一个个测试用例构成,因此对网站个某个功能模块进行了修改之后,可以只对这个功能模块对应的测试用例或测试套件进行修改,而不必对整个测试脚本进行替换,使得测试脚本能够重复使用。同样地,开发人员对网站进行增删功能模块时,只需要添加或删除对应的测试用例或测试套件,就能方便地使测试脚本适用于修改后的目标网站中。

103、获取目标网站;

由于各个网站差异较大,每个测试脚本都是针对一个特定的目标网站设计的。该目标网站可以是本地API接口地址,也可以是运行于其他服务器上的网站地址。如果该网站在还处在内部开发状态,那么网站地址也可能频繁变更,因此目标网站可以与测试脚本存放在相同位置。或者可以在每次进行测试时,由开发人员从API接口发送目标网站的地址到测试脚本运行的计算机上。

104、根据所述测试请求,启动测试脚本;

根据开发人员内的测试请求,启动测试脚本对目标网站的各个功能模块进行测试。为了提高测试测准确性,保证网站在普通用户的访问下也正常运行,可以在启动时为测试脚本搭建对应的运行环境以模仿普通用户访问网站时的情形,并且在该运行环境下开始测试脚本的运行。

105、使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

按照测试脚本内的顺序,执行测试用例对目标网站的各个功能进行测试,并记录这些测试用例的执行结果,这些测试用例的结果以字符串或数字的形式记录在表单中。为了准确还原普通用户的运行环境,可以在每个测试运行前采用python的setup指令搭建运行环境,在该运行环境中执行测试用例。在执行结束后,再使用python的tearDown指令清除上一个测试用例的数据,以便执行下一个测试用例。在一些项目开发过程中,为了节约测试时间,不必每次将所有测试用例执行完毕。只要在测试脚本的执行过程中只要有任何一个测试用例执行错误,就可以不再执行之后的测试用例。

106、根据所述测试用例的执行结果向目标人员发送测试报告。

对这些测试用例的执行结果进行分析,得到方便开发人员直接查看的测试报告,并将测试报告通过微信、邮箱或其他企业内部通讯方式发送到开发人员的设备上,以便开发人员查看这次测试的结果。根据网站功能模块的不同,具体的测试结果也多种多样。开发人员可以通过测试结果,查看哪些模块运行存在问题,并根据具体问题和测试结果,对网站进行进一步的修改。

可以理解的是,上述实施例中以开发人员为例,对该实施例进行了详细讲解。但是本申请所说的目标人员可以不局限于上述直接参与网站修改与测试的开发人员,还可以包括该网站项目的负责人、运营人员或其他部门的工作人员,使得各部门都能及时了解和跟进此次对网站的修改进度。可选地,测试用例执行结束后,测试服务器还可以将测试报告在本地或云端进行存档,以便日后查阅对照。

在另一实施例中,还增加了向开发人员区别性发送测试报告的功能,仅对存在问题的功能模块的开发人员发送测试报告。具体请参阅图2,该实施例包括:

201、通过API接口接收测试请求;

202、获取测试脚本;

203、获取目标网站;

204、根据所述测试请求,启动测试脚本;

205、使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

本实施例的步骤201至205与图1所示实施例的步骤101至105类似,具体此处不再赘述。

206、检测所述测试用例的执行结果是否正确;若不正确,执行步骤207;

依此检测这些测试用例的执行结果是否正确,具体可以为每个测试用例准备具体的参考数值,如果测试用例的执行结果与参考数值相同,就认为测试用例的执行结果正确。本申请所提供的基于API的自动化测试方法主要用于在对网站进行修改、维护后再次进行测试,因此是存在网站的历史数据可以进行参考的,校对本次测试中的测试用例执行结果与过去的测试用例执行结果是否相同,也是判断测试用例的执行结果是否正确的一个可行方法。

207、向所述测试用例对应的目标人员发送测试报告。

测试用例可以验证网站的某个功能是否正常,而大型网站功能繁多,各个功能由不同的开发人员协同开发。因此,如果测试脚本在对网站的测试中发现错误时,可以根据查看具体是哪些测试用例的结果存在问题,从而找到这些测试用例对应的网站功能模块,重点针对这些存在问题的功能模块进行修复。因此,可以仅向对那些未通过测试用例的测试的功能模块的开发人员发送测试报告,告知这些开发人员在本次测试脚本的运行中,他们所负责的模块未能正确地通过对应测试用例的测试,需要根据测试报告对自己所开发的功能模块进行进一步的修复。具体可以是通过邮箱向测试有问题的功能模块的开发人员发送该功能模块所对应的测试用例的执行结果,或者是向其发送整个测试报告。测试报告的具体形式可以与图1所示实施例的206类似。可以理解的是,一个功能模块可以对应多个测试用例,一个功能模块的开发也可能对应多名开发人员,或者一名开发人员同时负责网站的多个功能模块的开发。因此,最终发送邮件的数量也测试用例的错误数没有必然联系。

可以看出,本申请通过对业务进行封装和API测试框架的设计思路,实现了通过API接口进行自动化测试,与人工测试相比显著提升了测试效率和测试质量,可以作为冒烟测试或回归测试的质量保障的基础。测试人员编写好该测试脚本后,计算机可以全自动化执行测试脚本,大大的提高了工作效率。结合现有测试技术栈后,本发明可快速实现自动化回归测试。此外,该技术方案可统筹到自动化体系中,快速复制到其他环境,脚本复用度高。测试结果方便开发人员查看,定位和分析,实现前端开发人员和后端开发人员的共用测试脚本。

对应于上述方法,请参阅图3,本申请还提供了一种基于API的自动化测试装置,包括:

接收单元301,用于通过API接口接收测试请求;

第一获取单元302,用于获取测试脚本,所述测试脚本包括多个测试套件,每个所述测试套件中包括至少一个测试用例;

第二获取单元303,用于获取目标网站;

启动单元304,用于根据所述测试请求,执行测试脚本;

测试单元305,用于使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

发送单元306,用于根据所述测试用例的执行结果向目标人员发送测试报告。

本实施例中的一种基于API的自动化测试装置所执行的操作与前述图1对应实施例的方法类似。

在一些具体实施例中,第一获取单元302具体用于:从云端存储中获取测试脚本。

在一些具体实施例中,第二获取单元303具体用于:通过API接口接收目标网站地址。

在一些具体实施例中,发送单元306包括:

检测模块3061,用于检测所述测试用例的执行结果是否正确;

发送模块3062,用于向所述测试用例对应的目标人员发送测试报告。

下面对计算机设备的一个实施例进行描述,请参阅图4,计算机设备400可以包括一个或一个以上中央处理器(central processing units,CPU)401和存储器405,该存储器405中存储有一个或一个以上的应用程序或数据。其中,存储器405可以是易失性存储或持久存储。存储在存储器405的程序可以包括一个或一个以上模块,每个模块可以包括对业务服务器中的一系列指令操作。更进一步地,中央处理器401可以设置为与存储器405通信,在计算机设备400上执行存储器905中的一系列指令操作。计算机设备400还可以包括一个或一个以上电源402,一个或一个以上有线或无线网络接口403,一个或一个以上输入输出接口404,和/或,一个或一个以上操作系统,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等。该中央处理器401可以执行前述图1或2所示实施例的对应方法,具体此处不再赘述。

本申请还出示了一种存储介质,该存储介质中存储有指令,当该指令在计算机上运行时,使得计算机执行如下的方法:

通过API接口接收测试请求;

获取测试脚本,所述测试脚本包括多个测试套件,每个所述测试套件中包括至少一个测试用例;

获取目标网站;

根据所述测试请求,启动测试脚本;

使用所述测试用例对所述目标网站进行测试,得到所述测试用例的执行结果;

根据所述测试用例的执行结果向目标人员发送测试报告。

在一些实施例中,所述获取测试脚本,包括:

从云端存储中获取测试脚本。

在一些实施例中,所述获取目标网站,包括:通过API接口接收目标网站地址。

在一些实施例中,所述根据所述测试用例的执行结果向目标人员发送测试报告,包括:

检测所述测试用例的执行结果是否正确;

若不正确,向所述测试用例对应的目标人员发送测试报告。

在一些实施例中,所述测试脚本使用unittest框架构建。

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

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

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

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,read-onlymemory)、随机存取存储器(RAM,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。

技术分类

06120112178100