3分钟带你入门接口自动化测试,接口自动化测试用什么工具

dylinchen 250 2022-07-11


1) 什么是接口测试



开始学习接口自动化测试之前,我们先要来了解什么是接口,以及什么是接口测试。




我们都知道,测试从级别上划分可以分为


   ◆  组件测试


   ◆  集成测试


   ◆  系统测试


   ◆  验收测试




其中在集成测试这个阶段,一个最主要的测试活动就是接口测试。




在组件测试中,我们对单个组件自身的功能性能等指标进行验证,上升到集成测试级别,我们则进一步去验证组件之间的交互和集成,而组件之间的交互,就是通过"接口"来达成的。




所以一定程度上,集成测试和接口测试概念是大幅度重叠的。(就组件集成/接口测试而言,其实还有系统集成测试)




比如在主流的web项目中,前端和后端之间的交互,就要通过接口,也是我们这个系列要应对的主要任务。


 


2)为什么要做接口测试



我经常喜欢用一台汽车做为例子来讲述组件,集成和系统测试之间的关系。




比如,现在有一台汽车需要做质量检测,那么我们可以怎么测试?




 ◆  组件测试→测试这台汽车的各个部件(如发动机、底盘、变速箱、制动器、转向系统、轮毂轮胎)




 ◆  集成测试→测试这台汽车各部件之间的联动(变速箱如何控制发动机的运作?转向系统如何对轮毂产生影响?)




 ◆  系统测试→ 测试这台汽车做为一个整体的功能性能




有一个疑问是,难道我在系统测试这个级别,就不能测试上述例子中的“变速箱如何控制发动机的运作”指标吗?




其实一定程度而言是可以的,这也是为什么在过去一段时间内,其实大量的测试人员是被堆积在系统测试级别的。




但随着我们的行业越来越发展,测试理念越来越先进,测试人员的技能储备也更加丰富,现在的IT项目中已经越来越重视测试的左移和测试的深度。




接口测试在笔者看来,其最大的好处莫过于如下两点:


 


1、可以尽早的让测试介入项目,更早的发现和解决问题。比如在整体系统还未开发完毕时,部分接口其实已经可供测试了。




2、可以从更底层的角度进行测试,从而弥补系统测试级别容易忽略和难以触发的一些测试。


 


完备的接口测试可以给项目质量带来远超系统测试的收益,参考测试金字塔理论:



3) HTTP请求的类别



本系列会主要应对是http类型的接口测试




我们先通过一个表格来列举出8种http请求的类别定义,具体请求方法的实际应用我们在后续的自动化实例中再进一步探讨。



在实际工作中,最常见的是GET以及POST方法。


 


2接口自动化工具准备




1)必备工具

要搭建http接口测试环境,我们需要以下的东西:


 ◆  JDK:推荐使用1.8


 ◆  集成开发环境:这里我们使用eclipse


 ◆  自动化构建管理:Maven


 ◆  其他相应的依赖包我们通过maven管理


 


2)JDK的安装

JDK的下载安装和环境变量配置网上有大量教程,本文不再赘述




3)Eclipse的安装

eclipse的安装也非常简单,本文不再赘述




4)Maven的安装

Maven的下载安装和环境变量配置网上有大量教程,本文不再赘述


 


以上不再赘述的部分如果遇到问题,可以找UP主



 


3接口自动化项目




在eclipse中新建一个maven项目MavenAPIProject,打开项目自带的pom.xml文件,加入以下依赖信息:



修改完毕后保存,就可以看到eclipse会在后台开始去自动下载并添加以上所有项目依赖的jar包。




我们现在主要引入的是httpclient、httpcore以及testNG三个依赖包:




 ◆  httpclient是一个高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,我们用它来创建和管理请求;




 ◆  HttpCore是对HTTP协议的基础封装的一套组件,我们测试接口过程中会用到其中的底层网络方法;




 ◆  testNG是一套单元测试框架,为我们提供测试入口和测试组织,后续如果用到其他依赖包我们再去添加。

现在市场上能做接口自动化测试的工具有很多,一搜一大把,让人眼花缭乱。我们去选择对应实现方式时,不管是框架体系还是成熟稳定的工具,核心目的都是期望引入的技术能在最低投入的情况下达到最优效果。


