Apifox调研

一、面临的开发和测试问题

前后端分离架构

  1. 产品、开发、测试三方会审需求
  2. 对需求评审后,前后端开发开会定接口
  3. 由开发制定接口文档(Swagger)
  4. 后端开发依据开发文档开发接口,一边开发一边调试(Postman)
  5. 前端开发需要Mock数据供调试调用
  6. 开发完成后,测试通过Postman,Jmeter去接口调试
  7. 项目或产品交付后还需要提供完整的接口文档

apifox1

目前我们的开发模式

  1. 产品、开发、测试三方会审需求
  2. 前后端开发直接开始开发
  3. 前端根据经验自己Mock数据调试
  4. 后端开发完成后与前端对接口调试(Swagger,Postman-个人账号无法进行团队协作,txt文稿等,微信等方式)
  5. 调试完成功能验收没问题后,交由测试自行测试(无任何接口文档交付)
  6. 项目或产品交付后还需另外开发接口文档

面临的问题和挑战

  1. 后端开发可能会阻塞前端开发进度
  2. 接口文档未经过任何评审,增加前后端调试难度
  3. 开发无Mock数据
  4. 测试无接口文档测试接口
  5. 项目或产品交付无任何接口文档交付
  6. 接口文档五花八门,各自为政,没有团队协作,效率比较低

二、Apifox,Postman和Swagger对比

  1. 功能定位
  • swagger 是一款 API 文档工具,比较常用的是它的开源工具 swagger ui,swagger editor。 swagger editor接口设计、生成代码,swagger ui生成接口文档,可以分享给他人,在线查看接口文档。
  • Apifox 定位: Apifox=Postman+Swagger+mock+Jmeter,是一款集 API设计,接口文档管理、代码生成、API 调试、API mock,API 自动化为一体的接口一站式协作平台。
    也就是说,它比 swagger 的的功能要更加广泛和齐全,不仅通过可视化界面设计接口生成接口文档和项目代码,还打通了接口数据的协作流程,一套接口数据,设计出来可以给前端、测试使用,减少了再不同系统间切换、导入导出数据、更新维护的麻烦。
    这正是解决了整个开发过程中最繁琐也最累人的一环!

apifox2

  1. 文档功能对比
  • Apifox的导入功能除了支持OpenApi之外,还支持yapi,RAP2,postman等国内用得比较多的接口文档导入,而Postman支持的格式相对较少。

apifox3

apifox4

  • swagger 支持导入符合open api 规范的接口数据文档。
  1. 接口设计功能对比
  • API管理的痛点
    API接口在设计时往往需要编写大量的文档,而且编写完成之后还会经常改动,文档编写维护工作量大。

    接口文档编写好后,实际的代码可能会与文档有出入,这个时候文档是不准确的,文档与代码保持修改同步也是一个很大的工作量。随着接口版本的迭代,接口文档需要同步更新。有些时候接口会成为对接双方的开发进度瓶颈,因为接口调用会有依赖,类似app的项目,前端会需要调用后端接口,接口功能不实现会影响前端开发进度。接口开发完以后,做接口测试不方便,特别是接口数量多,参数复杂的情况,测试工作量大。接口在版本迭代后,旧的接口常常需要做回归测试,这个工作量也是非常大的。

  • swagger的接口设计功能
    通过编写代码来生成 API 文档,需要记忆 swagger 的常用注解规则,右侧能实时预览生成的接口文档;

    生成的接口文档里能够看出层级结构,但在左侧的编辑区却没有明显的目录层次,因此一般只能支持简单的单个接口文档的编写,复杂的项目会变得容易出错和难以维护。

    或者是集成spring-swagger通过注解生成API 文档,需要开发完接口才可以生成接口文档;生成的接口文档也会经常变动,接口功能不实现会影响前端开发进度。

  • Apifox的接口设计功能
    使用 Apifox 来设计接口,完全是可视化界面,不需要学一套专门的注解方法,只需要专注设计业务接口的规则和内容就可以,
    直接填写请求方法,路径,请求参数和响应参数、保存完毕就能生成一份接口文档。

    apifox5

    它拥有项目/模块等不同层级的目录结构来存储接口文档,适合项目层级的接口文档编写开发。单个接口的设计就是填写参数,然后保存。 多个接口可以保存到一个文件夹下,不同的模块归类到不同的文件层级中。

    apifox6

    Postman并不完全符合我们对API的各种需求,比如维护API文档、API Mock、API自动化测试等等

  1. 生成代码对比
    Postman支持将接口生成代码,postman支持的接口和框架为4种,Apifox支持130多种语言和框架

