怎么从0学习接口测试?(文中附经典bug)
今天要给大家分享一下接口测试的相关知识,废话不多说下面直接进入今天的分享。
这是咱们今天要讲的内容目录
那么什么是接口,接口测试又是什么呢?
这是我们首先需要搞清楚的东西,如果连接口都不知道,那还谈何做接口测试呢?
根据百度百科显示,接口测试就是:测试系统组件间接口的一种测试。后面的都是关于接口测试的补充。
对于新人来说,看到这个解释肯定也是懵懵懂懂,还是不知道到底什么是接口。
那到底什么是接口呢?
这张图对于新手来说就比较友好了,咱们现在的客户端(你的电脑)和服务器要建立一种连接。
比如说你打开一个网页,服务器要告诉你这个网页有什么东西,首先要建立一个连接,连接
就是一个通道,有了通道之后,客户端就发送一个请求信息(即网页的网址)给服务端,服务端
收到之后就会给你一个响应信息,告诉你这个页面上到底长什么样子。最后再把这个通道关掉。
这就有点像咱们生活中打电话的情形:也是你先拨号,说话。对方听到,再给你回话。最后挂电话。
接口就是上图“发出请求信息”这一项。
那接口测试测什么呢?
既然“发出请求信息”这项就是接口,那么接口测试测的也就是这块东西。
最常见的接口就是我们的http:/www. 类接口了。只要是问服务器拿到的任何逻辑都是接口。
既然现在我们知道了什么是接口,接口测什么。那下一步自然是——
接口测试怎么实现?
这里给大家三个方向,一个是手动流(不常见),一个是工具控,一个是码农。
工具控&码农优劣势对比表
工具控码农
优势不需要懂太多代码,简单,学习成本低应用范围不容易被限制
劣势应用范围容易被工具本身限制非常耗时,学习成本高
手动流是一个很复杂的过程,但是它可以屏蔽掉任何的干扰(不管是加密还是什么),但是操作比较难
也要看真个网站做的怎么样,网站本身不行的话,做起来也会很烦。
隐藏在指尖的BUG
打开两个相同的浏览器,进入同一个网站的注册页面,先输入一个“test”用户名,再在另一个浏览器输入
相同的“test”用户名,然后就出现了下面的bug
然后,再重新点击两个浏览器中显示“用户名可用”的输入框和“手机号码”输入框,你会发现
这时,已经出现了一个不可重现的bug。那些不可重现的bug就是这么来的。大家也可以打开链接去尝试一下:https://passport.banggo.com/CASServer/custom/registryPage.do?service=http://bgact.banggo.com//Login/Reg
那么这到底是为什么呢?
首先,我们抓个包试试,先抓这个错误的请求。
这个错误的请求发给服务器之后,服务器返回的是“请求非法,请重试”。
再打开一个对的请求,大家可以看看服务器返回的是什么?
可以看到,这时服务器返回的是“该用户名已存在”!
我:¥@!%¥#……%¥……¥¥#¥
下面就揭晓答案
可以看到,每当新打开一个页面就会出现箭头所指的随机参数,它的目的是防止爬虫等,为了限制外部的访问频率而做的“手脚”。当然,这也是有弊端的,弊端就是每次打开页面都会生成一个新的随机参数 。
这时候就产生了上述问题:当第一次打开页面时,它给我一个token1,当再次打开相同的
页面的时候,它给我一个token2。这时,token1就被失效了。每次新打开的那个页面是显示
的是对的,原来的就失效了。
session和token有什么区别?
token就相当于门票,第一次凭票入场,后面就不需要再验证了。数据都是存在“门票”上的。
而session就相当于一个自动验证的机器,它是没有“票”发的。 数据都是存在服务器上的。
结语
咱们这一次的分享就先到这里结束了,下次会为大家带来剩下的“基于加密的接口测试”和
Jmeter实战,敬请期待。对接口测试感兴趣的,乐意一起交流的,可以加群175317069,不仅
为大家提供一个测试技术交流圈子,还有关于测试的学习资料可以提供。注意关注管理消息哦~