那么我们选择依据出来了:


一是最低投入。

二是最优效果。

一、先来看最优效果

要达到该点,在做接口测试前,做为测试者,我们需要非常明确自己选择测试工具去达到的核心目的。通常情况下可能有以下几个:


这里不仅仅只是说明了全流程自动化接口测试实现方案,对于常规的接口测试也进行了罗列


开发者调试接口


测试人员提前介入测试,尽早发现程序缺陷


测试人员对于系统接口回归,确保后台逻辑无缺陷,降低版本迭代风险


如是情况1或者2,在实际的项目开发过程中,这其中的空余时间不固定且零散,按照这样的预期,我们期望接口测试工具更为便捷,可以快速的配置出接口测试脚本或用例。这类接口自动化测试工具有:


1、Postman


Postman工具的优势:


清晰的图形界面

结合界面操作可以快速的配置接口请求信息,提供各种类型接口配置,以及数据配置

有丰富响应断言,方便对于接口进行快速验证

Postman满足了基本常见接口测试,但是还是有部分不足的地方,下面就讲。


Postman工具的不足:


无法连接数据库

无法进行共有的代码封装以及引入第三方插件

2、Jmeter


Jmeter工具的优势


C/S架构,基于java实现的工具,配置起来比较容易,更偏向于性能测试;

JMeter提供了BeanShell编程能力,可以写出比较灵活的测试脚本;

JMeter提供了比较高级的扩展能力,允许自己定义和扩展新的协议支持;

JMeter的社区比较完善,提供了比较丰富的协议支持;

Jmeter的不足之处:


脚本缺乏灵活性,测试报告更多的偏向于性能方面;

对于全自动化实现的支持不足。

3、SoapUI

SoapUI工具的优势


SoapUI支持REST和SOAP服务;

使用拖放,点击即可轻松生成测试脚本,并可以导致代码形式测试用例;

使用来自文件和数据库的数据进行强大的数据驱动测试;

脚本可以轻松重用;

使用RESTful模拟模拟服务;

SoapUI不足之处


需要破解;

SoapUI对于PC资源占用大。

4、Airpost

和postman类似,非开源。



最后我们来到情况3:测试人员对于系统接口回归,确保后台逻辑无缺陷,降低版本迭代风险。


这种情况下,我们就需要选择比较完整的自动化测试框架并可持续执行。对于该实现形式主要有以下要求:


可持续运行;

可维护性高;

丰富断言以及报告;

这里推荐一些代码形式实现接口自动化测试框架或可视化接口测试平台:


5、代码实现形式:


需要代码功底,实现功能灵活,可以根据自己需要来进行定制,以便对接口实现比较完整的测试点覆盖


Java:testng+git+jenkins+httpclient+maven+poi+jsonpath


Python:pytest+git+jenkins+requests


6、可视化接口自动化测试平台:


测试人员只要进行简单培训就能进行操作,跟平常使用业务功能系统一样,方便灵活组织、维护和运行测试用例,丰富的报告,这里提供两个开源工具平台。


eolink:https://www.eolink.com/


Django实现的可视化接口自动化测试平台:https://github.com/githublitao/api_automation_test


二、来看最少投入

通过上面部分的阐述,相信大家对于哪个工具能达到的效果已有了一定的识别。下面我们再回过头来看到我们另一个依据,最少投入。


投入包含两部分:一是学习成本投入,二是工具本身的资金投入。


1、从学习成本来看


完整的接口自动化测试体系学习成本肯定要比Postman、jmeter这类独立工具成本高。


但Postman、jmeter这类独立工具来做接口测试,它们之间的学习难度差距不大。


目前对于一些测试工具已经公开了学习视频,进一步降低了大家的学习成本,请看:


Postman学习视频百度网盘,这些学习视频我也分享在了文末


2、从工具本身的资金投入来看


部分测试工具拥有比较强大的功能,但是非开源。在选择的过程中,个人建议要更偏向于使用开源工具。



版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:广告情报局:OPPO请姜文拍广告,找对了!
下一篇:DoMarketing-营销智库:欧莱雅左手“M姐”右手“欧爷”,品牌为何钟爱虚拟偶像?
相关文章

 发表评论

暂时没有评论,来抢沙发吧~