API接口自动化前置知识

一、HTTP协议

HTTP 协议最大的特点是 通讯双方 分为 客户端服务端

到了 1.1 版本, 建立连接后,这个连接可以保持一段时间(keep alive), 这段时间,双方可以多次进行 请求和响应, 无需重新建立连接。

浏览器中查看请求和响应HTTP:

摁F12,打开开发者控制台,点击network模块

HTTP请求方式

请求访问文本或图像等资源的一端称为客户端。而提供资源响应的一 端称为服务器端。

请求方法如下表

方法说明支持的HTTP协议版本
GET获取资源1.0、1.1
POST传输实体主体1.0、1.1
PUT传输文件1.0、1.1
HEAD获取报文首部1.0、1.1
DELETE删除文件1.0、1.1
OPTIONS询问支持的方法1.1
TRACE追踪路径1.1
CONNECT要求用隧道协议连接代理1.1
LINK建立与资源之间的联系1.0(已被 HTTP/1.1 废弃,不再支持 )
UNLINE断开连接关系1.0(已被 HTTP/1.1 废弃,不再支持 )

常用的方法有:

1、GET (获取)
2、POST (添加)
3、PUT (更新)
4、DELETE (删除)

HTTP报文

HTTP报文的结构:

  1. 报文首部:服务器端或客户端需处理的请求或响应的内容及属性

  2. 请求行:包含用于请求的方法,请求uri和HTTP版本

    例如:
    
    GET /src/index.html HTTP/1.1
    表示要获取资源 请求资源的地址为/src/index.html,使用的协议为http 版本为1.1
    
    POST /src/message HTTP/1.1
    表示要传送资源 传送资源的目标地址为/src/message,使用的协议为http 版本为1.1
    
  3. 状态行:包含状态码,原因短语和HTTP版本

    例如:
    
    HTTP/1.1 200 OK
    表示使用的协议为http 版本为1.1 状态码为200 短语为200,即请求正常处理完毕
    

    HTTP响应状态码:

    类别原因短语
    1XXInformational(信息性状态码)接收的请求正在处理
    2XXSuccess(成功状态码)请求正常处理完毕
    3XXRedirection(重定向状态码)需要进行附加操作以完成请求
    4XXClient Error(客户端错误状态码)服务器无法处理请求
    5XXServer Error(服务器错误状态码)服务器处理请求出错
  4. 首部字段:包含表示请求和响应的各种条件和属性的各类首部。
    一般有4种首部,分别是:通用首部、请求首部、响应首部和实体首部。

    比如,
    	Host:请求发送的服务端域名
    	Accept:接受的信息类型/优先级
    	Accept-Language:语言集
    	Pragma:报文指令
    	... ...
    

    单个请求头的格式为: 名字: 值。一个请求头,占据一行。

    在开发过程中,也可以根据需要,在HTTP消息中添加自己定义的请求头。

  5. 其他:可能包含HTTP的RFC里未定义的首部(cookie等)

HTTP请求和响应消息

请求报文

  1. 请求行

  2. 请求头:请求首部字段、通用首部字段、实体首部字段等

  3. 消息体/报文主体:数据等

    WEB API 响应消息体 ,常见的文本格式有:Json、Xml、www-form-urlencoded

响应报文

  1. 状态行

  2. 响应头:响应首部字段、通用首部字段、实体首部字段等(与请求头类似)

  3. 消息体/报文主体:数据等

    如果 HTTP 响应 有消息体, 协议规定需要在 消息头和消息体之间插入一个空行CR+LF, 隔开它们。

空行CR+LF):CR+LF回车符和换行符

报文主体:应被发送的数据

HTTP报文实例:

二、接口测试概述

