目录
课程目标
课程大纲
接口测试基础
接口及接口测试概念
1. 接口
2. 接口测试
3. 接口自动化测试
HTTP协议
1. HTTP协议介绍
2. URL
3. HTTP请求
4. HTTP响应
5. 状态码(Status Codes)[科普]
接口规范
1. 传统接口风格
接口测试流程
1. 接口测试流程
项目环境说明
1. 项目介绍 IHRM
2. 技术架构
接口文档解析
1. 接口文档介绍
接口用例设计
1. 接口测试的测试点
2. 接口用例设计的方法与思路
3. 单接口测试
4. 场景测试
章节 | 知识点 |
第1章 接口测试基础 | 1.接口及接口测试概念 2.HTTP协议 3.接口规范 4.接口测试流程 5.项目环境说明 |
第2章 Postman实现接口测试 | 1.Postman介绍和安装 2.Postman基本用法 3.Postman高级用法 4.Postman测试报告 5.项目实战 |
第3章 数据库操作 | 1. 数据库介绍 2. 数据库基本操作 3. 数据库事务操作 |
第4章 代码实现接口测试 | 1. Requests库 2. 集成UnitTest 3. 接口测试框架开发 4. 项目实战 |
第5章 持续集成 | 1. 持续集成介绍 3. Jenkins 4. 持续集成之Postman 5. 持续集成之代码 |
第6章 接口测试扩展 | 1. 接口Mock测试 2. 接口测试总结 |
接口可分为:硬件接口和软件接口;我们这里只关注软件层面的接口。
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互。(数据交互的通道)
1.1 接口的类型
接口测试分类有许多种,按照范围划分:系统之间的接口和程序内部的接口
接口测试:是对系统或组件之间的接口进行测试,主要是校验数据的交换、传递和控制管理过程,以及相互逻辑依赖关系。
2.1 接口测试原理
模拟客户端向服务器发送请求,服务器接收请求后进行相应的业务处理,并向客户端返回响应数据,检查响应数据是否符合预期。
2.2 接口测试的特点
2.3 接口测试的实现方式
3.1 概念
自动化测试:是把以人为驱动的测试行为转化为机器执行的一种过程。
接口自动化测试:是让程序或工具代替人工自动的完成对接口进行测试的一种过程。
HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
1.1 HTTP协议的特点
URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用URL来建立连接 和传输数据。
URL格式
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
- 协议部分:“http”,常见的协议有HTTP,HTTPS、FTP等
- 域名部分:“www.itcast.cn”,也可以使用IP地址作为域名使用
- 端口部分:“8080”,端口可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
- 资源路径部分:“/news/index.html”
- 查询参数部分:“uid=123&page=1”,可以允许有多个参数,多个之间用“&”作为分隔符
示例
查询天气信息:http://www.weather.com.cn/data/sk/101010100.html
http请求由三部分组成,分别是:请求行、请求头、请求体
POST http://demo.zentao.net/user-login.html HTTP/1.1
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)请求行
请求行用来说明请求方法、要访问的资源以及所使用的协议版本
常用请求方法:
其他请求方法(了解):
(2)请求头
请求头紧接着请求行,请求头部由键值对组成,每行一对。 请求头部通知服务器有关于客户端请求的信息,典型 的请求头有:
(3)请求体
请求体不在GET方法中使用,经常在POST、PUT方法中使用 请求体的数据可以是:表单数据、文本、XML、JSON 与请求数据相关的最常使用的请求头是Content-Type和Content-Length
HTTP响应也由三个部分组成,分别是:状态行、响应头、响应体
1.状态行
状态行由协议版本号、状态码、状态消息三部分组成
状态码由三位数字组成,第一个数字定义了响应的类别:
详细见列表
分类 | 分类描述 |
---|---|
1** | 信息,服务器收到请求,需要请求者继续执行操作 |
2** | 成功,操作被成功接收并处理 |
3** | 重定向,需要进一步的操作以完成请求 |
4** | 客户端错误,请求包含语法错误或无法完成请求 |
5** | 服务器错误,服务器在处理请求的过程中发生了错误 |
2.响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理响应数据
3.响应体
响应体就是响应的消息体,数据可以是普通文本、XML、JSON、HTML源码
服务器向用户返回的状态码和提示信息:
状态码 | 状态码英文名称 | 中文描述 |
---|---|---|
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 | 服务器不支持请求的HTTP协议的版本,无法完成处理 |
常见的有:
200、201、202、204、400、401、403、404、406、410、500
思考:
如何让前端开发与后台接口开发人员更好的配合,提高工作效率?
无规矩不成方圆,制定接口规范
对用户进行操作的相关接口,包括增删改查
操作 | 请求方式 | URL | 成功状态码 |
查询某个用户 | GET/POST | http://127.0.0.1:8080/myweb/user/getUser?id=1 http://127.0.0.1:8080/myweb/getUserById?id=1 |
200 |
查询所有用户 | GET/POST | http://127.0.0.1:8080/myweb/user/getUserList http://127.0.0.1:8080/myweb/user/getUsers |
200 |
添加用户 | POST | http://127.0.0.1:8080/myweb/user/addUser | 200 |
修改用户 | POST | http://127.0.0.1:8080/myweb/user/updateUser | 200 |
删除用户 | GET/POST | http://127.0.0.1:8080/myweb/user/deleteUser?id=1 | 200 |
2. RESTful
2.1 定义
一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
REST:即(Representational State Transfer)的缩写。词组的翻译是"表现层状态转化"。如果一个架构符合REST原则,就称它为RESTful架构。
2.2 RESTful接口风格
对用户进行操作的相关接口,包括增删改查
操作 请求方式 URL |
成功状态码 |
查询某个用户 GET http://127.0.0.1:8080/myweb/users/1 |
200 |
查询所有用户 GET http://127.0.0.1:8080/myweb/users |
200 |
添加用户 POST http://127.0.0.1:8080/myweb/users |
201 |
修改用户 PUT http://127.0.0.1:8080/myweb/users/1 |
201 |
删除用户 DELETE http://127.0.0.1:8080/myweb/users/1 |
204 |
2.3 RESTful架构特点
常用的HTTP动词有下面四个:
1. 需求分析
2. 接口文档解析
3. 设计测试用例
4. 执行测试
5. 接口缺陷管理与跟踪
6. 生成测试报告
7. 接口自动化持续集成(可选)
人力资源管理系统
功能模块
2.1 技术栈
2.2 技术架构图
1.1 什么是接口文档?
接口文档:又称为API文档,一般是由开发人员所编写的,用来描述系统所提供接口信息的文档。 大家都根据这个 接口文档进行开发,并需要一直维护和遵守。
1.2 为什么要写接口文档?
2. 接口文档内容
一个规范的接口文档,要包含以下信息:
基本信息
请求参数
返回数据
2.1 接口文档示例
3. 接口文档解析案例
查看人力资源管理系统的接口文档,解析以下接口:
本课程主要关注接口的功能测试
功能测试:验证接口功能是否按照接口文档实现(输入+处理+输出)
针对人力资源管理系统的登录接口进行测试
登录系统后,对员工进行增删改查的操作
明天继续~