apifox7

apifox8

  1. 数据模型功能对比
    在postman中没有这个功能,在Apifox中,由于本身具备接口设计的功能,因此会将实体类的相关参数封装成一个数据模型,供不同的接口调用,提高数据复用的效率,提高接口封装的程度,减少重复的工作。

    apifox9

  2. 接口调试功能对比

    apifox10

    Postman基本依赖于JS脚本,通过编写脚本对接口进行调试。 Apifox则是可视化调试界面为主,自定义脚本编辑为辅。
    两者对比,在postman中需要写脚本才能实现的接口断言和提取变量、等待时间,在这里都能直接通过填写参数来完成、不需要写脚本。
    而操作数据库这个功能postman则不支持。postman只支持js脚本,Apifox目前支持调用其他语言的外部函数和脚本,不过需要先安装相关的Python、java等环境。

    apifox11

  3. 接口Mock功能对比

    apifox12

  4. 接口测试功能

    在Postman里写测试脚本,使用动态参数,接口响应断言,参数传递都通过写脚本来实现。

    如果要作业务接口测试,需要写各种场景下的用例,同样是通过写脚本来修改参数用例的执行顺序和设置循环次数的。使用postman至少需要掌握基础的js语言。

    Apifox里面做自动化测试可视化程度相对较高一些,创建用例的时候可以在接口设计面板修改参数然后保存,场景用例可以添加不同的参数用例作为步骤,通过拖曳来选择用例的执行顺序。

    右侧的面板可以填写循环次数,接口间的参数传递和断言也可以在可视化面板提取出来。完成单个接口测试或者场景测试,都不需要写代码。

    apifox13

    apifox14

  5. 团队协助功能

apifox15

Apifox的协同功能是免费的,团队成员的权限管理,接口数据同步、在线分享都没有障碍。

本身Apifox的定位和Postman就不一样,它一出生就是定位在API管理和协作上。 所以除了协作功能必须的权限管理和数据同步上,它也最大程度地做数据复用,尽量减少不必要的工作量。

比如说接口调试的参数用例可以直接导入来做自动化测试,一个数据模型可以给多个接口使用,一套接口数据可以给后端做调试、前端做mock、测试做自动化。

apifox16

三、Apifox 功能

1. 接口设计:Apifox 接口文档遵循 OpenApi 3.0 (原 Swagger)、JSON Schema 规范的同时,提供了非常好用的可视化文档管理功能,零学习成本,非常高效。并且支持在线分享接口文档。
2. 数据模型:可复用的数据结构,定义接口返回数据结构及请求参数数据结构(仅 JSON 和 XML 模式)时可直接引用。支持模型直接嵌套引用,直接 JSON/XML 智能导入,支持 oneOf、allOf 等高级组合模式。
3. 接口调试:Postman 有的功能,比如环境变量、前置/后置脚本、Cookie/Session 全局共享 等功能,Apifox 都有,并且比 Postman 更高效好用。接口运行完之后点击保存为用例按钮,即可生成接口用例,后续可直接运行接口用例,无需再输入参数,非常方便。自定义脚本 100% 兼容 Postman 语法,并且支持运行 javascript、java、python、php、js、BeanShell、go、shell、ruby、lua 等各种语言代码。
4. 接口用例:通常一个接口会有多种情况用例,比如参数正确用例、参数错误用例、数据为空用例、不同数据状态用例等等。运行接口用例时会自动校验数据正确性,用接口用例来调试接口非常高效。
5. 接口数据 Mock:内置 Mock.js 规则引擎,非常方便 mock 出各种数据,并且可以在定义数据结构的同时写好 mock 规则。支持添加“期望”,根据请求参数返回不同 mock 数据。最重要的是 Apifox 零配置 即可 Mock 出非常人性化的数据,具体在本文后面介绍。
6. 数据库操作:支持读取数据库数据,作为接口请求参数使用。支持读取数据库数据,用来校验(断言)接口请求是否成功。
7. 接口自动化测试:提供接口集合测试,可以通过选择接口(或接口用例)快速创建测试集。目前接口自动化测试更多功能还在开发中,敬请期待!目标是: JMeter 有的功能基本都会有,并且要更好用。
8. 快捷调试:类似 Postman 的接口调试方式,主要用途为临时调试一些无需文档化的接口,无需提前定义接口即可快速调试。
9. 代码生成:根据接口及数据数据模型定义,系统自动生成接口请求代码、前端业务代码及后端业务代码。
10. 团队协作:Apifox 天生就是为团队协作而生的,接口云端实时同步更新,成熟的团队/项目/成员权限管理,满足各类企业的需求。

