接口用例样式
接口
http api接口:是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post方法,这也是最常用的俩种请求方式。可以使用的工具有postman,RESTclient,Jmeter,Loadrunner等;
接口组成
首先,接口文档应该包含一下内容:
-
接口说明
-
调用url
-
请求方法(get/post)
-
请求参数,参数类型,请求参数说明
-
返回参数说明
由接口文档可知,接口至少有请求地址,请求方法,请求参数(入参和出参)组成,部分接口有请求头header标头(header):是服务器以http协议传HTML资料到浏览器所发送的字串,在标头与HTML文件之间尚需空一行分割,一般存放cookie,token等信息
header和入参有什么关系?
首先,它们确实都是发送到服务器里的参数,但它们是有区别的,header里存放的参数一般存放的是一些校验信息,比如cookie,他是为了校验这个请求是否有权限请求服务器,如果有,它才能请求服务器。也就是说,服务器是先接受header信息来进行判断该请求是否有权限请求,判断有权限后,才会接受请求地址和入参的。
为什么要做接口测试
大家都知道,接口其实就是前端页面或app调用与后端做交互用的,所以好多人都会问,我功能测试都测好了,为什么还要测接口呢?ok,在回答这个问题之前,先举个例子:比如测试用户注册功能,规定用户名为6~18个字符,包含字母(区分大小写)。首先功能测试肯定会对用户名进行校验,比如输入20个字符,输入特殊字符等,但这些功能可能额只是在前端做了校验,后端可能没做校验,如果有人通过抓包绕过前端校验之间发送给后端怎么办?
试想一下,如果用户名和密码都未在后端做校验,而有人绕过前端校验的话,那用户名和密码不久可以随便输了吗?如果是登录可能会通过sql注入手段来随意登录,甚至可以获取管理员权限,那这样不是很恐怖吗?
所以,接口测试的必要性就体现出来了:
- 可以发现很多在 页面发现不了的bug
- 检查系统的异常处理能力
- 检查系统的安全性,稳定性
- 前端随便变,接口测好了,后端不用变
get请求和post请求的区别
- get使用url或cookie传参,而post将数据存放在body中
- get的url会有长度上的限制,则post的数据则可以非常大
- post比get安全,因为数据在地址栏上不可见
- 一般get请求用来获取数据,post请求用来发送数据
常见状态码
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标识这个请求是否成功
- 2**:2开头的都表示这个请求发送成功,最常见的就是200,就代表这个请求是ok的,服务器也返回了
- 3**:3开头的代表重定向,最常见的就是302,把这个请求重定向到别的地方 了
- 4**:400代表客户端发送的请求有语法错误,401代表访问的页面没有授权,403标识没有权限访问这个页面,404代表没有这个页面
- 5**:代表服务器有异常,500代表服务器内部异常;503服务器当前不能处理客户端的请求,一段时间后可能恢复正常;504代表服务器端超时,没返回结果
cookie和session区别
在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不知道当前请求是哪个用户。cookie的出现就是为了解决这个问题,第一次登录后服务器返回一些数据(cookie)给浏览器,然后浏览器保存在本地。当用户发送第二次请求的时候,就会自动的把上次请求存储的cookie数据自动的携带给服务器。服务器 通过浏览器携带的数据就能判断当前用户是哪个。cookie存储的数据量有限,不同的浏览器有不同的存储大小,但一般不超过4kb。因此使用cookie只能存储一些小量的数据
session和cookie的作用优点类似,都是为了存储用户相关的信息。不同的是,cookie存储在本地浏览器,而session存储在服务器。存储在服务器的数据会更加的安全,不容易被窃取。但存储在服务器也有一定的弊端,就是会占用服务器的资源。
接口测试用例模板
- 项目测试针对哪个项目
- 模块哪个功能模块
- 用例id
- 接口名称
- 用例标题测试用例概况
- 请求方式 get/post
- 请求url地址
- 请求参数
- 前置条件执行当前请求依赖的条件,不满足就不能正确执行
- 结果验证预期结果
- 请求报文可以不写
- 返回报文一定要写,这里应该是你请求返回的真实结果
- 测试结果通过/失败
- 测试人员
接口测试注意事项
- 改变请求参数,看响应结果是否和接口文档一致
- 查看参数是否有敏感信息(比如个人账户信息,资金信息)
- 查看是否对关键参数进行加密处理(密码信息)
- 所有列表页接口必须考虑排序值
- 接口返回的图片地址能否打开,图片尺寸是否符合需求
- 接口有翻页时,页码与页数的异常值测试
- 当输出参数有联动性,需要校验返回两参数的实际结果是否都符合需求
- 每个接口入参的默认值,异常类型,非空校验
- 入参支持多个值时,要考虑传的值的个数多的情况下,接口会不会报错