【测试】接口测试笔记

1. 接口测试的简介和分类

接口测试就是测试系统组件接口的一种测试,校验传递的数据正确性和逻辑依赖(比如登录需要步骤)关系的正确性!
怎么测:模拟客户端,向服务器发送请求。
分类

  • 测试外部接口:测试被测系统与外部系统的接口(只需要测试正例)
  • 测试内部接口
    • 内部接口只提供给内部系统使用(预算系统,承保系统)(只需要测试正例即可)
    • 内部接口提供给外部接口使用(测试必须非常全面,正例,各种异常场景,权限控制)
  • 程序之间
    • 方法与方法之间,函数与函数之间,模块与模块之间
# 接口
def eat(something):
    print(f'小鸟在吃{something}')

# 使用接口,传递数据
def bird():
    eat('苹果')

bird() 

特点

  • 符合质量控制前移的理念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试低成本高效益
  • 接口测试是从用户的角度对系统进行检测
    测试工具 :
  • 工具:JMeter、Postman、fiddler
  • 代码:Python + Requests + UnitTest
    自动化接口测试
    借助工具、代码,模拟客户端发送请求给服务器,借助断言自动判断 预期结果和实际结果 是否一致!

断言:https://www.jianshu.com/p/9b8c88deed6a
在单元测试时,程序员预计在程序运行到某个节点位置,需要判断某些逻辑条件必须满足,这样下面的一些业务逻辑才可以进行下去,如果不满足,程序就会"报错"甚至是"崩溃"。比如说,一段程序是负责“转账”,在真正开始转账操作前首先需要“断言”这个账户是一个“合法”的账户,比如账户不是null。当出现些状况时,程序开发人员就可以在第一时间知道这个问题,可以去debug除错,而非等到交付给用户后才发现问题。其实这个功能是TDD (Test Driven Develop)的基石之一。

2. TTP协议

简介

  • HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
  • 特征:
    1. 支持客户端/服务器模式
    2. 简单快速
    3. 灵活
    4. 无连接
    5. 无状态

URL格式

  • 概念:(Uniform Resource Locator)统一资源定位符。
  • 作用:在网络环境中,唯一的定义一个数据资源。
    在这里插入图片描述

(80是http协议,8080剩下的80是tomcat的协议)
Mysql:3306
redis:6379

HTTP请求

作用:

  • 客户端(app、浏览器),发送请求给服务器时,使用的协议 —— http请求协议。
  • 规定 发送给服务器的数据传输的语法格式。

整体格式

  • 请求行:http请求第一行。请求方法 (空格) URL (空格) 协议版本
  • 请求头:语法格式:k :v
    • User-Agent:描述 请求发送端的 浏览器类型。
    • Content-Type:描述 请求体 的 数据类型!
  • 空行:代表http请求头结束。
  • 请求体:请求发送时携带的数据。数据类型 Content-Type 的值!
    • post 和 put 有请求体:因为它要把请求体里的数据向服务端传上去
    • get 和 delete 没有请求体
      在这里插入图片描述

请求行

  • http 请求方法:大小写均可。
    • GET:查询。 —— 没有请求体
    • POST:添加。(登录时常用)
    • put: 修改。
    • delete: 删除。 —— 没有请求体

请求头

  • 数据格式:k:v(key-value)
  • Content-Type:
    • application/json: JSON数据格式
    • application/x-www-form-urlencoded: form表单数据

请求体

  • GET和DELETE 没有
  • PUT 和POST有
  • 数据类型受 Content-Type 值影响。

HTTP响应

作用:

  • 服务器端,针对客户端发送的 http请求,回发响应数据。—— http应答!
  • 规定 回发给客户端的数据组织格式。

整体格式

  • 响应行(状态行):协议版本 (空格) 状态码 (空格) 状态描述
  • 响应头:语法格式:k:v
    • Content-Type: 描述 响应体中数据类型。
  • 空行:代表响应头结束
  • 响应体:绝大多数不为空。(请求成功:回发数据,失败:回发错误信息)
    • 数据类型受 Content-Type值影响。
      在这里插入图片描述
      在这里插入图片描述

状态行

  • 状态码:
    • 1xx:代表指示信息。表请求已经被接收,等待继续处理。
    • 2xx:代表请求成功被处理、接收。 常见:200、201
    • 3xx:重定向,待访问的资源,需求重新指定路径访问。
    • 4xx:代表客户端错误。常见:404、 403
    • 5xx:访问器端错误。
  • 状态码描述:一般与状态码 唯一对应。 200 —— ok; 404 —— file not found

响应头

  • 语法格式:k:v
  • Content-Type:值为 响应体 的数据类型。
  • Content-Length: 响应体的大小。可以不写,浏览器会自动求取。一旦写,必须准确!

响应体

  • 回发给客户端的 消息内容。常见的有 html网页、xml、json

3. 传统风格接口

特点:

  • 请求方法,只使用 get 和 post 即可。
  • URL 不唯一。同一个操作可以对应不同的 URL
  • 状态码的使用较单一。200 最常见。
    传统查询方法中get和post的界定是模糊的
    在这里插入图片描述

4. RESTful风格接口

RESTful:表现层状态转化,提供了一组设计原则和约束条件,如果符合风格,就说是RESTful架构
特点:

  1. 每一个URL代表一种资源,url唯一;
  2. get和post的url是一样的,但是由于请求方式不同,状态就发生变化
  3. 客户端和服务器之间,传递这种资源的某种表现层;
  • 表现层:数据的不同表现形式(如:图片、文字表现同一个数据对象)
  1. 客户端通过四个HTTP动词(GET、post、delete、put),对服务器端资源进行操作,实现"表现层状态转化";
  2. 接口之间传递的数据最常用格式为JSON。
    在这里插入图片描述

5. 接口测试流程

  1. 分析需求,产生需求文档(产品)。
  2. (开发产生接口文档)解析接口文档。
  3. 产生 接口测试用例(送审)。
  4. 执行 测试用例
  • 工具:postman、jmeter、fidller
  • 代码:python + Requests +UnitTest
  1. 提交、跟踪缺陷。
  2. 生成 测试报告。
  3. (可选)接口自动化持续集成!

6. 接口文档

  • 由开发人员编写,描述接口信息的文档。开发团队按接口文档进行开发工作,并要一直维护遵守。

作用

  1. 能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
  2. 项目迭代或者项目人员更迭时,方便后期人员查看和维护
  3. 方便测试人员进行接口测试

结构

  • 基本信息:
    • 资源路径 (协议和域名在 “系统信息”中)
    • 请求方法
    • 接口描述
  • 请求参数:
    • 请求头:
      • Content-Type。描述请求体的数据类型!
    • 请求体:
      • 实现该接口使用的 数据及对应类型。
  • 返回数据:
    • 状态码 200
    • 错误码(自定义状态码)
      • 码值
      • 描述信息。

接口文档解析

  • 接口文档的解析本质:从接口文档中,找出 http 请求所需要的 数据信息。
    • 主要包含:请求方法、URL 、请求头、请求体、响应状态码、描述。
  • 以 “登录” 为例:
    • 请求方法:POST
    • URL:http://ihrm-test.itheima.net/api/sys/login
    • 请求头:Content-Type :application/json
    • 请求体:{“mobile”:”13800000002”, “password”:”123456”}
    • 响应状态码:200
      • 错误码:
        • 10000:操作成功!
        • 20001:用户名或密码错误
        • 99999:抱歉,系统繁忙,请稍后重试!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值