接口测试基础

 

1.接口测试基础

# 1.接口测试的基础
# 2.postman的使用(基础和高级)
# 3.用postman是实现接口自动化
# 4.代码基础(requests模块, unittest框架)
# 5.手撸自动化测试框架
# 6.来点练习和实战

 

课程目标

1.能够根据接口API文档编写接口测试用例
2.能够使用Postman工具进行接口测试,并能够对大量接口用例进行管理、对接口响应结果进行断言、处理多接口的依赖及生成测试报告
3.能够使用Python+Requests封装的接口测试框架,实现接口对象封装、测试用例编写、测试数据管理及生成测试报告
​
# 注意: 接口测试涉及到两个方向的实现, 一方面使用工具实现, 另一方面使用代码实现. 这两个方向是平行的, 在接口测试中要么使用工具实现, 要么使用代码实现. 推荐代码实现(体现技术和复杂情况的处理)

1.接口测试基础

1.1 接口

# 接口概念
    指系统或组件之间的交互点, 通过这些交互点可以实现数据的交互(数据交互的通道)
# 接口分类
    硬件接口与软件接口, 作为测试工程师, 更多关注软件层面的接口

1.2软件接口类型

# 接口测试分类有许多种,按照范围划分:系统之间的接口和程序内部的接口 
    系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互 
    程序内部的接口:方法与方法之间,模块与模块之间的交互


2.接口测试

接口测试, 是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。

2.1 接口测试原理

模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
​
# 解释:
    我们通过工具或代码向服务器发送请求, 该请求按照接口文档的规定进行发送, 测试返回的响应是否符合预期的结果, 就可以检验接口是否存在问题了.

2.2 接口测试特点

(1).测试可以提前介入,提早发现Bug,符合质量控制前移的理念
    根据W测试模型(双V模型)提倡测试提前介入, 提前介入测试, 可以尽早发现问题, 越早发现问题, 成本越小.
​
(2).可以发现一些页面操作发现不了的问题 
    页面可能在前端进行了操作的限定, 比如注册功能中密码框输入的长度等, 在进行页面进行测试时, 是不能超过长度输入的, 但通过访问接口, 可以自动以密码的长度, 接口测试可以发现页面发现不了的问题.
    
(3).接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
    接口测试可能通过几行代码, 执行多条用例. 可以大大提高工作的效率, 节约企业成本.
    
(4).不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测

2.3 接口测试实现方式

(1).使用接口测试工具来实现(比如:JMeter、Postman)
    接口测试的本质就是通过向接口发送请求, 查看响应是否正确. 现阶段主要以postman工具来实现接口测试, JMeter会在后续的性能测试中重点讲解.
    
(2).通过编写代码来实现(比如:Python + Requests)
    接口测试的另一种方式就是通过代码实现, 由于本质就是向接口发送请求, 同样可以使用代码实现, 并且代码相比工具实现起来更加灵活, 但要求测试人员具有一定的coding能力.

2.4 接口自动化

# 测试分类:
按照是否自动化进行测试分类, 可以分为:
    - 手工测试
    - 自动化测试
​
# 接口自动化测试:
针对接口进行测试, 用工具或代码代替人进行测试的一种活动

3.网络协议

3.1 HTTP协议

