接口测试详解
什么是接口?
硬件接口:usb接口(外部设备和电脑交换数据)
软件接口:统称为api,例如微信充值接口、提现接口
内部接口:开发人员自己开发的接口,对自身系统提供数据交互的。
外部接口:调用外部应用
总结:接口就是软件提供给外部的服务,主要用于交互数据。
为什么需要接口?
接口能够让内部数据被外部进行修改
银行系统(银联支付接口)
为什么做接口测试?
1.项目都是前后端分离(mock server)
2.基于安全考虑:前端的js认证容易绕过直接攻击后端接口。容易暴露敏感信息(接口鉴权)
3.测试左移。要尽早介入到项目周期
接口及接口测试的本质
接口的本质是:函数,动作
接口测试的本质就是:测试接口是否能够正常实现数据交互,异常场景,权限控制
接口返回的数据格式
1.json格式
开发规则:{error_code:0,message:返回说明,data:返回数据}
error_data:错误码,0表示
message:错误码的中文说明
data:接口具体返回数据
json只包含两种数据格式:
1.键值对{key:value}
2.数组[1,2,3]
2.html格式
3.xml格式
接口架构
SOAP架构:webservice协议。接口地址:http://...?wsdl(表示webservice dictionary language)
RPC架构:dubbo协议。接口地址:dubbo://...(springcloud微服务)
RestFul架构:http协议。http://...
http协议
http是一种超文本传输协议,主要作用于浏览器和服务器之间交互数据,交互数据分为请求和响应两个部分
请求
请求行:请求方式、请求地址、协议版本
请求头:
Host:请求主机
Connection:keep-alive 保持活跃
Content-length:内容长度
Accept:客户端接收的数据格式
X-Request-with:XMLHttpRequest(异步请求,一般用于登录)
User-Agent:工具名称,浏览器名称。客户端的角色。
Content-Type:请求的内容格式。x-www-form-urlencoded
Cookie:cookie信息
响应
响应行(状态码)、响应头(set-Cookie)、相应正文(响应数据)
cookie、session、token的相同点和不同点:
相同点:都是服务器生成的
不同点:cookie保存在客户端,session保存在服务器内存里,token保存在服务器的数据库或文件里
1.session和cookie区别:
· 数据存放位置不同:Session数据是存在服务器中的,cookie数据存放在浏览器当中。
· 安全程度不同:cookie放在服务器中不是很安全,session放在服务器中,相对安全。
· 性能使用程度不同:session放在服务器上,访问增多会占用服务器的性能;考虑到减轻服务器性能方面,应使用cookie。
· 数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie;session存储在服务端,根据服务器大小来定。
2.token和session区别:
· token是开发定义的,session是http协议规定的;
· token不一定存储,session存在服务器中;
· token可以跨域,session不可以跨域,它是与域名绑定的。
cookie
Cookie实际上是一小段的文本信息。 Cookies是由服务器产生的。 当浏览器第一次访问服务端时,服务器此时肯定不知道他的身份,所以创建一个独特的身份标识数据,格式为key=value,放入到Set-Cookie字段里,随着响应报文发给浏览器。浏览器看到有Set-Cookie字段以后就知道这是服务器给的身份标识,于是就保存起来,下次请求时会自动将此key=value值放入到Cookie字段中发给服务端。服务端收到请求报文后,发现Cookie字段中有值,就能根据此值识别用户的身份然后提供数据。
session
Session机制是一种服务端的机制 ,服务器使用一种类似散列表的结构来保存信息。当程序需要为某个客户端的请求创建一个session的时候 ,服务器首先检查这个客户端里的请求里是否已包含了一个session标识-session ID ,如果已经包含一个session ID ,则说明已经为此客户端创建过session,服务器就按照session ID把这个session检索出来使用。如果客户端请求不包含session lD,则为此客户端创建一个session并且声称一个与此session相关联的session ID ,session ID的值应该是一个既不会重复 ,又不容易被找到规律以仿造的字符串(服务器会自动创建),这个session ID将被在本次响应中返回给客户端保存。
token
Token是在服务端将用户信息经过Base64Url编码过后传给在客户端,每次用户请求的时候都会带上这一段信息,因此服务端拿到此信息进行解密后就知道此用户是谁了,这个方法叫做JWT(JSON Web Token)。 Token类似一个令牌,无状态的,服务端所需的信息被Base64编码后放到Token中,服务器可以直接解码出其中的数据。
Token相比较于Session的优点在于,当后端系统有多台时,由于是客户端访问时直接带着数据,因此无需做共享数据的操作。
Token的优点
简洁:可以通过URL,POST参数或者是在HTTP头参数发送,因为数据量小,传输速度也很快。
自包含:由于字符串包含了用户所需要的信息,避免了多次查询数据库,因为Token是以JSON的形式保存在客户端的,所以JWT是跨语言的,不需要在服务端保存会话信息,特别适用于分布式微服务。
接口测试流程
步骤
1.拿到api接口文档(如果没有,就去抓包),熟悉接口业务流程,地址,鉴权方式,入参,出参,错误码
2.编写计划和方案(必须保证正确接口是通的)
3.编写接口用例并评审
4.执行接口测试
5.输出接口测试报告
执行接口测试
鉴权码:鉴权是否有访问此接口的权限的字符串码
获取鉴权码的方式:
1.有一个专门的获取token鉴权码的接口
2.登录之后自动生成token鉴权码
接口测试用例设计思路