四、Apifox 做的不仅仅是数据打通

如果你认为 Apifox 只做了数据打通,来提升研发团队的效率,那就错了。Apifox 还做了非常多的创新,来提升开发人员的效率。

  1. 接口支持“用例管理”
    通常一个接口会有多种情况用例,比如 正确用例 参数错误用例 数据为空用例 不同数据状态用例。定义接口的时候定义好这些不同状态的用例,接口调试的时候直接运行,非常高效。

  2. “数据模型”定义、引用
    可以独立定义数据模型,接口定义时可以直接引用数据模型,数据模型之间也可以相互引用。同样的数据结构,只需要定义一次即可多处使用;修改的时候只需要修改一处,多处实时更新,避免不一致。

  3. 调试时“自动校验”数据结构
    使用 Apifox 调试接口的时候,系统会根据接口文档里的定义,自动校验返回的数据结构是否正确,无需通过肉眼识别,也无需手动写断言脚本检测,非常高效!

    apifox17

  4. “可视化”设置断言
    设置断言:

    apifox18

    运行后,查看断言结果:

    apifox19

  5. 可视化”设置提取变量

    apifox20

  6. 支持数据库操作

    apifox21

  7. 零配置”Mock 出非常人性化的数据

    apifox22

    Apifox 如何做到高效率、零配置生成非常人性化的 mock 数据

    • Apifox 根据接口定义里的数据结构、数据类型,自动生成 mock 规则。
    • Apifox 内置智能 mock 规则库,根据字段名、字段数据类型,智能优化自动生成的 mock 规则。如:名称包含字符串image的string类型字段,自动 mock 出一个图片地址 URL;包含字符串time的string类型字段,自动 mock 出一个时间字符串;包含字符串city的string类型字段,自动 mock 出一个城市名。
    • Apifox 根据内置规则,可自动识别出图片、头像、用户名、手机号、网址、日期、时间、时间戳、邮箱、省份、城市、地址、IP 等字段,从而 Mock 出非常人性化的数据。
    • 除了内置 mock 规则,用户还可以自定义规则库,满足各种个性化需求。支持使用 正则表达式、通配符 来匹配字段名自定义 mock 规则。
  8. 生成在线接口文档
    Apifox 项目可“在线分享” API 文档,分享出去的 API 文档可设置为公开或需要密码访问,非常方便与外部团队协作。

    体验地址:
    https://www.apifox.cn/apidoc/shared-4f60c81e-6650-464e-8a80-ab8bde2f982b/doc-1941153

  9. 快速上手
    https://www.apifox.cn/help/app/getting-started/#%E4%BD%BF%E7%94%A8%E5%9C%BA%E6%99%AF

五、优缺点

优点:

  • 免费
  • 减少接口沟通成本,提高前后端调试效率
  • 方便后期维护文档
  • 使用好自动化测试功能,提升回归测试效率
  • 提升协调开发效率
  • 自动生成mock数据
  • 图形化的自动化测试

缺点:

  • 缺少api的版本管理,权限粒度不够低
  • 后端额外需要工时写接口文档,前后端需要共同评审文档
  • Apifox学习成本,大约需要一天。熟悉Postman的半天可能就够了
  • 旧项目的接口需要花时间重新导入到Apifox 支持swagger的可以直接导入
  • 团队共同维护文档需要一定的规范

参考文档

https://zhuanlan.zhihu.com/p/488760544
https://blog.csdn.net/LiamHong_/article/details/125298387
https://www.bbsmax.com/A/GBJrxMYBd0/
https://blog.51cto.com/u_13260163/5255858
https://zhuanlan.zhihu.com/p/533742636
https://baijiahao.baidu.com/s?id=1736506973738419949&wfr=spider&for=pc

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值