1.0 接口以及接口测试
1.1 接口的定义
1.1.1 硬件接口
USB接口
1.1.2 软件接口
第三方支付接口
1.1.3 接口
系统或者组件之间的交互点,数据交互的通道
本质:这些交互点,实现的是数据的交互
1.1.4 案例
1.2 接口类型
按照范围划分
1.2.1 系统之间的接口
系统之间的接口:多个内部系统之间的交互,内部系统和外部系统之间的交互
1.2.2 程序内部的接口
方法和方法之间,模块和模块之间都有交互
1.3 接口测试
1.3.1 定义
对系统或者组件之间的接口进行测试,主要是检验数据的交换、传递和控制管理过程,以及相互的逻辑依赖的关系
1.3.2 接口测试的原理
模拟客户端向服务端发送请求,服务器接收请求之后进行相应的业务处理,并且向客户端返回响应,检查响应是否符合预期
1.3.3 接口测试的特点(重点)
- 接口测试从用户角度对系统进行全面检测
- 测试可以提前介入,提早发现缺陷,符合质量控制前移的概念
- 可以发现一些页面操作发现不了的问题
- 接口测试高收益低成本,可以实现接口自动化
1.3.4 实现方式
接口测试工具:fiddler postman jmeter
代码实现:python+requests
1.3.5 接口自动化测试
1.3.5.1 定义
让程序或者工具代替人工自动的完成对接口的测试的一种过程
1.4 接口规范
1.4.0 web模式
前后端不分离
前后端分离
json:
[{`msg_code`:1001,`msg`:`请求成功`}]
<红楼梦>
作者:曹雪芹
男主:贾宝玉
女主:林黛玉
时间:清代
json:
{`author`:`cao`,`boy`:`jia`,`girl`:`lin`...}
xml:存储数据
<book>
<author>cao</author>
<boy>jia</boy>
<time>qing</time>
</book>
1.4.1案例 用户模块对于用户数据的操作
注册
后端角度
传统风格
操作 | URL | 请求类型 | 响应数据 | 状态码 |
---|---|---|---|---|
展示对应的注册页面 | www.tp_shop.cn/Home/user/s… | get | html页面 | 200 |
用户进行数据填充,然后提交给后端服务器进行数据存储 | www.tp_shop.cn/Home/user/h… | post | 无 | 200 |
用户将需要修改的数据提交后端,后端先找到数据,再进行修改 | www.tp_shop.cn/Home/user/c…或者www.tp_shop.cn/Home/user/c… | post | 200 | |
用户注销信息,后端先找到数据,然后进行物理删除 | www.tp_shop.cn/Home/user/d… | get | 200 |
restful风格
操作 | url | 请求类型 | 响应数据(各个公司来定) | 状态码 |
---|---|---|---|---|
展示用户注册页面 | www.tp_shop.cn/Home/user/ | get | html页面 | 200 |
增加用户数据 | www.tp_shop.cn/Home/user/ | post | 无 | 201 |
更新用户数据 | www.tp_shop.cn/Home/user/1… | put/patch | 返回用户信息 | 201 |
删除用户数据 | www.tp_shop.cn/Home/user/1 | delete | 无 | 204 |
展示全部的用户信息 | www.tp_shop.cn/Home/users | get | 分页用户信息 | 200 |
展示某一个用户信息 | www.tp_shop.cn/Home/user/1 | get | id为1的这位用户的详细信息 | 200 |
1.4.2 restful 架构特点
案例:微博 open.weibo.com/wiki/%E5%BE…
每一个URL代表了一个资源
客户端通过http的请求方式,对服务器的资源进行操作
每一个接口之间,传递数据最经常的格式是json
1.4.3 restful 请求相关
路径:见案例
1.资源作为网址,只能有名词,不能有动词,且所用的名词与数据库表名对应
2.API中的名词,使用复数形式
HTTP动词:get post put delete patch等
过滤信息
https://movie.douban.com/j/chart/top_list?type=11&interval_id=100%3A90&action=&start=20&limit=20
类型 | 描述 |
---|---|
limit | 限制返回数据的数量 |
offset=10 | 返回数据的开始位置 |
page=2&per_page=100 | 指定第几页,每一页的数据有多少条 |
sortby=name&order=asc | 指定的是排序的属性和排序方式 |
1.5 接口测试流程(重点)
1.5.1 需求分析
主要是需求文档
1.5.2 接口文档解析
一般是开发人员编写的接口文档(API文档)
1.5.3 设计测试用例
1.5.4 执行测试用例
1.5.5 接口的缺陷管理与跟踪
1.5.6 生成测试报告
1.5.7 接口自动化持续集成
1.6 接口文档
1.6.1 接口文档
开发人员编写,API文档,描述的是系统提供的接口信息的文档
根据文档进行开发,并且需要一致进行维护和遵守
1.6.2 接口文档的意义
-
方便前端人员和后台开发人员更好的配合,提高工作效率
-
项目迭代或者开发人员进行迭代的时候,更加方便查看和维护项目
-
方便测试人员进行接口测试
1.6.3 接口文档的内容
1.6.3.1 基本信息
接口的名称 请求方式 请求路径 接口描述
1.6.3.2 请求参数
请求头(headers Content-Type)
请求体(请求参数名称,参数类型,是否是必须值,示例,备注等)
1.6.3.3 返回数据
根部不同情况返回不同状态码
响应数据:包括具体的响应数据(名称,类型,是否必须值,默认值,示例,备注等等)
类型:json
1.6.4 接口文档案例
名称 短信验证码
注意点:在向后端请求短信验证码的时候,需要先校验图片验证码,如果图片验证码错误,直接返回,无需发送
接口的设计:
GET /msg_code/?image_id=uuid&image_text=mytext&phone=12345678
参数
Image_id | uuid | 必须值 | |
Image_text | string | 必须值 | (用户输入的图片验证码) |
Phone | string | 必须值 | (用户输入的手机号码) |
返回值:
Msg | string | (告知是否请求成功) |
---|
成功请求
{‘code’:20001,’msg’:’成功’} 200 ok
失败请求
{‘code’:20002,’msg’:’失败’} 401 error
功能过程
1、校验图片验证码
1.1 获取用户输入的图片验证码
1.2 获取存储在Redis里面真正的图片验证码
1.3 校验两个验证码是否一致
2、校验不能频繁发送短信验证码
2.1 在redis中取出当前用户对应的短信验证码
如果取到了信息,说明这个验证码还有效期内,不要发送
3、生成短信验证码
使用的是random.randint()
4、保存短信验证码,等待用户注册的时候进行校验,是否是本人
在redis中保存短信验证码数据,注意过期时间设置成%s(自定)
5、发送验证码
借助的第三方软件---(容联云、联通、移动)
1.6.5案例
1.7.tp_shop会员管理
1.7.1 登陆
1.7.2 添加会员
1.7.3 删除会员
1.7.4 修改会员
1.7.5 查看会员
1.8 尚惠的用户管理接口测试
1.8.1 需求分析
1.8.2 接口文档解析
1.8.3 设计测试用例
1.8.3.1 接口用例设计思路和方法
单接口测试
1.8.4 执行测试用例
postman
1.8.5 短信验证码-实例1
1.8.5.1 短信验证码接口
短信验证码
注意点:在向后端请求短信验证码的时候,需要先校验图片验证码,如果图片验证码错误,直接返回,无需发送
接口的设计:
POST /phone_code/
参数
image_code_id uuid 必须值
image_text string 必须值 (用户输入的图片验证码)
Phone string 必须值 (用户输入的手机号码)
返回值:
code int
Msg string (告知是否请求成功)
示例:
图片验证码不成功
{'code':10003,'msg':'图片验证码不成功'}
短信验证码频繁发送
{'code':10004,'msg':'短信验证码频繁发送'}
短信验证码发送成功
{'code':10005,'msg':'短信验证码发送成功'}
短信验证码发送不成功
{'code':10006,'msg':'短信验证码发送不成功'}
功能过程
1、校验图片验证码
1.1获取用户输入的图片验证码
1.2获取存储在Redis里面真正的图片验证码
1.3校验两个验证码是否一致
2、校验不能频繁发送短信验证码
在redis中取出当前用户对应的短信验证码
如果取到了信息,说明这个验证码还有效期内,不要发送
3、生成短信验证码
使用的是random.randint()
4、保存短信验证码,等待用户注册的时候进行校验,是否是本人
在redis中保存短信验证码数据,注意过期时间设置成%s(自定)
5、发送验证码
借助的第三方软件---(容联云、联通、移动)