第1章 什么是接口测试
为什么要做接口测试?
接口的由来:连接前后端及移动端
不用端的工作进度不一样,需要对最开始出来的接口进行接口测试
- 节约时间,缩短项目时间
- 提高工作效率
- 提高系统健壮性
什么是接口测试?
一、什么是接口?
接口的种类:内部接口(上层服务与下层服务、同级服务)、外部接口
接口的分类:
post请求的数据是放在WebForm里面的,以表单形式提交(更安全)
get请求的数据直接在地址栏里,与地址一起提交
不同接口类型的差异:
参数提交方式、请求数据大小
第2章 接口测试流程
为什么要讲测试流程?
面试用、熟悉接下来该干的事情、掌握基础知识
为什么要设计测试用例?
- 理清思路,避免漏测
- 提高测试效率
- 跟进测试进度
- 告诉领导做过
- 跟进重复性工作
用例设计:
- 功能
- 逻辑业务
- 异常
- 安全
功能用例设计:
- 功能是否正常
- 功能是否按照接口文档实现
逻辑用例设计:
- 是否依赖业务
异常测试用例设计:
参数异常、数据异常
安全测试用例设计:
- cookie
- header
- 唯一识别码
第3章 接口测试工具的介绍与使用
使用接口测试工具的目的?
提高工作效率,保证工作质量
如何选择接口测试工具?
- 时间
- 简易成都
- 业务复杂度
- 测试人员能力
接口测试工具分类:
- 抓取接口
- 测试接口
抓包工具分析与抉择:
- httpwatch,缺点:只能在IE和Firefox浏览器里面,其它浏览器不支持,看数据比较麻烦(一般不选择)
- wireshark,wireshark是经过电脑的所有请求它都会去抓取,看数据也比较麻烦
- fiddler,轻量级,√
- loadrunner,
- soapui
- jmeter
- postman,√
接口测试工具三剑客:fiddler、postman、python自己开发
1、fiddler
优点:
- 独立的可以直接抓http请求
- 小巧,功能完善
- 快捷,启动就行
- 代理方便
什么是fiddler?
fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间http通讯,设置断点,查出所有的“进出”fiddler的数据。
fiddler的运用:
- 查看接口请求方式
- 查看请求数据、响应数据
- 接口返回状态
- 设置代理
- header、cookie
- 设置断点
- 添加筛选
- fiddler进行接口测试
从左到右为:GET接口请求类型,接口地址,以?分割数据,参数,=后是数据,多个数据以&分开
2、postman
postman是由谷歌开发的一款接口测试插件
postman的运用:
- 多接口一起使用
- 方便回归
- 提高技能水平
第4章 接口测试工具的简单实践
4.1、python GET接口实战
python GET请求实现方式:
- 定义接口地址
- 定义请求数据
- 整理请求数据
- 发送数据并获取结果
# -*- coding:utf-8 -*-
#__author__='keira'
import urllib
import urllib2
#定义请求数据,并且对数据进行赋值
url = "http://reg.haibian.com/login/ajax_login"
data = {}
data["loginname"] = 'student08@qq.com'
#需要将111111进行MD5加密,使用加密后的密码
data["password"] = '111111'
#对请求数据进行编码
data = urllib.urlencode(data)
#将数据和url进行连接
request = url+'?'+data
#打开请求,获取对象
requestResponse = urllib2.urlopen(request)
#print(requestResponse) #返回的是对象
#读取服务端返回的数据
ResponseStr = requestResponse.read()
#打印数据
ResponseStr = ResponseStr.decode("unicode_escape")
print(ResponseStr)
4.2、python POST接口实战
#POST接口请求
import urllib
import urllib2
url = "http://xapi.kybyun.com/user/login"
headers = {}
headers = {'Host':'xapi.kybyun.com',
'Connection':'keep=alive'
}
data = {}
data["appchg"] = 'Appstore'
data["apptype"] = '21'
data["appver"] = '2.1.3.1'
data["email"] = 'sll01'
#......
#数据编码以及赋值
data = urllib.urlencode(data)
req = urllib2.Request(url,data,headers)
#打开地址,并赋值给变量
ResponseStr = urllib2.urlopen(req)
#读取获得的值
ResponseStr = ResponseStr.read()
#将获得的结果进行转码
ResponseStr = ResponseStr.decode("unicode_escape")
#打印
print(ResponseStr)
5、接口测试之常用协议解析
1、http协议和websocket协议的原理解析
FTP 文件传输协议
SMTP 邮件传输协议
TELNET 终端仿真协议
http 超文本传输协议
协议:一种通讯规则,适用于不同的系统
公有协议:
http :请求——响应
websocket :与浏览器进行主动通信
2、http协议的报文结构
响应头(header)、响应主体(body)、状态行
header与body之间空了一行
3、基于http协议的接口测试