Restful API

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地址不正确
只是做个笔记,将来好找找。慢慢消化

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容