# HTTP协议:
    HTTP协议,(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议(传输超文本--> 超文本)
    
    
# HTTP协议特点:
    1. 支持客户端/服务器模式
    2. 简单快速: 快速传输, http协议比https协议更加高效(https比HTTP更加安全)
    3. 灵活
    4. 无连接: 无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接
    5. 无状态:协议对于事务处理没有记忆能力, 对同一个url请求没有上下文关系. 每次的请求都是独立的,它的执行情况和结果与前面的请求和之后的请求是无直接关系的,它不会受前面的请求应答情况直接影响,也不会直接影响后面的请求应答情况

3.2 URL

# URL:
URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。
    
# URL格式
http://www.jiyun.cn:8080/news/index.html?uid=123&page=1
    (1)协议部分: http, 常见的协议有HTTP,HTTPS、FTP等
    (2).域名部分:www.jeremyblog.cn, 也可以使用IP地址作为域名使用
    (3).端口部分:8080, 端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
    (4).资源路径部分: /news/index.html
    (5).查询参数部分: uid=123&page=1, 查询参数通过"?"与URL进行分隔, 可以允许有多个参数,多个之间用“&”作为分隔符

4.请求与响应(复习)

4.1 http请求

HTTP请求由三部分组成,分别是:请求行请求头请求体

# 请求行: 请求行用来说明请求方法、要访问的资源以及所使用的协议版
POST http://demo.zentao.net/user-login.html HTTP/1.1  ## 请求方法 URL地址 协议/版本
Host: demo.zentao.net  # 主机名
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0  # 用户代理信息
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,
*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: http://demo.zentao.net/user-login.html
Content-Type: application/x-www-form-urlencoded
Content-Length: 54
Connection: keep-alive
Upgrade-Insecure-Requests: 1
// 该空行表示请求头数据已经结束
account=demo&password=efc4a3b32e48054865e5a8321cfda3e4
​
# 拓展: 常见请求方法
    (1).GET:从服务器获取资源(一项或多项)
    (2).POST:在服务器新建一个资源
    (3).PUT:在服务器更新资源(客户端提供改变后的完整资源)
    (4).DELETE:从服务器删除资源
    # 其他请求方法(了解):
    (5).HEAD:请求获取由Request-URI所标识的资源的响应消息报头
    (6).TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断
    (8).CONNECT:保留将来使用
    (9).OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求
# 请求头: 请求头紧接着请求行,请求头部由键值对组成,每行一对. 请求头部通知服务器有关于客户端请求的信息,典型的请求头有:
User-Agent:产生请求的浏览器类型(用户信息)
Accept:客户端可识别的内容类型列表
Content-Type:请求体数据的类型,常见的类型有:
    text/html: HTML格式
    text/plain:纯文本格式
    image/jpeg:jpg图片格式
    application/json: JSON数据格式
    application/x-www-form-urlencoded: form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
    multipart/form-data: 在表单中进行文件上传时使用
# 请求体
    (1).请求体不在GET方法中使用,经常在POST、PUT方法中使用
    (2).请求体的数据可以是:表单数据、文本、XML、JSON
    (3).与请求数据相关的最常使用的请求头是Content-Type(application/json)和Content-Length

4.2 HTTP响应

HTTP响应也由三个部分组成,分别是:状态行响应头响应体

# 状态行: 状态行由协议版本号、状态码、状态消息三部分组成
# 实例:
HTTP/1.1 200 OK
​
# 状态码:
        200系列:
            200   成功         服务器已成功处理了请求  # 重点1
​
        300系列:
            301    永久移动     请求的网页已永久移动到新位置,即永久重定向  # 重点
            302    临时移动     请求的网页暂时跳转到其他页面,即暂时重定向  # 重点
​
        400系列:
            400    错误请求     服务器无法解析该请求  # 重点
            401    未授权       请求没有进行身份验证或验证未通过
            403    禁止访问     服务器拒绝此请求  # 重点
            404    未找到       服务器找不到请求的网页
​
        500系列
            500    服务器内部错误   服务器遇到错误,无法完成请求  # 重点
            501    未实现       服务器不具备完成请求的功能
            502    错误网关     服务器作为网关或代理,从上游服务器收到无效响应
            504    网关超时     服务器作为网关或代理,但是没有及时从上游服务器收到请求
            505    HTTP版本不支持   服务器不支持请求中所用的HTTP协议版本
# 响应头
    响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据
# 响应体
    响应体就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码

5.RESTful接口规范

5.1 定义

RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构。

5.2 RESTful接口风格

对用户进行操作的相关接口,包括增删改查

操作请求方式URL成功状态码
查询某个用户GEThttp://127.0.0.1:8080/myweb/users/1200
查询所有用户GEThttp://127.0.0.1:8080/myweb/users200
添加用户POSThttp://127.0.0.1:8080/myweb/users201
修改用户PUT/posthttp://127.0.0.1:8080/myweb/users/1201
删除用户DELETEhttp://127.0.0.1:8080/myweb/users/1204

5.3 RESTful架构特点

# RESTful架构特点:
    (1).每一个URL代表一种资源
    (2).客户端和服务器之间,传递这种资源的某种表现层
    (3).客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"
    (4).接口之间传递的数据最常用格式为JSON。
# 常用的HTTP动词有下面四个:
    GET:从服务器获取资源(一项或多项)
    POST:在服务器新建一个资源
    PUT:在服务器更新资源(客户端提供改变后的完整资源)
    DELETE:从服务器删除资源

6.接口测试流程

# 接口测试流程
    (1)需求分析: 主要依据需求文档
    (2)接口文档解析: 一般是由开发人员编写接口文档(API文档)
    (3)设计测试用例
    (4)执行测试
        - 使用接口测试工具实现
        - 通过编写代码实现
    (5)接口缺陷管理与跟踪
    (6)生成测试报告
    (7)接口自动化持续集成(可选)
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值