目录:
一. 什么是接口
二. 网络基础知识
三. HTTP协议
四. 什么是接口测试
五. 抓包工具Fiddler的使用
六. Postman的使用
一. 什么是接口
接口是能为其他程序提供服务的一组代码
接口即服务
为其他模块或UI提供数据或资源
接口是提供访问途径的程序代码
1.提供访问地址(接口地址)
2.提供访问方式(规定的参数及数据格式)
3.一般需要身份验证
接口的基本流程
接口场景(例如:商城)
常见的接口分类:
HTTP接口:使用HTTP(超文本传输)协议来进行请求和响应的接口
RESTful(简称REST)接口:一种规范的接口设计风格,基于HTTP协议传输
RPC接口:远程方法调用(像调用本地方法一样调用远程服务器上的程序方法)
Web Service接口:基于SOAP协议,使用HTTP传输的一种RPC解决方案
Dubbo:一种适用于微服务的RPC解决方案
一个资源类接口的大致过程:
1.用户在浏览器访问http://www.baidu.com
2.浏览器自动重定向到http://www.baidu.com/
3.查询本地是否有该域名相应的cookies
4.查询本地缓存是否有该资源(无)
5.查询本地hosts中是否有www.baidu.com域名
6.查询DNS服务器www.baidu.com指向的ip
7.向服务器请求资源
8.查询CDN(内容分发服务)是否有对应资源
9.服务器重定向到https://www.baidu.com/
10.返回资源(网页源代码)及请求并下载相关引用资源(css/js/图片等)
11.浏览器渲染出页面
另一个动态接口的大致过程:
1.用户在页面上填写用户名、密码,点击登录
2.页面组装,编码并发送POST请求
3.查询本地是否有该域名相应的cookies
4.查询本地hosts相关域名
5.查询DNS域名所对应的IP地址
6.向服务器发送请求
7.Nginx反向代理收到请求(根据匹配规则或负载均衡策略)转发给指定的应用服务
8.应用服务(Tomcat / phpfpm / wsgi)将请求翻译给程序代码
9.在程序代码路由中查询到对应的接口方法
10.接口方法处理请求
1)一些安全过滤及验证
2)获取请求数据中用户名及密码
3)向数据库验证用户名和密码(成功)
4)为用户生成并维持session(会话)
5)组装登录成功信息并携带session_id返回响应
11.前端页面成功请求跳转响应的页面,并把session_id设置到用户本地的cookies中(标识用户已登录)
二、网络基础知识:IP地址
IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信,每台连网计算机都依靠IP地址来互相区分、相互联系。
网络基础知识:端口
端口(Port):是计算机与外界通讯交流的出口。
为了应对不同类型或大量的访问请求,一般一个IP会拥有很多个端口(通常为65535个)。
按端口号可分为3大类:
1.公认端口:从0到1023。互联网标准协议接口,如HTTP:80,HTTPS:443,FTP:21,SSH:22,SMTP:25等
2.注册端口:从1024到49151。一些常见软件注册绑定的端口,如Tomcat:8080,MySQL:3306,Redis:6379等
3.动态或私有端口:从49152到65535。一般为临时动态绑定的一个接口,如selenium webdriver启动是会临时绑定一个动态接口提供服务。
网络基础知识:域名
1. 由于IP地址是数字标识,使用时难以记忆和书写,因此在IP地址的基础上又发展出一种符号化的地址方案,来代替数字型的IP地址。每一个符号化的地址都与特定的IP地址对应,这样网络上的资源访问起来就容易的多了。这个与网络上的数字型IP地址相对应的字符型地址,就被称为域名。
2. 使用ping查看域名对应的ip地址:61.135.169.125 <=> http://www.baidu.com/
网络基础知识:DNS(了解)
1. DNS是Domain Name System的缩写,即域名系统。提供网站域名与IP地址的相互转换服务。
2. 域名与IP地址之间是呈一一对应的关系。
3. 本地HOSTS配置:
1)Win:C:\Windows\System32\drivers\etc\HOSTS
2) Linux/Mac:/etc/hosts
3) 格式:ip域名
4)一般Nginx反向代理接口都需要配置hosts,然后通过域名访问接口
5)SwitchHosts
三、 HTTP协议
HTTP:即超文本传输协议,应用层通讯协议。
1. 两个主要应用场景
传输网页及图片等资源
接口数据通讯
2.主要组成
请求 Request
响应 Response
处理
HTTP协议:请求 Request
请求方法(Method):请求要做什么操作
URL:请求的服务器及接口地址和查询参数
请求头(Headers):请求数据辅助信息(内容类型Cookie等)
请求体(Request Body):请求数据
请求:请求方法
Chrome开发者工具抓包
打开浏览器按下F12,打开浏览器开发工具,地址栏输入https://www.baidu.com/
请求及抓包练习:查看请求
1. 浏览器访问 http://www.baidu.com 使用Chrome开发者工具查看请求详情
2. 浏览器访问 http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好 使用Fiddler抓包查看请求原始(Raw)格式
3.使用Postman发送Post请求:http://115.28.108.130:5000/api/user/login/ 数据:name=张三,password=123456
思考:Post请求与Get请求有什么区别?
不同请求方法练习
任务列表:GET http://115.28.108.130:5000/todos
新建任务:POST http://115.28.108.130:5000/todos 数据:{"task":"吃大象"}
任务详情:GET http://115.28.108.130:5000/todos/todo1
更新任务:PUT http://115.28.108.130:5000/todos/todo1 数据:{"task":"温柔的打开冰箱门"}
删除任务:GET http://115.28.108.130:5000/todos/todo1
HEAD http://115.28.108.130:5000/todos
OPTIONS http://115.28.108.130:5000/todos
GET方法和POST方法的区别
GET方法
1. GET用于取回获取数据或资源
2. GET请求没有请求体
3. GET请求通过URL参数查询数据(URL有长度限制),请求体(请求数据)为空
4. 请求可被缓存及保存浏览器历史记录中(不适合敏感数据,安全性较差)
POST请求
1. POST请求用于新建及更新数据
2. POST请求数据一般放在请求体中,无长度限制
3. POST请求一般后台发送,不会被缓存和记录,安全性较好
4. POST请求是非幂等的,可能会影响之后的请求
POST请求一般每次都会新建资源,如使用POST请求新建一个id为2的用户,下次再发送同样的POST请求建立id为2的用户会出错
请求:URL
基本格式
<scheme>://user:password@<host>:<port>/<path>?<query>
scheme 协议 ftp、http、https
host 主机/域名
port 端口
path 路径
?query 查询参数key=value&key=value
带参数GET请求练习(Chrome/Postman)
1. https://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15801396646
2. http://www.tuling123.com/openapi/api?key=ec961279f453459b9248f0aeb6600bbe&info=你好
3. http://115.28.108.130:8080/DemoController/getUserByIdAuth?id=1
请求:常见请求头
请求头:内容类型Content--Type
内容类型,一般是指网页中存在的Content-Type,用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件。
常见的媒体格式类型如下:
text/html : HTML格式
text/plain :纯文本格式
image/gif :gif图片格式
image/jpeg :jpg图片格式
image/png:png图片格式
以application开头的媒体格式类型:
application/xml : XML数据格式 webservice 协议采用的就是xml格式的数据请求
application/json : JSON数据格式
application/pdf :pdf格式
application/msword : Word文档格式
application/octet-stream : 二进制流数据(如常见的文件下载)
application/x-www-form-urlencoded : 表单(纯文本)
multipart/form-data: 复合表单(可以含有上传的文件)
请求:请求数据
不同内容类型请求数据发送练习(Postman)
1. 无请求数据(GET)
2. application/x-www-form-urlencoded : 表单(纯文本)
http://115.28.108.130:5000/api/user/login/
3. application/json: JSON数据格式
4. application/xml : XML数据格式 webservice 协议采用的就是xml格式的数据请求
5. multipart/form-data 复合表单(可以含有上传的文件)
HTTP协议:响应 Response
状态码及说明:返回请求的状态(成功还是失败)
响应头(Headers):响应数据辅助信息(内容类型,Cookie等)
响应体(Request Body): 响应数据
响应:状态码
每条 HTTP 响应报文返回时都会携带一个状态码。状态码是一个三位数字的代码,告知客户端请求是否成功,或者是否需要采取其他动作。 http://www.w3school.com.cn/tags/html_ref_httpmessages.asp
常见状态码
1. 200: OK
2. 302: http://115.28.108.130:8080/forWard.jsp?id=1 重定向:从响应的location里看
http://115.28.108.130:8080/DemoController/getUserByIdForWard?id=1
3. 401:未授权
使用Postman 发送GET http://115.28.108.130:8080/DemoController/getUserByIdAuth?id=1
4. 404:资源未请求到或者没有
http://115.28.108.130:8080/DemoController/getUserByIdForWard1?id=1
5. 405: 请求方法不对 GET http://115.28.108.130:5000/api/user/reg/
6. 415 数据类型不对 POST http://115.28.108.130:5000/api/user/reg/ 使用表单格式
7. 500: 服务器内部错误 GET http://115.28.108.130:5000/add?a=1.1&b=2
响应:常见响应头
响应:响应数据
常见响应内容类型:
1. Text
2. HTML
3. JSON
4. XML
HTTP协议:HTTP与HTTPS的区别
HTTP与HTTPS
HTTP协议传输的数据都是未加密的,HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,要比HTTP协议安全。
HTTPS和HTTP的区别
1. HTTPS协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2. HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3. HTTP和HTTPS使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4. HTTP的连接很简单,是无状态的;HTTPS协议是由HTTP+SSL协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
HTTP协议:处理
接口处理一般流程:
1. 身份验证(接口安全策略)
2. 提取参数
3. 处理业务
4. 组装并返回响应
常见接口安全策略
1. Cookie/Session: 服务器维持用户Session会话模式(用户登录模式)
2. Appid/Token: 通过算法生成/校验身份令牌(token)模式
3. 开放协议(Basic Auth/Oauth): 标准开放协议
4. 数字签名: 对参数整体生成签名(sign),防止请求篡改
Cookie与Session的区别
Cookie和session都是由服务器生成,维持会话的作用。Cookie保存在客户端,session保存在服务端。Jsessionid为cookie和session结合使用(tomcat下),若客户端禁止掉cookie则通过在url后面增加sessionid实现。每次会话结束,sessionid都会注销,故需要关联。通过抓包实例介绍。
四、什么是接口测试
测试系统组件间接口的一种测试。
检测外部系统与系统之间以及内部各个子系统之间的交互点。
接口测试用例设计
五、抓包工具Fiddler的使用
1. 抓包
代理:Tools -> options -> Connections -> Allow Remote Compute to connect
手机抓包:手机与电脑同一WIFI,查看电脑ip,手机WIFI选高级 -> 手工配置代理:电脑ip:8888
HTTPS抓包:查看电脑ip,访问http://ip:8888,下载并安装证书(iPhone需要信任证书)
2. 查看请求
查看: Inspector: 按WebForm/JSON/XML/Raw格式查看请求
查找: Ctrl + F/在列中查找
过滤: 快速命令/Filter (修改后需要重启)
3. 调试
Composer: 发送请求
修改HOSTS: Tools -> HOSTS
断点/重发/简单压测 Rules -> Automatic breakpoints/拦截后修改请求/会话上点击右键->Replay -> shift + Replay Request
Auto Responder: 重定向请求
弱网模拟(不能设置具体网速, 需要通过Fiddler Script实现): Rules ->Performance->Simulate Modem Speeds
Fiddler介绍
主界面
1. 工具栏
2. 会话区
3. 监控区
4. 状态栏
Fiddler常见资源类型
会话区
Fiddler的使用
Inspector:
Raw:请求的原始格式
WebForm:请求的表单格式
Json:请求的Json格式请求
XML:请求的XML格式
过滤:Filter
Hosts:按服务器过滤
Clients Process:按客户端程序过滤
Request Headers:按请求头过滤
Breakpoints:设置断点
Response Status Code:按状态码过滤
Response Type and Size:按响应类型及大小过滤
Response Headers:按响应头过滤
六、Postman的使用
请求
不同内容类型的请求(Form/JSON/XML/文件上传)
需登录接口(3种策略)/需授权接口(Basic Auth)
其他(批量编辑/转为代码/Cookies管理器/控制台)
响应
查看格式/默认解析格式设置/Ctrl+F搜索
参数化
变量/环境管理/关联(接口依赖)
断言
状态码/包含文本/JSON断言
集合
导入导出/集合运行/使用数据文件进行参数化
其他
捕获(抓包)/Mock Server/监视器
作业:
写加油卡测试用例并用postman实现
"dataSourceId": "bHRz"
原文:https://www.cnblogs.com/majieboke/p/12175531.html