接口测试小知识

359 阅读7分钟

1.0 接口以及接口测试

1.1 接口的定义

1.1.1 硬件接口

USB接口

1.1.2 软件接口

第三方支付接口

1.1.3 接口

系统或者组件之间的交互点,数据交互的通道

本质:这些交互点,实现的是数据的交互

1.1.4 案例

image.png

1.2 接口类型

按照范围划分

1.2.1 系统之间的接口

系统之间的接口:多个内部系统之间的交互,内部系统和外部系统之间的交互

image.png

image.png

1.2.2 程序内部的接口

方法和方法之间,模块和模块之间都有交互

image.png

image.png

1.3 接口测试

1.3.1 定义

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

1.3.2 接口测试的原理

image.png

image.png

模拟客户端向服务端发送请求,服务器接收请求之后进行相应的业务处理,并且向客户端返回响应,检查响应是否符合预期

1.3.3 接口测试的特点(重点)

  • 接口测试从用户角度对系统进行全面检测
  • 测试可以提前介入,提早发现缺陷,符合质量控制前移的概念
  • 可以发现一些页面操作发现不了的问题
  • 接口测试高收益低成本,可以实现接口自动化

1.3.4 实现方式

接口测试工具:fiddler postman jmeter

代码实现:python+requests

1.3.5 接口自动化测试

1.3.5.1 定义

让程序或者工具代替人工自动的完成对接口的测试的一种过程

1.4 接口规范

1.4.0 web模式

image.png

前后端不分离

image.png

前后端分离

image.png

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…gethtml页面200
用户进行数据填充,然后提交给后端服务器进行数据存储www.tp_shop.cn/Home/user/h…post200
用户将需要修改的数据提交后端,后端先找到数据,再进行修改www.tp_shop.cn/Home/user/c…或者www.tp_shop.cn/Home/user/c…post200
用户注销信息,后端先找到数据,然后进行物理删除www.tp_shop.cn/Home/user/d…get200

restful风格

操作url请求类型响应数据(各个公司来定)状态码
展示用户注册页面www.tp_shop.cn/Home/user/gethtml页面200
增加用户数据www.tp_shop.cn/Home/user/post201
更新用户数据www.tp_shop.cn/Home/user/1…put/patch返回用户信息201
删除用户数据www.tp_shop.cn/Home/user/1delete204
展示全部的用户信息www.tp_shop.cn/Home/usersget分页用户信息200
展示某一个用户信息www.tp_shop.cn/Home/user/1getid为1的这位用户的详细信息200

1.4.2 restful 架构特点

案例:微博 open.weibo.com/wiki/%E5%BE…

每一个URL代表了一个资源

客户端通过http的请求方式,对服务器的资源进行操作

每一个接口之间,传递数据最经常的格式是json

1.4.3 restful 请求相关

域名:shanghui.com/api

版本:shanghui.com/app/1.0/use…

路径:见案例

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_iduuid必须值
Image_textstring必须值(用户输入的图片验证码)
Phonestring必须值(用户输入的手机号码)

返回值:

Msgstring(告知是否请求成功)

成功请求

{‘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案例

image.png

image.png

image.png

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、发送验证码
借助的第三方软件---(容联云、联通、移动)