这是一份详细的接口测试使用教程(含实例讲解)

11 篇文章 0 订阅
1 篇文章 1 订阅

为什么要做接口测试

1.越底层发现bug,它的修复成本是越低的。

2.前端随便变,接口测好了,后端不用变,前后端是两拨人开发的。

3.检查系统的安全性、稳定性,前端传参不可信,比如京东购物,前端价格不可能传入-1元,但是通过接口可以传入-1元。

4.如今的系统复杂度不断上升,传统的测试方法成本急剧增加且测试效率大幅下降,接口测试可以提供这种情况下的解决方案。

5. 接口测试相对容易实现自动化持续集成,且相对UI自动化也比较稳定,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求。接口持续集成是为什么能低成本高收益的根源。

接口测试的流程和步骤

一、什么是接口测试

我们要想知道接口测试怎么做,首先要明白接口测试是什么?一般像系统内的组件接口数据交互测试、不同系统与系统之间的接口数据交互测试等,我们都可以称之为接口测试 !

那么接口测试是怎么来测试接口的呢?

接口测试就是通过接口的不同情况下的输入和与之对用的输出之间的关系,看看是否满足接口规范所规定的功能性、安全性以及性能方面的要求.

简单的说:“接口测试是就是在没有前端页面或者前端还没完成的情况下,代替前端页面或者第三方使用者,来验证后端的接口实现是否符合接口规范。”

二、接口测试的好处

通过接口测试,我们可以测试出接口的稳定和正确性, 可以抛开前端的影响,迅速定位到后端的缺陷,提升测试的效率.

通过接口测试, 可以为项目带来高效的缺陷监测和管理能力,可以提到软件的整体质量;

项目越复杂,系统越庞大,接口测试使用的越频繁的效果越明显

三、接口测试的原理

通过模拟客户端 or Web浏览器向服务器发送请求,服务器接收请求后对接收到的数据做处理,同时向客户端返回应答,我们模拟的客户端,接收到返回的数据后再对数据进行判断 ,如何判断呢?

1、判断请求: 是否正确, 系统默认的请求成功,会返回200状态码, 假如请求错误返回400, 404, 500等状态码

2、判断数据: 返回数据的正确性与完整性

3、判断安全性: 接口一般不会随意暴露在网上被其他人任意调用,一般我们会对接口做出一些限制,比如请求次数、请求频率限制等等

简单来说:找个能联网的工具根据接口文档,向接口服务器发送请求,获取响应,检查响应是否符合接口文档的规范

四、接口测试测试工具

接口测试需要模拟客户端发送请求获取响应,所以我们就需要一个能够发送请求获取响应的工具,也就是联网工具:

通过工具来进行接口测试

最知名的就是postman,当然还有restclient之类的 。当然也可以用jmeter,jmeter也可以用来做接口性能测试,当然我们也可以通过编写脚本(代码)进行接口测试。

五、如何做好接口测试 

接口测试要遵循一些要点:

测试接口的功能实现. 检查不同参数的数据请求时,接口返回的数据与预期结果也就是接口文档的规范的一致性.

测试接口的健壮性(容错性), 比如说传递的数据类型是错误或者传递空数据,特殊字符等与接口规范不符的能否正常处理.

测试接口参数的边界值. 比如说传递的数据超出了接口规范的规定的范围,或者数据足够大或者为负数时能否正常处理

测试接口的性能, 接口处理和响应数据的时间,并发性等等, 当然这牵扯到代码实现的优化,需要与开发人员沟通

测试接口的安全性.比如登录的用户名密码等敏感数据是否明文显示,需要权限的接口是否暴露在外面

六、接口测试流程

1、分析接口文档和需求文档

分析接口文档或者需求文档一般会去找测试点,那么接口测试的测试点我们一般从几种方向去找

· 功能性测试点 · 性能测试点 · 安全性测试点

2、编写接口测试计划

测试计划就是功能测试计划基本一样就是知名的5w1h了

1) why——为什么要进行接口测试; 2) what—测试接口包括哪些; 3) when—测试接口不同阶段的起止时间; 4) where—相应接口文档,接口缺陷的存放位置,测试环境等; 5) who—项目有关人员组成,哪些接口分配给哪些人; 6) how—使用哪些测试工具以及测试方法进行测试。

3、编写接口测试用例

测试用例就是根据具体的哪个接口来编写,一般会分为单接口和多接口两种场景来编写测试用例

1) 单接口场景的测试

正向数据:也就是能正常发送请求,正常获取响应的数据,一般我们从三个方面去组织:

所有必填参数

全部参数(必填参数+选填参数)

参数组合(必填参数+某些选填参数)

反向测试:用不属于规定范围的数据区发送请求检查服务器能否正常处理

异常数据:数据为空,长度过多或者过少(边界值外),类型不符(需要数字类型传递str类型),错误的数据

异常的参数:不传参数,少传参数,多传参数,传递错误的参数

异常的业务数据:结合业务功能考虑输出的各种异常返回情况

2) 多接口场景的测试

业务场景功能测试(站在用户角度考虑常用的使用场景)

多业务场景功能测试主要是测试接口之间数据依赖

4、接口测试执行

根据设计的测试用例就可以执行测试用例当然执行的方式有几种

1. 使用postman之类的工具,一个一个进行测试,这种方式我们叫做手工测试

2. 使用jmeter之类的有自动化功能方式进行测试,这种叫做工具自动化测试

3. 我们可以自己编写测试脚本,使用测试脚本自动加载测试,这种就是自动化测试了

5、生成接口测试报告。

