restful api接口测试
REST和RESTFUL的区别:
1、RESTful是REST的形容词形式
2、RESTful API指的是REST风格的接口
3、一般来说,REST等于RESTful,区别一个是名词一个是形容词
REST API
定义:简单来说,REST是一种系统架构设计风格(既不是标准,也不是协议),一种分布式系统的应用层解决方案
目的:Client和Server端进一步解耦
核心思想是 资源
创建资源:HTTP POST
获取资源:HTTP GET
更新资源:HTTP PUT
删除资源:HTTP DELETE
REST特点总结
面向资源的接口设计
抽象操作为基础的CRUD (Creat,Retrieve,Updata,Delete)
REST支持的方法
post get put delete head 等
幂等性
是一个数学上的概念,在这里表示发一次或者多次请求引起的边界效应是一致的。(得到的结果是一样的,比如:get方法:同一个资源,第一次获取或者第二次第三次获取的结果是一样的;post不是幂等方法
安全性:
实现对数据的获取的方法,比如GET,HEAD,OPTION,因为她们只是实现对数据的获取,并不具有:“边界效应”
REST API接口规范
设计规范
协议:使用https,确保交互数据的传输安全
域名:应该尽量将api部署在专用域名之下。如:https://api.example.com 或者 https://example.com/api
版本控制:将版本号放在ULR或者Header中,如:https://koubei.example.com/api/v1
路径:对资源的包含,只能包含名词,不能包含动词 过滤信息:?limit=10 ?page=1 ?sortby=name
hypermedia API:在返回的结果中,提供相关资源的连接,连向其他API方法
验证(Authentication):去顶用户时其申明的身份,比如提供账号密码
授权(Authorization):保证用户有对请求资源特定操作的权限。比如用户的私人信息只能自己能访问,其他人无法看到;有些特殊的操作自能管理员可以操作,其他用户只有只读的权限等
返回结果设计:
通用错误码,具体产品由具体产品api文档给出
{
"msg":"错误信息"
"code":"错误状态码"
}
功能测试覆盖:
业务流程(现金支付,信用卡支付)
边界值,特殊字符(中文,日文)
参数类型(整数,浮点数,字符串),必选项,可选项
性能:
并发
吞吐量,TPS
测试覆盖:
敏感数据加密
恶意攻击
测试步骤:
了解接口测试---》编写测试用例---》用例评审---》开始测试(多轮)---》完成测试报告---》结束
Postman:
模拟各种HTTP请求
Collection功能(测试集合)
人性化的Response管理
内置测试脚本语言
设定变量与环境
常见状态响应码:
200 OK
201 成功请求,创建了新资源
301 永久重定向
302 临时重定向
400 客户端请求的语法错误 服务器无法理解
401 服务器需要对客户端进行身份验证
403 没有权限访问
404 页面未找到
500 服务器内部错误
503 服务器超载,暂时无法处理请求
504 网关超时,未及时从远端服务器获取请求
具体的REST API测试计划
需求:
GET:http://hocalhost:8080/MyWebsite/user
Header:Content-Type = application/json
Body:None
Response:返回所有User对象
Status:200
GET:http://hocalhost:8080/MyWebsite/user/{id}
Header:Content-Type = application/json
Body:None
Response:返回指定id的User对象
Status:200
POST:http://hocalhost:8080/MyWebsite/user/
Header:Content-Type = application/json
Body:name(String类型,不为空不可重复),age(int类型,在0-100之间),salary(double类型)
Response:新增User对象
Status:201
PUT:http://hocalhost:8080/MyWebsite/user/{id}
Header:Content-Type = application/json
Body:name(String类型,不为空不可重复),age(int类型,在0-100之间),salary(double类型)
Response:修改User对象
Status:200
DELETE:http://hocalhost:8080/MyWebsite/user/{id}
Header:Content-Type = application/json
Body:None
Response:删除指定id的User对象
Status:204
DELETE:http://hocalhost:8080/MyWebsite/user/
Header:Content-Type = application/json
Body:None
Response:删除所有User对象
Status:204
错误返回:
code:4 Message:找不到指定id对象
code:5 Message:对象已经存在
code:6 Message:参数不匹配
测试计划:(是否必须与为空与否的校验,边界值的校验,数据类型的校验)
GET:
正向用例:返回所有对象或者指定id对象
异常用例:输入id不存在/URL地址不正确
POST:
正向用例:输入正常参数,成功添加对象
异常用例:参数name为空/重复,age边界值校验,salary数据类型
PUT:
正向用例:输入正确参数,成功修改
异常用例:id不存在,name为空/重复,age边界值校验/空,salary数据类型校验/空
DELETE:
正向用例:删除所有/指定id
异常用例:id不存在,URL地址不正确
只是做个笔记,将来好找找。慢慢消化