1、接口测试
当前互联网公司技术架构:
接口测试价值:
接口测试源于现在测试体系中的分层测试:单元测试、接口测试(微服务之间的接口、单元组件接口以及端到端的API接口,通常为服务端测试也就是接口测试)、UI测试(客户端或者用户界面)
我们都知道测试越早介入,更能及早的发现问题、能以更低成本解决问题,其中单元测试一般开发自己保证,接口测试和UI测试可以划分为测试工程师的职能领域,那么接口测试比UI测试再前一环节,也同样比UI测试能更早、更快、更低成本解决产品问题,这就是接口测试的价值。
但同时接口测试有很多有点,但接口测试仅仅是保证了后端服务的质量,因此接口测试是测试分层的重要一环,但不能代替UI测试,UI测试主要是测试客户端页面的布局展示、对后端数据的展示,因此两个分层测试保证的质量方面并不一致,需要根据公司的架构,合理的调整接口测试和UI测试的一个比例,才能更完整的去保证公司产品的一个质量
2、常见接口协议
2.1 网络模型
2.2 TCP和UDP的区别
2.3 TCP三次握手连接和四次挥手断开连接
2.4 常见协议分析工具
2.4.1 tcpdump工具
tcpdump是linux下比较常用的网络抓包工具,运行时需要root权限运行,比较敏感的权限,指定给定的主机,可以进行该主机的数据截获的包分析工具
tcpdump命令本身支持很灵活的表达式,它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息
引用一个tcpdump常用命令的总结文档
https://jingyan.baidu.com/article/8275fc8677922446a13cf668.html
2.4.2 wiresharmk工具
wireshark工具可以抓取系统的网络数据,还可以打开tcpdump工具的抓包文件进行协议分析,两个工具可以结合使用
2.5 get和post区别
先引用一个讲的比较详细和带有原理性的解答文档
https://www.zhihu.com/question/28586791
简单总结就是:
1、两者的http请求方法不一样
2、get方法通常应用在不改变服务器状态的查询请求中,post方法通常应用于在服务器新建资源或提交表单信息的提交请求
3、get方法的请求参数信息是放在url中,post方法的请求参数信息放在body体中(一般是浏览器的通用方法)
4、post的请求信息中多出content-type和content-lenth两项信息
2.6 cookie、session、token的区别
引用一篇介绍cookie和session的文章:
https://www.cnblogs.com/wangpei/p/4884840.html
cookie:
浏览器接受服务器的set-cookie指令,并把cookie保存到电脑上,每个网站保存的cookie只作用于自己的网站
session:
1、可以基于cookie,也可以基于query参数,用于关联用户相关数据
2、session的数据存储在服务器端,同时服务端可以返回给客户端一个session id,用于关联用户的数据信息
3、跨端应用的时候,比如安卓原生系统不支持cookie
那么可以:用token识别用户,需要把sessionid保存到http请求中的header或者query字段中
token:
1、凭借认证信息获取token,或者通过后台配置好token;然后在相关请求中使用token,多数是以query参数形式提供
2、是一个用户请求时附带的请求字段,用于验证身份和权限
区别:
token:是一个字符串,验证身份和权限
session:主要是一种会话保活机制,用于关联用户相关的数据,即用户数据保存在服务端
cookie:保活机制下,服务器将session相关的数据对应的sessionid通过set-cookie方式,使得浏览器保存sessionid的,达到保活状态,即session+cookie的解决方案