什么是接口测试
不同端的工作进度不一样,这就需要对最开始出来的接口进行接口测试
接口泛指实体把自己提供给外界的一种抽象化物(可以为另一实体),用以由内部操作分离出外部沟通方法,使其能被内部修改而不影响外界其他实体与其交互的方式。
做接口测试能给我们带来的好处一般也就是以下三条:
- 节约时间,缩短项目时间;
- 提高工作效率;
- 提高系统的健壮性
接口的分类分为Post,Get等等
GET --- 通过请求URI得到资源
POST --- 用于添加新的内容
PUT --- 用于修改某个内容
DELETE --- 删除某个内容
CONNECT --- 用于代理进行传输,如使用SSL
OPTIONS --- 询问可以执行哪些方法
PATCH --- 部分文档更改
PROPFIND (wedav) --- 查看属性
PROPPATCH (wedav) --- 设置属性
MKCOL (wedav) --- 创建集合(文件夹)
COPY (wedav) --- 拷贝
MOVE (wedav) --- 移动
LOCK (wedav) --- 加锁
UNLOCK (wedav) --- 解锁
TRACE --- 用于远程诊断服务器
HEAD --- 类似于GET, 但是不返回body信息,用于检查对象是否存在,以及得到对象的元数据
Post和Get请求方法的区别:
- 功能不同:Get是从服务器上获取数据;Post是向服务器传送数据;
- 过程不同:Get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单各个字段一一对应,在URL中可以看到;Post是通过HTTP post机制,将表单各个字段与其放置在HTML HEADER一起传送到ACTION属性所指的URL地址。用户看不到这个过程;
- 获取值不同:对于Get方式,服务器端用Request.QueryString获取变量的值;对于Post方式,服务器端用Request.Form获取提交的数据;
- 数据传输量不同:Get传送的数据量较小,一般不大于2 KB;Post传送的数据量较大,一般默认不受到限制,但不超过10 KB;
- 安全性不同:Get安全性非常低;Post安全性较高;
URL请求结构
1. 请求协议
·http - 普通的http请求
·https - 加密的http请求,传输数据更安全
·fps - 文件传输协议,主要用来传输文件
2. 请求ip
指低通接口的系统所部署的服务器地址,本机为localhost或者127.0.0.1
3. 请求端口
即对应服务器暴露出来的端口号,不填默认为80端口,端口范围为1-65535
4. 接口路径
系统提供的接口在什么位置
5. 接口参数
参数在几口路径后面,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数
接口测试流程
整体的思路同产品设计差不多,但是其中的重点是设计用例!!
- 理清思路,避免漏测(肯定不能是随机测试)
- 提高测试效率
- 跟进测试进度(哪些做过测试,哪些还没有)
- 做过哪些东西,避免责任
- 跟进重复性工作(避免大量重复性作用的时候每次都不一样)
用例设计的设计方面:功能;逻辑业务;异常;安全
- 功能用例设计:主要是看功能是否被实现
-
功能是否正常
-
功能是否按照接口文档实现
-
逻辑业务用例设计
- 是否有依赖业务
-
异常用例设计
- 参数异常
- 关键字参数
- 参数为空
- 多、少参数
- 错误参数
- 数据异常
- 关键字数据
- 数据为空
- 长度不一致(超出数据库对应字段的最大长度)
- 错误数据
- 参数异常
-
安全用例设计
- Cookies
- Header
- 唯一识别码
-
接口测试工具介绍与使用
1. 接口测试工具的重要性
帮助你解决测试阶段和上线阶段大量的重复性工作,提高整体效率
2. 接口测试工具的分类
如何选择接口测试工具
- 测试所给时间
- 测试的简易程度
- 测试业务的复杂度
- 自身的能力,对测试工具的熟练度
3. 分类工具介绍
3.1 抓取接口的工具
1. HTTP watch:仅集成在IE和Firefox浏览器中,只需要在检查中去去使用即可,但是查看数据比较麻烦,而且其他浏览器不支持
2. Wire shark: 功能齐全的一款庞大的软件,会抓取经过电脑的所有请求,不只是HTTP,还包括TCP,导致看数据的时候会显得很乱,很麻烦
3. Fiddler: 轻量级软件,只记录HTTP请求,而且本身可以进行接口测试
3.2 测试接口的工具
- load runner: 性能测试和接口测试工具
- fiddler
- postman
- soupUI
- J meter
测试工具三剑客:postman+fiddler+自己开发的
4. Fiddler运用
Fiddler是一个HTTP协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间HTTP通讯,设置断点,查看所有的“进出”Fiddler的数据
- 独立的可以直接抓取HTTP请求
- 小巧且功能完善
- 快捷,启动即用
- 代理方便
工作原理
Fiddler的运用
- Header,Cookie
- 设置断点
- 添加筛选
- fiddler进行接口测试
5. Postman运用
Postman是由谷歌开发的一款接口测试插件;
- 各种类型接口测试
- 按需求添加Cookie,Header
- 操作记录清晰
- 多接口一起使用
- 方便回归
- 可以看到你测试的代码,帮你一步步熟练掌握代码
postman区别于其他的接口测试软件,其最大的特点就是可以自动反复的测试一个需要携带Header的Post请求,并且对针对线上、测试环境同一个数据进行测试,并对其实际结果作比较,作为测试结果;
接口测试工具的简单实践
1. Get接口
- 定义接口地址
- 定义请求数据
- 整理请求数据
- 发送数据并返回结果
利用Python创建接口测试工具类
import urllib.parse
import urllib.request
# 定义URL(根据自己的需求去定义)
url = ""
# 定义请求数据,并赋值,为字典格式(注意这里面的值是否有加密,如果有,需要传入加密后的值)
data = {}
data['key'] = 'value'
data['key1'] = 'value1'
# 把字典格式请求数据进行编码,并转化为Get请求数据格式
data = urllib.parse.urlencode(data)
# 请求地址和请求数据拼接
request = url + '?' + data
# 向服务端发送get请求
requestResponse = urllib.request.urlopen(request)
# 读取返回对象的内容
response = requestResponse.read()
# 进行编码转换,这里是utf-8和unicode之间的转化
responseStr = response.decode('unicode_escape')
# 打印内容(如果有需要,自行转换为JSON格式)
print(responseStr)
2. Post接口
import urllib.parse
import urllib.request
# 定义URL(根据自己的需求去定义)
url = ""
# 定义Header(为字典格式)
headers = {'key':'value', 'key1':'value1'}
# 定义请求数据,并赋值,为字典格式(注意这里面的值是否有加密,如果有,需要传入加密后的值)
data = {}
data['key'] = 'value'
data['key1'] = 'value1'
# 把字典格式请求数据进行编码,并转化为Get请求数据格式
data = urllib.parse.urlencode(data)
# 请求地址和请求数据拼接
request = urllib.request.Request(url,data,headers)
# 发送Post请求
requestResponse = urllib.request.urlopen(request)
# 读取返回对象的内容
response = requestResponse.read()
# 进行编码转换,这里是utf-8和unicode之间的转化
responseStr = response.decode('unicode_escape')
# 打印内容(如果有需要,自行转换为JSON格式)
print(responseStr)
接口测试基础部分大概就写这么多,不是很全面,只是后续学习的一个奠基,希望能够对大家有所帮助
祝各位码上无ERROR,键盘无BUG!!