返回介绍

2 接口测试

发布于 2024-09-08 18:39:39 字数 8689 浏览 0 评论 0 收藏 0

命令行工具有:curl httpie

图形端工具有:postman postwoman

网页工具有:swagger

表格 API 工具比较

 YAPIApifoxApipostPostman
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-schemaMock.js 规则内置零配置增强基于 Mock.js限次付费的 Mock Server
本机 Mock
API 协议HTTP(s)HTTP(s)、Socket(TCP)、gRPC[1]HTTP(s)、WebSocketHTTP(s)、SOAP、GraphQL、WebSocket
导入YApiJSON、Postman、HAR、SwaggerOpenApi (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、ApizzaOpenApi (Swagger)、GraphQL、cURL、RAML、WSDL、HAR、WADL
导出YApiJSON、HTML、MarkDownOpenApi (Swagger)、MarkDown、HTML
权限项目粒度 RBAC 控制 CRUD项目粒度 RBAC 控制 CRUD项目粒度 RBAC 控制 RWRBAC 控制 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非开源非开源非开源
文档友好度一般一般丰富(英文)

说明:

  1. GraphSQL、Dubbo、gRPC、WebSocket 等协议支持尚未正式支持

  2. 桌面版不少功能是直接打开网页的模式,交互上更接近 Postman 相对友好度不太好

  3. 仅专业版企业版包含用户组权限控制

命令行工具

命令行工具: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 请求,可以实现自动化接口测试、接口监控、模拟接口数据、生成接口文档、多人协作等。

image-20210928155250490

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 的缺点

  1. 需要在代码中写大量的注解,生成的接口文档越清晰,写的注解越多;
  2. 对于复杂功能,一个功能需要多个模块配合的情况下,联调测试将会是一件非常麻烦的事。Swagger 还不支持自定义接口文档,不能指明某一个功能需要使用哪些接口;
  3. 对于返回结果不能添加说明或者实现这个功能非常麻烦。虽然 Swagger 有 @ApiResponse 注解用来说明返回结果,但是这个使用并不方便,而且如果返回的并不是对象的时候(如 Map),就无法实现给每一个返回字段的说明;
  4. 无法测试错误的请求方式、参数等。如接口指定使用 POST 请求,则无法使用 swagger 测试 GET 请求的结果,也无法自定义 Header;
  5. 分布式开发环境中,一个项目往往有多个接口服务(比如电商项目有 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

本章参考

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文