测试完成了以后就可以生成测试报告了

接口测试流程

接口测试的模板

接口的构成

请求协议:

http — 普通的http请求,默认端口为80
https — 加密的http请求,传输数据更加安全,默认端口为443
ftp — 文件传输协议,主要用来传输文件,默认端口为21
请求IP:就是指提供接口的系统所部署的服务器地址,可以是直接的IP地址,也可以是域名

请求端口:如果不填端口,都是默认端口,否则需要填写端口号

接口路径:指系统提供的接口在什么位置

接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数。

HTTP中的常用请求方式

这个请求方式,作为一位测试人员,不需要担心不知道该项目请求方式是什么,一般情况是在开发文档中有具体的说明请求方式是什么,不过我们有时候需要有自我的判断这个地方用什么接口合适,比如输入密码的地方一定要用post方法,绝对不能用get的方法。

序号 方法 描述

  1    GET    请求指定的页面信息,并返回实体主体。
  2    HEAD    类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
  3    POST    向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。

        数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
  4      PUT    从客户端向服务器传送的数据取代指定的文档的内容。
  5      DELETE    请求服务器删除指定的页面。
  6      CONNECT    HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
  7      OPTIONS    允许客户端查看服务器的性能。
  8      TRACE    回显服务器收到的请求,主要用于测试或诊断。
  9      PATCH    实体中包含一个表,表中说明与该URI所表示的原内容的区别。
  10    MOVE    请求服务器将指定的页面移至另一个网络地址。
  11    COPY    请求服务器将指定的页面拷贝至另一个网络地址。
  12    LINK    请求服务器建立链接关系。
  13    UNLINK    断开链接关系。
  14    WRAPPED    允许客户端发送经过封装的请求。
  15    Extension-mothed    在不改动协议的前提下,可增加另外的方法。

接口测试的重点

目的:测试接口的正确性和稳定性;

原理:模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做处理并向客户端返回应答,客户端接收应答的过程;

重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;

核心:持续集成是接口测试的核心;

优点:为高复杂性的平台带来高效的缺陷监测和质量监督能力,平台越复杂,系统越庞大,接口测试的效果越明显(提高测试效率,提升用户体验,降低研发成本);用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);

用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);

接口测试质量评估标准

业务功能覆盖是否完整
业务规则覆盖是否完整
参数验证是否达到要求(边界、业务规则)
接口异常场景覆盖是否完整
接口覆盖率是否达到要求
代码覆盖率是否达到要求
性能指标是否满足要求
安全指标是否满足要求


接口模拟测试(实例讲解)

接口:https://api.apiopen.top/getWangYiNews

请求类型:POST

在线测试:https://www.sojson.com/httpRequest/

软件测试:postman、jemter(这两个后期出专门的使用教程)

1、输入相应的数据

2、获取的数据进行分析

这一块是表头,一般情况不需要特别记住,只要了解就可以了,注意返回的状态码是否是正确的,有一些时候需要注意加载的时间

这一块内容为表主体,也就是我们查看返回的数据是否正确。 

(https://img-blog.csdnimg.cn/20210512171300590.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1hzazIxNQ==,size_16,color_FFFFFF,t_70)

HTTP状态码列表

状态码    状态码英文名称    中文描述
100    Continue    继续。客户端应继续其请求
101    Switching Protocols    切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
 
200    OK    请求成功。一般用于GET与POST请求
201    Created    已创建。成功请求并创建了新的资源
202    Accepted    已接受。已经接受请求,但未处理完成
203    Non-Authoritative Information    非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204    No Content    无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205    Reset Content    重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206    Partial Content    部分内容。服务器成功处理了部分GET请求
 
300    Multiple Choices    多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301    Moved Permanently    永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302    Found    临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303    See Other    查看其它地址。与301类似。使用GET和POST请求查看
304    Not Modified    未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305    Use Proxy    使用代理。所请求的资源必须通过代理访问
306    Unused    已经被废弃的HTTP状态码
307    Temporary Redirect    临时重定向。与302类似。使用GET请求重定向
 
400    Bad Request    客户端请求的语法错误,服务器无法理解
401    Unauthorized    请求要求用户的身份认证
402    Payment Required    保留,将来使用
403    Forbidden    服务器理解请求客户端的请求,但是拒绝执行此请求
404    Not Found    服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面
405    Method Not Allowed    客户端请求中的方法被禁止
406    Not Acceptable    服务器无法根据客户端请求的内容特性完成请求
407    Proxy Authentication Required    请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408    Request Time-out    服务器等待客户端发送的请求时间过长,超时
409    Conflict    服务器完成客户端的 PUT 请求时可能返回此代码,服务器处理请求时发生了冲突
410    Gone    客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411    Length Required    服务器无法处理客户端发送的不带Content-Length的请求信息
412    Precondition Failed    客户端请求信息的先决条件错误
413    Request Entity Too Large    由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414    Request-URI Too Large    请求的URI过长(URI通常为网址),服务器无法处理
415    Unsupported Media Type    服务器无法处理请求附带的媒体格式
416    Requested range not satisfiable    客户端请求的范围无效
417    Expectation Failed    服务器无法满足Expect的请求头信息
 
500    Internal Server Error    服务器内部错误,无法完成请求
501    Not Implemented    服务器不支持请求的功能,无法完成请求
502    Bad Gateway    作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应
503    Service Unavailable    由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504    Gateway Time-out    充当网关或代理的服务器,未及时从远端服务器获取请求
505    HTTP Version not supported    服务器不支持
 

  • 5
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值