2 接口测试
命令行工具有:curl httpie
图形端工具有:postman postwoman
网页工具有:swagger
表格 API 工具比较
YAPI | Apifox | Apipost | Postman | |
---|---|---|---|---|
API-Doc | ✔ | ✔ | ✔ | ✔ |
API-Debugging | ✔ | ✔ | ✔ | ✔ |
API-Testing | 自动化测试/服务端自动化测试 | 支持导出 Apifox CLI、Postman、Jmeter 格式数据做持续集成,支持调用 javascript、java、python、php、js、BeanShell、go、shell、ruby、lua 等语言代码 | 流程测试用例 | 简单测试与 CI 对接 |
性能测试 | ✖ | ✔ | ✖ | ✖ |
API-Mock | 基于 Mock.js / json-schema | Mock.js 规则内置零配置增强 | 基于 Mock.js | 限次付费的 Mock Server |
本机 Mock | ✖ | ✔ | ✖ | ✖ |
API 协议 | HTTP(s) | HTTP(s)、Socket(TCP)、gRPC[1] | HTTP(s)、WebSocket | HTTP(s)、SOAP、GraphQL、WebSocket |
导入 | YApiJSON、Postman、HAR、Swagger | OpenApi (Swagger)、Postman、HAR、RAML、RAP2、YApi、Eolinker、NEI、DOClever、 ApiPost 、Apizza 、ShowDoc、API Blueprint、I/O Docs、WADL、Google Discovery 同时支持 Swagger、apiDoc、Apifox、Knife4j 数据源自动定时同步 | Swagger、Postman、YApi、Eolinker、Apizza | OpenApi (Swagger)、GraphQL、cURL、RAML、WSDL、HAR、WADL |
导出 | YApiJSON、HTML、MarkDown | OpenApi (Swagger)、MarkDown、HTML | ✖ | ✖ |
权限 | 项目粒度 RBAC 控制 CRUD | 项目粒度 RBAC 控制 CRUD | 项目粒度 RBAC 控制 RW | RBAC 控制 CRUD[3] |
插件 | 基于 Java 栈的 IDE 插件 | 暂无 | 开发平台 | PostmanAPI |
桌面客户端 | ✖ | ✔ | ✔[2] | ✔ |
代码自动生成 | ✖ | Java (Spring)、PHP (Laravel)、Python (Flask)、NodeJS (Express) 等绝大多数主流框架业务代码和数据请求代码 | 仅生成数据请求代码 | Java (JAX-RS)、Python (Flask)、NodeJS (Express)、Go (Chi server) 和数据请求代码库 |
部署模式 | 私有(免费开源) | SaaS(免费) 私有(付费) | SaaS(免费版限 15 个读写工位) 私有(付费) | SaaS(免费版限 3 个成员) API 调用按次付费 |
技术栈 | NodeJS + MangoDB + React Redux | 非开源 | 非开源 | 非开源 |
文档友好度 | 一般 | 高 | 一般 | 丰富(英文) |
说明:
GraphSQL、Dubbo、gRPC、WebSocket 等协议支持尚未正式支持
桌面版不少功能是直接打开网页的模式,交互上更接近 Postman 相对友好度不太好
仅专业版企业版包含用户组权限控制
命令行工具
命令行工具:curl httpie
curl 示例:
$ curl -H 'Accept: application/json; indent=4' -u admin:password123 http://127.0.0.1:8000/users/
httpie 示例:
# 安装
$ python -m pip install --upgrade httpie
# 运行:get/post
$ http -a admin:password123 http://127.0.0.1:8000/users/
$ http -f POST $HOST/xxx/ hello=World
API 测试工具 1:Postman
简介
Postman 原本是一个 Chrome 浏览器的插件,现在已经提供了 Windows、MacOS 和 Linux 的独立安装版本。 Postman ,一个 HTTP API 测试工具。它是一个基于 Electron 开发的客户端软件,支持 OSX,Window 和 Linux。Postman 功能非常强大,支持 REST,SOAP 和 GraphQL 请求,可以实现自动化接口测试、接口监控、模拟接口数据、生成接口文档、多人协作等。
Web 接口的定义来决定测试内容
- Method:GET POST PUT DELETE HEAD ...
- URL: 接口的地址
- 请求参数:每个参数名字,参数的类型,参数的范围,参数是否可选,参数是否有默认值
- 等价类:有效等价的参数,无效等价的参数
- 边界值:离点,上点,内点
- 正交试验法:×因子 ×状态
- 有的时候,参数之间关联:省,市,县(区),尤其注意非法(无效)的关联
- 断言:检查响应的内容
- 正文:正文是否包含某些字符
- 正文:JSON 或者 XML 的键值对检查,数量检查 xx.length
- 响应的状态码:200, 403
- 响应的时间: 100ms, 200ms
- 认证:你是否有权限访问接口
- 接口的实质对象:数据~格式和内容
变量引用 : {{xxx}}
变量名称要全部大写,否则不能识别。
Pre-request Script :定义发送 request 之前需要运行的一些脚本,主要是设置全局变量和环境变量。
Tests : 定义发送 Request 之后,需要用脚本检测的内容,也就是 Test case 的内容。
示例
Tests 自动化测试加断言
语法 1:tests[description] = value
# 测试检测网页的响应时间是否小于 200ms
tests["Response time is less than 200ms"] = responseTime < 200;
# Test Results:测试响应结果
# 测试通过 pass
[pass] Response time is less than 200ms
# 测试失败
[FAIL] Response time is less than 200ms | AssertionError: expected false to be truthy
语法 2:assert(表达式)
# 检查响应串结果
assert(ResponseJson.data.userlist.order==1)
API 文档工具 1: Swagger
Swagger 官方文档: https://swagger.io/
其它 API 接口文档工具:Apizza 等等
swagger 文档生成: swagger-codegen
swagger 验证工具: swagger-cli
# 安装
npm install -g swagger-cli
# 验证
swagger-cli xx $HOST/
简介
Swagger 的优点 :
1、节省了大量手写接口文档的时间,这是最大的优势;
2、生成的接口文档可以直接在线测试,节省了使用 Postman 设置接口参数的过程,而且请求的参数,返回的参数一目了然;
3、接口按照模块已经分类展示,结构清晰;
Swagger 的缺点
- 需要在代码中写大量的注解,生成的接口文档越清晰,写的注解越多;
- 对于复杂功能,一个功能需要多个模块配合的情况下,联调测试将会是一件非常麻烦的事。Swagger 还不支持自定义接口文档,不能指明某一个功能需要使用哪些接口;
- 对于返回结果不能添加说明或者实现这个功能非常麻烦。虽然 Swagger 有 @ApiResponse 注解用来说明返回结果,但是这个使用并不方便,而且如果返回的并不是对象的时候(如 Map),就无法实现给每一个返回字段的说明;
- 无法测试错误的请求方式、参数等。如接口指定使用 POST 请求,则无法使用 swagger 测试 GET 请求的结果,也无法自定义 Header;
- 分布式开发环境中,一个项目往往有多个接口服务(比如电商项目有 app,pc,后台三个接口服务)。每一个接口服务都对应一个独立的 swagger 文档,不能实现统一整合。
示例
项目接入依赖 pom.xml
<!-- swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
API 文档工具 2:Yapi
官网: https://github.com/ymfe/yapi
中文文档: Yapi 中文文档
简介
旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API。
功能:
权限:Api 成熟的团队管理扁平化项目权限配置满足各类企业的需求。通过分组、项目进行数据隔离。
数据导入导出:可以从 postman(目前只支持 v1)、swagger、har(chrome 开发者工具捕获录制数据)、JSON(yapi 导出格式)里导入数据。支持数据导出。
可视化接口管理:基于 websocket 的多人协作接口编辑功能和类 postman 测试工具,让多人协作成倍提升开发效率。接口运行,只支持 chrome 浏览器,还需要安装相应的 chrome 插件。 [谷歌请求插件详细安装教程]
Mock Server: 易用的 Mock Server,再也不用担心 mock 数据的生成了。(说明:Mock 返回的响应数据只是符合数据格式约定的模拟数据,可用于前后端并行开发)
自动化测试:完善的接口自动化测试,保证数据的正确性。
插件机制:强大的插件机制,满足各类业务需求。
安装
依赖组件:npm nodejs mongodb
# 法 1:可视化部署
$ npm install -g yapi-cli --registry https://registry.npm.taobao.org
$ yapi server
# 页面安装
http://localhost:9090
# 服务启动
cd $YAPI_INSTALL_PATH
node vendors/server/app.js
# 法 2:命令行部署
# 默认账号密码为 admin@admin.com:ymfe.org,访问地址:
http://localhost:3000
本章参考
- Linux curl 命令详解 https://www.cnblogs.com/uhan/p/15480240.html
- Api 接口文档管理工具,你知道哪些呢? https://www.jianshu.com/p/e5ba5f8c369c
- Postman 使用教程之如何在不同接口之间传递参数数据
- Postman Interceptor 插件 - 通过 Postman 发送带 cookie 请求 https://huajiakeji.com/web-development/2017-08/785.html
- Postman 使用入门(二) - 环境变量 Environments https://blog.csdn.net/liyazhen2011/article/details/84942816
- postman 导出版本转化 https://ashiqf.com/tag/convert-postman-collection-from-v2-to-v1/
- 当 Swagger 遇上 YApi,瞬间高大上了! https://zhuanlan.zhihu.com/p/336619072
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论