REST API接口测试
背景介绍
为什么要做借口测试?
很多系统关联都是基于接口来实现的,接口测试可以将复杂的系统关联进行简化.
接口功能比较单一,能够比较好的进行测试覆盖,也相对容易实现自动化持续集成.
接口相当于界面功能,会更底层一些,测试覆盖会更容易.
软件开发生命周期?
接口测试在单口测试后,UI测试之后
接口测试可以获得较高的投资回报(接口测试比单元测试的粒度要粗一些)
什么是接口测试? (什么是接口: 电梯、开车刹车、搜索引擎,不用关注内部,只关注外部应用)
接口测试又称为API测试 Application Programming Interface
接口测试是测试系统组件间接口的一种测试. 重点关注数据传递.
接口测试一般会用于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试.
Web Service
一种跨编程语言和跨操作系统平台的远程调用技术
最重要的两种实现方式: SOAP(只支持xml格式,但拥有良好的安全性.银行项目,可以考虑使用SOAP协议) & REST(http: json或其他格式,是一种设计规范)
Web2.0时代,REST方法的广泛普及.
SOAP & REST
SOAP - Simple Object Access Protocol
交换数据一种协议规范,是一种轻量的、简单的、基于XML的协议.
REST - Representational State Transfer
一种软件架构风格,可以降低开发的复杂性,提高系统的可伸缩性.
两者的区别:
安全性: SOAP会好于REST
效率和易用性: REST更胜一筹
成熟度: 总的来说SOAP(存在时间比较长)在成熟度上由于REST
REST or RESTFUL 区别:
RESTful是REST的形容词形式
RESTful API指的是REST风格的接口
一般来说REST等于RESTful,区别一个是名词一个是形容词
REST API (基于http的)
出现: REST最早是由Roy Fielding博士发表的论文中提到的
定义: 简单来说REST是一种系统架构设计风格(而非标准),一种分布式系统的应用层解决方案
目的: Client和Server端进一步解耦
应用: 最为经典的莫过于github API
核心思想是资源
资源:
创建资源 - HTTP POST (Create) 相当于数据库的CRUD
获取资源 - HTTP GET (Retrieve)
更新资源 - HTTP PUT (Update)
删除资源 - HTTP DELETE (Delete)
REST特点总结:
面向资源的接口设计
抽象操作为基础的CRUD
Http是应用协议而非传输协议
REST支持的方法:
Verd 描述
HEAD(SELECT) 只获取某个资源的头部信息
GET(SELECT) 获取资源
POST(CREATE) 创建资源
PATCH(UPDATE) 更新资源的部分属性(很少用,一般用POST代替)
PUT(UPDATE) 更新资源,客户端需要提供新建资源的所有属性
DELETE(DELETE) 删除资源
补充一些概念:
幂等性(Idempotent):
是一个数学上的概念,在这里表示发送一次或多次请求引起的边界效应是一致的.Post是不幂等方法
安全性:
GET、HEAD和OPTIONS均被认为是安全的方法,因为它们旨在实现对数据的获取,并不具有“边界效应(Side Effect)”
设计规范:
协议: 使用HTTPs协议,确保交互数据的传输安全.
域名: 应该尽量将API部署在专用域名之下.
https://api.example.com
版本控制: 将版本号放在URL或者Header中
路径: 只能包含路径,不能包括动词
过滤信息: ?limit=10 ?offset=10 ?page=1 ?sortby=name
Hypermedia API: 在返回结果中提供相关资源的链接,连向其他API方法
验证(Authentication): 确定用户是其申明的身份,比如提供账户的密码.
常见的HTTP status code状态码:
200(OK) - 如果现在资源已被更改
201(created) - 如果新资源被创建
202(accepted) - 已接受处理请求但尚未完成(异步处理)
301(Moved Permanently) - 资源的URL被更新
303(See Other) - 其他(如,均衡负载)
400(bad request) - 指代坏请求
406(no acceptable) - 服务端不支持所需表示
409(conflict) - 通用冲突
412(Precondition Failed) - 前置条件失败(如执行条件更新时的冲突)
415(unsupported media type) - 接受到的表示不受支持
500(internal server error) - 通用错误响应
503(Service Unavailable) - 服务当前无法处理请求
返回结果设计:
通用错误码, 具体产品由具体产品api文档给出
{
"msg":"uri_not_found",
"code":1001,
"request":"GET Vv2VphotoV132"
}
REST API接口实例
GET /producet: 列出所有产品
POST /product: 新建一个商品
GET /product/ID: 获取某个指定商品的信息
PUT /product/ID: 更新某个指定商品的信息
DELETE /product/ID: 删除某个商品
GET /product/ID/purchase: 列出某个指定商品的所有投资者
GET /product/ID/purchase/ID: 获取某个指定商品的指定投资者信息
手动测试
测试方法:
借助工具来完成
拼接参数执行请求
自动化测试
测试方法:
编写自动化脚本实现
一劳永逸,加入回归测试集合(每天可以定期启动)
需要一定编码经验
常见的测试工具:
Postman
JMeter 性能测试,压力测试工具,也可以做RestAPI的测试
RestClient 等等
功能测试:
测试覆盖:
业务流程。支付功能
边界值,特殊字符(0-255),特殊字符的验证(中日文,双字符)
参数类型,必选项,可选项等
性能测试:
测试覆盖:
并发数: 同一时间,同时发给用户的数量, 比如说:可以支持50个并发,100个并发,我们可以采用逐步加压的方式,找到系统支持的最大并发量
吞吐量,tps(性能指标)
错误率等
安全型测试
测试覆盖:
敏感数据加密
恶意攻击
REST API的测试步骤
了解接口格式
编写测试用例
测试用例评审(测试团队和开发团队一块评审)
开始测试
完成测试报告(中间要经过多次的迭代)
结束
Postman介绍
Postman是Google开发的一款功能强大的网页调试与发送网页HTTP请求,并能运行测试用例的Chrome插件.
主要功能包括:
模拟各种HTTP requests
Collection功能(测试集合)
人性化的Response整理
内置测试脚本语言
设定变量与环境
HTTP Header:
Accept: 指定客户端能够接收的内容类型
Accpet-Charset: 浏览器可以接受的字符编码集
Authorization: HTTP授权的授权证书
Content-Type: 请求的与实体对应的MIME信息
Referer: 先前网页的地址,当前请求网页紧随其后,指来路(引流)
contect-type:
application/x-www-form-urlencoded: 请求默认方式,数据是简单、平面的key-value键值对
application/json: 数据是复杂的嵌套关系,有多层数据
multipart/form-data: 既可以发送文本数据也支持二进制数据上载
REST API接口测试的更多相关文章
- 初步探究Android App API接口测试--实战
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- HTTP API接口测试利器PostMan介绍
一.什么是API接口测试? API接口有多种,个人将其划分为三类.第一种是函数级别的,测试需要对接口的各个参数进行测试,如:Int getResult(String key, String ID, I ...
- api接口测试工具和接口文档管理工具
api接口测试工具和接口文档管理工具 1.postman(https://www.getpostman.com) Postman 是一个很强大的 API调试.Http请求的工具.她可是允许用户发送任何 ...
- 实战Rest API接口测试
一.Android App API接口测试 1.如何学好Android App API接口测试 postman可以用来实现API接口自动化测试,但是也有弊端,无法实现接口测试数据的参数化,为了达到接口 ...
- python+requests+unittest API接口测试
黑熊再网上查找了下接口测试相关的资料,大都重点是以数据驱动的形式,见用例维护在文本或表格中,而没有说明怎么样去生成想要的用例, 问题: 测试接口时,比如参数a,b,c,我要先测a参数,有(不传,为空, ...
- 使用JMeter3.0实战之分布式并发测试以及web API接口测试
简介: 该文档是以Apche JMeter-3.0为例进行编写的,通过网上的学习资料和官方文档的说明手册学习后,进行项目操作实践,将测试的过程记录下提供给大家学习. 本博文的内容主要是进行配置JMet ...
- Web Api 接口测试工具:WebApiTestClient
前言:这两天在整WebApi的服务,由于调用方是Android客户端,Android开发人员也不懂C#语法,API里面的接口也不能直接给他们看,没办法,只有整个详细一点的文档呗.由于接口个数有点多,每 ...
- 第三方API接口测试问题反馈文档
大家在给甲方做大型项目的时候,有时候参与的厂商比较多,而公司负责的部分又需要第三方厂商提供接口支持. 例如我们做医疗行业的,给医院提供医保控费系统服务的,就需要HIS厂商提供接口给我们采集数据.有时候 ...
- Python+API接口测试框架设计(pytest)
1.测试框架简介 整个接口测试框架的设计图如下: base:存放的是请求方法二次封装 common:存放的是自定义工具,操作excel,yaml文件等 data:存放的是公共动态数据,如data.xl ...
随机推荐
- Thymeleaf常用语法:数据迭代
Thymeleaf数据迭代使用th:each属性,可以迭代数组.List.Set和Map等,数组.List.Set的迭代方法类似,迭代Map则会得到一个java.util.Map.Entry对象.在迭 ...
- 读书笔记_python网络编程3(6)
6.TLS/SSL 6.0. 传输层安全协议(TLS, Transport Layer Security)是如今web上应用最广泛的加密方法了,1999年成为互联网标准.前身是安全套接层(SSL, S ...
- php number_format金钱 价格 格式处理 由分单位转换成元(保留2为小数)
/** * priceFormat * 价格格式处理 * * @access public * @param null * @since 1.0 * @return object */ if(!fun ...
- pip 查看软件包 可用版本并安装; pip 查看 numpy 可用版本并安装
最近需要安装 numpy 的旧版本,发现不知道如何查看可以安装旧版本,解决方法在此进行记录: 然后找到你对应的版本进行安装就可以了: 保持更新,更多精彩内容,请关注 cnblogs.com/xuyao ...
- 手机号码生成器app有吗,怎么使用的呢?
手机号码生成器app是有的,他有手机号码生成器安卓版,也有手机号码生成器苹果版的.很多人会误解他的功能以为是拿来生成号码来接验证码的,其实他不是拿来接短信的.它是用来给别人做营销找客沪的找客源的,接不 ...
- 005 C/C++ 数据类型_void
1.void的字面意思是'无类型'.void * 是无类型指针,void * 可以指向任何类型的数据. 2.数据类型的分装: int InitHardEnv(void ** handle); 典型的内 ...
- SQL注入神器———Sqlmap!
Sqlmap 开源,python编写 支持5种SQL注入检测技术: 1.基于布尔的注入检测 2.基于时间的注入检测 3.基于错误的注入检测 4.基于UNION联合查询的检测 5.基于堆叠查询的检测 支 ...
- 201871010113-刘兴瑞《面向对象程序设计(java)》第十五周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- MVC、MTV、FBV、CBV、母版和继承:
cookie session cookie的定义: 保存在浏览器上的一组组键值对 (请求头) 为什么要有? http协议是无状态,每次的请求之间是相互独立的,没有办法保存状态. Django中操作co ...
- jenkins下载插件无插件显示+离线下载插件方法
1.打开Jenkins插件管理,可选插件为空,无法选择自己需要的插件进行下载 打开插件管理的“高级”选项,在升级站点填写 http://mirror.xmission.com/jenkins/upda ...