导图社区 31.接口httpF12
接口测试基础知识,知识涵盖1.http应用 2.get,post区别 3.状态码 4.cookie session token。
编辑于2022-02-09 23:40:5231.接口+http+F12
1.接口
1.概念
数据传递的方式,后端封装接口,等待前端调用
2.使用场景
使用工具/代码代替前端与后端进行交互
3.意义
1.测试左移,前端未完全开发前,提前介入后端进行测试
2.绕过前端的格式效验,对服务器发起请求,分析响应报文是否合理,提高系统的安全性
1.支付金额,绕过前端,通过fiddler篡改请求报文的金额
2.限购数量,绕过前端,通过fiddler篡改请求报文的数量
4.种类
1.内部接口,同一软件之间的模块连接
2.外部接口,不同软件之间的数据连接
5.接口类型/协议
1.http/https
通过get/post方法来获取或者传递数据,数据处理效率高
业务期望的角度:get用来获取数据,post用来传输修改数据
技术角度:两者皆可以用来获取或者传递数据
基于请求和响应的模式
2.webservice
通过soap协议获取数据,用以处理复杂的数据类型,本质为http封装
6.左移和右移
瀑布模型:需求-开发-测试-用户
左移
提前介入测试,尽早发现底层bug,降低系统测试的bug数量,因为不同模块可能调用的是同一个出问题的接口
右移
收集用户线上问题,验证后提交bug
2.剖析http request-F12 fiddler
1.请求消息
1.请求行
请求方式以及URL和http版本
2.请求头
主要关注content-type,它规定了请求报文的数据格式(JSON+XML+form)
3.空一行
4.请求体
一般是参数,get方法的参数在URL部分
5.get和post的区别
1.安全性,get参数在URL,post参数在请求体,因此post相对get是安全的
2.get的参数对于数据长度是有限制的,而post没有
2.响应报文
1.响应行
http版本+响应状态码
2.响应头
cookie/token
3.空一行
4.响应体
针对请求返回的数据,比如XML/JSON等
3.响应状态码
2XX
200 返回正常
3XX 重定向
302临时重定向
请求的URL已更改浏览器,新的URL在响应头的location
使用场景
Chrome打开登录中的购物车界面,复制URL在Firefox,此时购物车界面会被重定向至登录界面
304未修改
页面刷新,缓存不需要更新,就会返回此状态码
意义
节省网络资源
4XX 客户端错误
404 请求的URL不存在
403 禁止
禁止客户端访问,通常原因是客户端的权限不足
5XX 服务器错误
500
服务器内部错误
使用场景
关闭Tomcat服务,客户端将不能访问到web服务器
502
网关错误
504
超时
4.http协议特点
1.无状态
协议无记忆,比如访问一个网站,页面跳转时需要重复输入账号密码
改良机制
cookie+session
token 当前常用的技术
2.无连接
每次请求都会重新进行TCP连接,这样会导致不同的请求没有关联
改良机制
connection:Keep-alive 保持长连接
3.明文传输
所见即所得,但是对于敏感数据应该进行URLEncode
5.F12
1.网络-勾选持续记录
保持第一个报文不会被覆盖
2.所有
3. cookie+session
1.cookie概念
1.客户端缓存技术
清除缓存后,浏览器再次发送请求时,将不再携带cookie,以陌生人的身份访问服务器,服务器会生成cookie,发送给浏览器保存
2.cookie数据由服务器生成,发送给浏览器保存
3.cookie以键值对的形式存在
4.cookie数据过期机制:设置expire值
火狐-F12-存储-coolie-URL-过期时间-mp 设置cookie过期时间
2.cookie使用场景
1.记住登陆的用户名
火狐-F12-存储-cookie-URL-值-mp存储用户名信息
2.记录用户浏览记录
意味着不需要与服务器交互,该数据缓存于浏览器中
3.session概念
1.服务器会话缓存技术,会话里保存登陆的用户信息
2.session数据由服务器的web容器生成,由服务器保存
3.以键值对的形式存在
4.session数据过期机制: 默认30分钟
因为session数据过于庞大,所以保存时间短,降低数据库的压力
4.session使用场景
1.用户鉴权
用户登陆才可以访问指定的页面
复制购物车界面到其他浏览器,会被重定向至登陆界面
流程
浏览器发送登陆请求至服务器,服务器生成cookie(内含session)并以set-cookie的方式存在于响应头,告诉浏览器要保存set-cookie(内含session),当浏览器再次访问服务器时,服务器会鉴别浏览器携带的cookie(其实就是session ID),然后给予相应的访问权限给浏览器,当服务器无法识别session ID,将会重定向至登陆界面,并返回响应至浏览器
会员卡机制
sessionID存在于cookie中,每次请求cookie的所有信息都会传给服务器,服务器通过sessionID识别是否同一用户的请求,是则放行,否则重定向至登录界面
拓展1:session过期处理。
当服务器端的会话过期了,那么当你继续发起请求的时候,因为你从客户端带过去的会话编号还是之前的那个,就会验证不通过,就会提示你会话过期请重新登录。
拓展2:token机制
app项目为例: 一般app项目都会基于一个token做鉴权。 因为此时客户端不是浏览器,因此就没有cookie这一说了。 当用户登录app时,服务器会响应回来一个token信息(一般都是返回的一串唯一的标识符,比如说udid或其他)。 服务器端会将登录用户跟token(票据)保存一个映射关系,一般保存在redis或者表里面,服务器端响应回来的token会缓存在手机 的本地缓存里,后面手机去访问app的其他页面,就会带着这个token去服务器做验证,如果通过这个token能够从redis找到登录用户信息 那么就认为你是已经登录了的用户。
token失效:
一段时间后,服务器端的token失效了,那么就会把此token跟用户的映射关系从redis里删掉,那么后面再来访问的时候,根据你手机请求带来的token 就匹配不上登录用户了,服务器就告诉客户端,需要去做重新登录了、
token
用计算成本替换存储成本
关于同一浏览器登录不同账号
当前登录admin账号,新窗口登录wuye账号,此时刷新admin账号,会变成wuye账号,其原理如下: wuye登录时,携带admin的sessionID,服务器对比该sessionID,发现用户不一样,此时生成新的sessionID,通过set-cookie告知浏览器保存,则admin刷新时,会被重定向至wuye账号
token
数据 用户信息
签名
算法
秘钥
token包含数据+签名,客户端请求携带token,服务器对token中的数据再用算法和秘钥计算出签名,与token中的签名进行比较,一致则放行,否则重定向至登录界面
token与session的区别
session保存在服务器
服务器对比客户端携带的sessionID
token保存在客户端
服务器重新计算数据获得签名,对比客户端带来的签名
4.面试题
1.在项目什么阶段做接口测试?
前端未开发完,测试提前介入,进行接口测试
会在集成与系统阶段进行接口测试
2.为什么做接口测试?
1.测试左移,提早发现底层bug,第一可以降低系统测试时的工作量,第二能加快项目发布进度
2.安全性,绕过前端格式效验,测试后端是否安全,避免恶意用户操作造成损失
3.接口测试原理?
利用工具/代码模拟前端对接口进行调用
4.前端已开发完,并通过前端界面完成了 系统测试,是否还需要进行接口测试?
出于安全的角度,对于敏感数据传输的部分要进行接口测试,例如密码/金额等
5.完成接口测试,是否还需要前端界面的系统测试?
测试需要贴近用户使用场景,因此一定需要再进行前端界面测试
6.http协议(请求报文+响应报文)/get和post区别/状态码/cookie,session,token
用户鉴权就是用户身份验证