接口测试
1、url的组成¶
2、接口测试的工具¶
接口测试:使用工具模拟场景进行测试
Postman:功能简单比较方便
Jmeter:功能强大
Java:实现的测试工具
3、restful风格¶
get:请求常用于查询接口
post:请求常用于新增接口
delete:请求常用于删除接口
put:请求常用于修改接口
它是一种软件的架构风格,设计风格,不是标准,具体看开发怎么定义的
4、get和post的区别¶
1、本质上都是tcp连接
2、Get的数据存放在url后面,提交时没有消息体,post的数据存放在消息体中
3、Get数据量一般不超过2kb,post适合大规模的数据传出
4、Get的安全性没有post的安全性好,因为get是把数据存放在url后面,浏览器有缓存可记录用户信息,所以一般考虑到安全一般不用get
5、Get在刷新时没有提示,post用弹出提示框问用户是否重新提交
6、Get只允许ascll字符,post没有限制也允许二进制数据
7、Get时向服务器获取数据,post是向服务器上传数据
5、接口的测试用例格式¶
用例编号,用例标题,子用例,api接口,请求方式,操作步骤,预期结果,实际结果,备注
6、接口的类型¶
1、Webservice接口:Webservice是系统对外的接口,比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数据共享的目的。
2、Mq:适用于大型软件架构,传输快,消息队列,传输的量大并且准确性高不丢失
3、Socket:既是一个协议,也是一个接口类型,通常都是开发定义的,可以自定义到端的接口,采用的是tcp,ubp通信协议
4、http:既是一个协议,也是一个接口类型,直接调用超文本传输协议http分为 rest请求协议和 soap请求协议,都属于底层协议
7、http和https的区别¶
1、http是超文本传输协议 https是加密的超文本传输协议
2、http的URL是以http开头,https的URL是以https开头
3、http是明文传输,安全性低,https是加密的传输,需要身份验证
4、http的默认端口号是80,而https的端口号443
8、https怎么加密的¶
双向加密,对请求进行加密,对响应也进行加密,加密的方法是ssl
9、http和https的特点
1、http特点:无状态,无连接,基于请求和响应,简单快速灵活,通信是明文传输
2、https特点:基于http协议,通过ssl或tls提供的加密处理数据,验证对方身份以及保护数据的完整性
10、osi七层协议¶
1、物理层2、数据链路层3、传输层4、网络层5、会话层6、表示层7、应用层
11、tcp四层¶
数据链路层---物理层,网络层---网络层,传输层---传输层,应用层---会话层
传输层通过三次握手和服务器建立连接 ,四次挥手断开连接
12、三次握手和四次挥手¶
1、第一次握手:建立连接,客户端发送syn包到服务器并进入syn-send等待服务确认;
2、第二次握手:服务器收到发送的syn包确认客户端syn同时自己发生一个syn包,
服务器进入syn=recv状态,服务器被动打开,接受客户端的请求,并发送了ack状态
3、第三次握手:客户端收到服务器发送的包,在向服务器发送确认包,发送完毕后服务器和客户端进入established状态完成三次握手
4、第四次挥手:基于三次握手前提下,断开连接
13、tcp和udp的区别¶
1、tcp可靠的,面向连接的协议,传输效率低,面向字节流,适用于可靠传输的应用,比如文件的传输
2、udp不可靠,无连接的服务,传输效率高,一对一,一对多,多对多,面向报文尽最大努力服务,无拥塞控制,适用于实时应用(ip电话,视频会议,直播)
3、udo比tcp传输速度快,因为tcp需要三次握手
14、没有接口文档怎么测试¶
首先找开发要一份接口文档,然后根据文档进行测试,没有的话,先让开发维护一份出来,更加方便工作的进行,实在不行,我会通过fldder抓取接口信息,把接口信息配置中postman中,配置一下url,请求方法,请求参数,cookie,根据要求就可以进行测试了。
15、接口测试的流程¶
首先找开发要一份接口文档,然后对文档进行分析,使用xmind编写对应的的测试点,根据测试点编写详细的测试用例,完成后,找开发评审一下,看有没有错误的,有没有多余的,有没有遗漏的,之后我会用postman执行测试,配置一下,请求方法,url以及传输参数和接口文档一致,执行测试,查看返回内容,先执行正向的测试,查看添加的请求参数内容是否和返回的参数内容相对应,正向测试执行完毕后,执行异常测试(包括了必填项为空,字段类型不正确,请求方式不正确等等)
在我测试电商项目时,新增手机接口必填项有:aid,model,phone,看对应接口code码是否和需求说明书一致,一致就是没有问题,不一致就是这项功能出现了bug,使用禅道提bug给开发,开发进行修复,修复完成后,我会做一个复测,复测通过关闭,不通过继续提交,直到bug修复完成。
16、接口测试出现的错误¶
1、一般错误:接口没有实现,没按照规定返回结果,决界值处理问题。
2、输入异常值:空值,特殊字符,超过约定长度
3、输入错误参数:多输入参数,少输入参数
4、安全性:明文传输、返回的结果含有敏感信息,没对用户身份信息做校验,没有恶意请求拦截。
5、性能问题:接口并发插入多条相同操作,响应时间过长,接口压测出现瓶颈。
17、接口异常怎么分析¶
1、使用fiddler抓包,查看返回报文和请求报文
2、web端直接使用f12的network,查看请求报文和返回报文,是后端的问题,查看后端日志。
18、抓包工具(fiddler)¶
我一般用的是fiddler进行的抓包,默认抓取的是http的包,可以直接进行抓取,如果要抓https的包,在tooks-options-https下载信任证书,然后去浏览器打开要抓的网站就可以进行web端的抓包了。
如果要抓app的包,首先保证电脑和手机在同一个局域网下,在fiddler的tools-options-connections内配置端口号,然后手机WiFi的高级设置里面配置端口号和电脑ip,打开需要抓包的软件就可以进行抓取了,要抓https的话,手机和电脑都需要下载一个安全证书。
19、打断点¶
1、我一般用的是快捷键f11对请求进行打断,alt+f11对响应进行打断,shift+f11关闭打断点,主要截取、篡改数据,是否有拦截不允许篡改。
20、模拟弱网¶
我用的是cter+r打开配置文件,修改请求时间和响应时间,数字调整的越大,网上越慢,修改完成后保存文件,打开模拟弱网的开关就可以模拟弱网了。
21、cookie和session的区别¶
1、cookie:是存放在浏览器上,session是存放在服务器上
2、cookie不是很安全,别人可以分析存放在本地的cookie进行cookie欺骗,考虑到安全应该用session。
3、session会在一定时间内保存在服务器上,超时需要重新登录
4、单个cookie保存的数据不能超过4kb,很多浏览器限制一个站点,保持20个cookie。
22、token和session的区别¶
1、都是保存了用户的信息,都有过期的时间,token支持跨域访问,将token放在请求头中。
2、token和session都是为了身份验证,session一般翻译为会话,token翻译为令牌
3、session在服务器上会保存一份,可能保持在缓存/数据库/文件中
4、token每次都是一个无状态的请求,服务器无需存储token,只需验证token的信息是否正确,每次都是通过解密来验证是否合法,更适用于移动端,像Android、ios、小程序这种原生平台,不支持cookie,比如微信小程序每一次都是一次会话
5、session是空间换时间,token是时间换空间
23、做接口测试主要关注哪些¶
1、接口的连通性:首先要保证前端发送的请求后台能够正常响应
2、接口的组合性:一个接口的字段下面有多个值,根据不同的值进行测试
3、接口的异常性:考虑不同的值进行验证,比如:数据为空,字符长度和格式
4、接口的安全性:主要考虑篡改一些请求,比如支付金额的时候,后台需要做出判拦截
5、接口的稳定性:要保证接口的稳定性,不能出现数据丢失,出现响应过慢的情况
24、请求完接口怎么验证数据¶
1、我回去数据库验证数据,新增了一条数据,我回去数据库查看是否新增了这条数据,修改数据的时候,查看对应的信息是否被正确修改,删除也是一样的。
25、postman和jmeter的区别¶
1、都可以进行网络请求2、postman功能比较简单,只能在接口测试3、jmeter不仅可以做接口测试还可以做性能测试4、jmeter支持各种类型的接口,还可以扩展5、postman只能测试restful接口6、postman的url是一个整体,jmeter分为:协议、ip、端口号、路径
26、需要登录的接口怎么做的¶
1、cookie:先请求登录接口,配置cookie管理器这时候就会保存登录态了
2、token:先请求换取新的token接口,然后使用json提取器把token的值提取出来,放在信息头管理器中,这时候下面的接口就有登录态了
27、jmeter用过哪些参数化¶
Csv数据文件设置,比如测试大量数据的时候会用到,比知测试500个用户登录可以将500个用户的用户名和密码配置在csv数据文件中进行参数化
还用过用户参数化和自定义参教化,测试少量的测试数据时会用到,比如说像项日路径、项目域名或者传参进行参教化 不一样的是用户参数化相当于局部变量自定义参数化相当于全局变量
28、多接口的测试方法¶
用jmeter添加一个json提取器把需要的内容提取出来传递给下个接口使用比知
测试下单接口的时候,要先登录,在查询商品信息,最后进行下单。
首先我会先请求登录接口添和一个json提取器 在登录接口下配置json提取器 设置一个变量 根据路径去取token,设置与$.token 将token的值提取出来、使用${{token}},把它放到请求头中,使其保持登录态,方便其他接口使用。
然后在请求查询商品接口,使用json提取器 把需要的参数(商品的id)提取出来后给下单接口使用。
最后 下单接口就可以使用查询商品的商品id进行下单了,这就是对接口测试下单的流程。