接口/接口测试

  1. 接口可以分为内部接口和外部接口

    • 内部接口:是服务器端内部代码交互时用到的接口,一般不需要大量的测试,开发人员可以自己进行测试。如白盒测试就是测试内部接口。

      例如:在一个学生成绩管理系统中,登录普通学生的帐号去调用只有管理员才能使用的API接口,例如修改学生成绩,如果只通过前端的操作发送请求是无法完成的,因此就要保证在普通学生帐号登录后没有修改成绩这一操作选项。

    • 外部接口:是客户端与服务器端交互时用到的接口,如HTTP接口。

      例如: 阿里云服务提供的 API 接口, 微信支付系统提供 的支付 API 接口, 作为 阿里云 或者 微信支付 的测试工程师,就要对其进行测试了

  2. 进行接口测试时,可以采用工具/Python的request库

    • 经常采用Postman、JMeter、SoapUI、Insomnia等工具,其中使用较为频繁的工具是Postman。
    • 工具的核心功能:构建HTTP请求消息,并且解析收到的HTTP响应消息, 用户来判断是否符合预期
    • 自动化测试可采用Python的request库
  3. API接口请求消息和HTTP消息

    • API接口传递数据信息是通过HTTP协议进行收发的,网站获取网页、图片、css等资源,也是通过HTTP协议进行收发的

    二者区别如下:

    • HTTP消息:网页、图片、css 这些资源,都是 静态资源

      一个个文件存储在服务器上的,获取这些信息,服务端直接读取文件,返回给客户端即可,无需特别的数据处理。

    • API接口请求消息:通常都需要服务端程序进行 一番处理

      比如:对请求的权限检查,从数据库中读出数据,进行信息过滤和 格式转换,最后在HTTP响应中返回给客户端。

  4. 接口测试可以理解为软件系统 消息交互接口 的测试。

    • 网页前端、APP与后端服务器之之间,都会有消息的交互。
  5. 对于系统而言后端会比前端更为稳定。因此对服务端的测试做的比较多

    • 接口测试本身是忽略了前端,直接与服务端来进行测试的一个过程
    • 接口是为系统提供数据服务的,所有前端肉眼可见的数据,基本上都是基于接口来获取的
    • 目前测试网络协议多数的是HTTP
    • HTTP协议的特点:客户端发出一个HTTP请求给 服务端,服务端就返回一个HTTP响应。好像程序的API调用。所以 接口测试 通常又被称之为 API接口测试 或者 WEB API接口测试
  6. 接口测试范围

    1. 业务功能(包括正常、异常场景是否实现)
    2. 业务规则(覆盖度是否全面)
    3. 参数验证(边界、业务规则是否达到要求)
    4. 异常场景(重复提交、并发提交、事务中断、多机环境、大数据量测试)
    5. 性能测试**(响应时间、吞吐量、并发数、资源要求)**
    6. 安全测试(权限验证、SQL注入等)
  7. 接口测试的重点

    1、检查接口返回的数据是否与预期结果一致。

    2、检查接口的容错性,假如传递数据的类型错误时是否可以处理。

    3、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

    4、接口的性能,HTTP请求接口大多与后端执行的SQL语句性能、算法等比较相关。

    5、接口的安全性,外部调用的接口尤为重要。

  8. 总结

    接口测试的工作内容:

    • 读文档:获取接口文档,评审文档,了解接口的实现细节
    • 写测试用例:根据接口文档,写出测试用例,
    • 测试验证:等产品发布后,根据测试用例,使用软件工具,直接通过消息接口 对 被测系统 进行消息收发,验证被测系统行为是否正确

接口文档

这里有一个腾讯开放平台的一个API文档:判断是否认证空间粉丝

通过 接口 进行测试 和 通过 用户界面 进行测试一样, 都需要有 测试用例

测试用例的依据就是 需求设计文档

接口测试用例当然也需要 接口的 需求设计文档,通常称之为 接口文档。

接口文档 通常 是由 开发人员提供, 接口文档中包含了测试人员要测试的系统接口的具体信息。阅读文档时,要与开发人员沟通接口文档正确,我们才能确保最终请求返回值是否正确,这很重要。然后才能进行测试用例的编写。

测试用例

根据接口文档(接口的需求设计文档)编写测试用例。

要素:

必要:用例编号、用例名称、前置条件、用例输入、测试步骤、期望输出、实际输出、备注

视情况:测试背景、优先级、重要级

编写测试用例的时候,通常可以采用 条件组合、边界值、错误猜测(白盒测试)等方法。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值