新冠疫情肆虐,eolink 结合自身长期的远程研发协作经验,为企业推出 API 管理远程协作指南,以下方案不仅在 Eolinker 内部,也在众多客户中得到验证,希望能够帮助您快速了解如何将 API 管理与自动化测试运用在实际的远程办公中。

01. API管理的发展过程、痛点及解决方案

在过去,许多研发团队并不注重研发过程中的 API 管理,认为API管理无非是管理一下API文档,只需要用word文档或者wiki把API描述写一下,等到需要进行团队协作的时候再把API文档通过文件或者wiki的方式发给前端和测试人员即可。这时候的API管理方式粗放,我们把它称之为1.0时代。

但随着敏捷观念的不断普及,大家开始发现传统的API管理只侧重管理API文档是不行的,存在以下明显的问题:

API文档编写不规范:缺乏统一文档格式,简写、漏写或不写详细说明(开发人员总觉得自己看得懂即可)。

储存平台不统一:公司内部每个项目团队都有自己的使用习惯,甚至一个项目内部可以同时存在多个API管理工具,平台不统一导致无法高效维护和协作。

文档更新不及时:开发团队习惯于先开发后补文档,认为文档对于开发工作而已是一个附加的内容,导致更新不及时。

变更历史不记录:由于没有及时维护文档,当需要回头检查项目或进行工作交接时就会发现看文档不如看代码,反而拖慢工作进度。

测试人员无法快速编写测试用例:由于传统API文档仅仅是个文档,测试人员还需要使用其他工具编写测试用例。

并没有降低沟通成本:由于上述原因,前端、后端、测试、运维等成员经常由于不清晰的文档而引发争论,有时候反而增加了沟通成本。

为了解决上述问题而出现2.0时代的工具,开始思考如何将开发与测试结合,比如通过代码注解生成API文档来减少后端开发编写文档的负担、可以基于API文档直接进行测试等。这个时代最突出的产品是Swagger、Postman、Jmeter、SoupUI等产品。

随着研发测试一体化的观念推广,这些产品逐渐成为目前主流API管理与测试工具,有着庞大的用户群体。

但是上述产品出现时并未流行远程协作,因此其产品设计基本是基于本地开发和个人使用,因此当遇到越来越高的迭代速度和质量要求时便显得力不从心,从而出现以下问题:

前端开发进度受制于后端:单纯API文档缺乏Mock API,前端需要等待后端开发完成才能拿到测试数据,自己构造测试数据费时费力。

文档变更不通知:后端开发改了代码和接口习惯于口头沟通,而不是通过文档明确地指出修改的内容,导致后期沟通成本高昂。

接口测试不方便且工作重复:需要看着接口文档再另外使用工具进行测试,如果接口发生了变化,写好的测试也作废了,增加了重复工作量。

工作成果无法分享:每个测试人员都用单机测试工具编写测试脚本,但却没法共享和协作。

测试工作不自动化:一直希望促进自动化测试,但是没有真正运作起来,每天“点点点”依然消耗大量测试团队的精力。

测试效果无法量化:无法准确了解测试效果,没人可以说清今天、昨天、上周、这个月的测试情况如何,和之前比有何改进。

测试工作被动:测试总是排在最后进行,无法参与项目讨论,无法进行快速大范围回归测试,甚至无法按时完成测试任务,导致项目延期或带着忐忑上线。

并且这些产品并未解决 API 研发协作过程中的核心问题:如何将开发、测试、运维、团队协作四者结合,成为一个适用于团队的、灵活的、统一的API管理平台。并且能够为后续API监控、运维提供直接的支持。

我们将实现了开发、测试、运维、协作等四大要素的工具,作为3.0时代的产品的标志。而 Eolinker 自2017年成立以来,一直致力于构建 API 全生命周期管理解决方案,目前是国内最大的在线 API 研发管理平台,旗下的线上SaaS产品以及离线私有化产品包括:

API 生成平台(API Factory)

API 研发管理与自动化测试平台(API Studio)

API 监控平台(API Monitoring)

API 微服务网关平台(API Gateway)

API 开放平台(API Open Platform),即将发布

02. eolink API Studio的理论基础:文档与测试驱动

相信大家早已听说过以下开发模式:文档驱动开发(DDD)以及测试驱动开发(TDD)

文档驱动开发指的是在开发之前先把文档写好,明确功能需求、入参出参定义、异常情况处理等之后再进行开发。这就好比我们在做题之前需要先了解清楚题目要求,否则不审题就下笔很容易导致最后返工。

而测试驱动开发指的是在开发之前先把测试方案/用例写好,只开发能够顺利通过测试的功能,如果测试不通过则持续进行改进。这就好比我们考试前会先了解考试通过的标准,没有标准乱答一通肯定没有好结果。

以上两种开发方式进行结合后就是 Eolinker API Studio 的设计理念:文档与测试驱动开发(DTDD)。简单地说就是:

1. 用标准文档代替口头约定和笔记文档,让开发、测试、运维、协作有迹可循;

2. 快速用测试结果推动进度,让团队沟通更充分、管理有依据,实现敏捷开发;

因此,在 Eolinker API Studio 中,几乎所有的协作工作都是围绕着 API 文档进行的,当你创建了 API 文档之后,你可以随时查看 API 的改动情况、根据 API 文档发起 API 测试、编写 API 测试用例、创建 Mock API、进行 API 自动化测试等。

因此我们非常建议您尝试这种方式进行工作。

03. 初识API Studio

创建第一个 API 管理项目

在 Eolinker API Studio 中,所有的 API 都是以项目的方式进行妥善管理,因此我们首先需要创建一个 API 管理项目。同时我们也提供了一键导入功能,可以快速将Swagger、Postman、RAP、YAPI等产品内的数据快速迁移到 Eolinker 中。

创建 API 文档

在 API Studio 中,您可以通过三种方式来创建API文档:

手动创建API文档:APIStudio提供了非常全面的API文档格式,能够详细记录您的API信息。这种方式适合所有用户,并且也是我们推荐的方式。

关联项目与Swagger URL,API Studio自动从该地址获取最新API文档:这种方式适合之前已经在使用Swagger,并且倾向于将文档写在代码注解中的用户。但这种方式会带来代码入侵的问题,让代码中加入了许多无关的信息从而增加维护成本。

关联项目与代码仓库:API Studio自动从代码仓库中扫描代码注解生成API文档。目前这种方式支持Java以及PHP两种语言。这种方式也会带来代码入侵的问题。

当我们创建好 API 文档之后,可以在 API Studio 中看到清晰的 API 文档信息,并且可以在此基础上进行测试API、编写API测试用例、编写Mock API、管理API版本等等的操作。

一键发起 API 测试

当我们创建好 API 文档之后,可以立刻对该 API 进行测试,API Studio 提供了以下主要特性来帮助测试人员快速发起 API 测试:

1. 支持本地测试、局域网测试、在线测试等;

2. 支持一键切换测试环境,使用全局变量、增加额外请求参数、改变请求地址等;

3. 支持直界面编辑JSON、XML请求数据,不需要手写JSON、XML等数据结构;

4. 支持将测试数据保存为测试用例,以后可以直接使用测试用例进行测试;

5. 支持批量测试 API,比如测试登录接口的多种情况并且返回实时测试数据;

6. 支持在测试过程中编写代码进行签名、加解密、生成随机数据等操作;

下图:在测试界面可以直接编写JSON数据。

下图:一秒切换测试环境并且发起测试。

批量测试多个 API 用例,解放测试劳动力

在以往协作方式中,测试人员工作总是排在最后进行,无法参与项目讨论,无法进行快速大范围回归测试,甚至无法按时完成测试任务,导致项目延期或带着忐忑上线。

而在 API Studio 中:

1、由于协作是基于 API 文档进行的,当后端开发人员将 API 文档写好之后,测试人员就可以马上介入,在 API 文档的基础上编写测试用例,让测试工作前移;

2、当 API 开发完成之后,测试人员可以一键将 API 的测试用例全部测完,并且得到详细的测试报告。后端开发只需要看到测试结果就能够知道自己的 API 是否满足测试需求,如果有异常则可针对性改进;

3、API 发生改变后,测试人员只需一键即可进行 API 回归测试,真正解放劳动力;

通过上述方式,后端和测试人员可以进行更紧密地沟通,让测试驱动开发完成。

下图:批量测试 API 的多种数据情况,并且获得详细测试报告,可以在报告中查看API异常原因。

构建 Mock API,让前端摆脱后端束缚

在瀑布流开发模式中,如果前端开发人员需要进行页面对接,需要后端先完成 API 的开发工作,因此前后端开发的进度会互相影响。

通过 Mock API,您可以事先编写好 API 的数据生成规则,由 API Studio 动态生成 API 的返回数据。开发人员通过访问 Mock API 来获得页面所需要的数据,完成对接工作。

Mock API 支持根据不同的请求参数返回不同的 HTTP Status Code、Header、Body等数据。你可以在一个 API 文档里创建多个Mock API ,模拟前端发起的各种请求,方便对前端逻辑进行校验。

当项目正式发布时,只需将 Mock API 的地址前缀替换为实际的访问地址即可。

比如:同一个项目中的Mock API的地址前缀是相同的(如 mock.eolinker. com/uasyd1/…),因此可以在代码中将MockAPI的地址前缀作为全局变量,项目上线时仅需替换变量的值即可改变整个项目的 API 请求地址前缀。

下图:该API创建了多个Mock API,前端可以传递不同的请求参数获取相应的返回结果,比如用户名为 jack liu时返回登录成功,用户名为 percy时返回登录失败或随机字符串。

API文档发生变更时自动通知相关成员

许多用户在维护 API 时,经常遇到 API 文档变更了,但是前端和测试人员却不知道的问题。为了解决这个痛点,API Studio 提供了变更通知功能,当 API 发生变化时通过邮件和站内信自动通知相关成员,并且显示变更的内容。

并且在 API Studio 中,我们将 API 的状态划分为以下阶段,方便成员在查看 API 文档时了解 API 当前所处的状态。

远程协作时,直接对 API 文档进行评论标注

当您进行远程协作时,可以直接在 API 文档上发布评论,所有的沟通内容都会跟随 API 文档保留下来并且按照版本分类好,而不是零散地存在各种聊天工具中。这样避免后期沟通时找不到依据而浪费时间。

下图:在 API 文档中直接发表评论,并且@了项目中的另一位成员查看。

查看、回滚、对比API编辑历史

API Studio中还提供了非常强大的 API 版本管理功能,您可以随时回滚到任意一次 API 文档版本,并且还可以对比两个版本之间的差异。

当无法用语言沟通更新了什么时,不妨试试版本对比~

如下:当前版本相比历史版本,删减了某些参数,会在界面中以红色标出。

除此之外,还有…

API Studio的功能还远不止如此,您可以在项目中进行严格的人员权限管理、API状态码管理、项目文档管理、测试环境管理等等,一切都是为了让团队协作能够更加轻松高效图片

04. 进阶!通过API Studio打造API自动化测试平台

快速了解市面上领先的 API 自动化测试

在 API Studio 中还提供了目前市面上领先的 API 自动化测试功能:

零代码自动化测试:不需要写任何代码即可进行 API 自动化测试;

代码模式自动化测试:编写少量 Javascript 代码即可进行复杂流程的自动化测试;

支持操作数据库:测试过程中支持操作数据库,执行数据插入、删除、编辑等操作;

数据驱动测试:一个测试用例支持测试多组数据,分别生成测试报告;

自动生成测试报告:每次测试都可以生成详细测试报告,支持在线查看和离线下载;

支持定时测试任务:设置定时器自动执行测试任务,将报告发送给指定人员邮箱;

支持 Open API 触发测试:可以通过 API 对接 Jenkins,随时进行API 自动化测试;

极低学习门槛:15分钟培训即可快速上手进行 API 自动化测试;

可以帮助您快速解决以下常见问题:

需求发布前需要对项目进行回归测试,传统测试方式的覆盖面窄、效率低下。可以用自动化测试提高测试范围以及效率;

产品需求变动/代码改动后,测试人员无法确定测试范围。可以用自动化测试进行大范围回归测试保证基本业务正常;

传统测试方式周期长,无法每天、每小时、24小时随时执行测试,并且依赖于人的专业性,测试效果不可靠。用 API 自动化测试的定时测试任务或者将 API Studio 集成到 Jenkins 上,实现代码提交即触发测试并实时得到测试报告。

传统测试团队成员之间缺乏协作,互相不清楚各自编写的测试用例、测试脚本、测试结果等,导致重复劳动。用 API Studio 即实现测试团队的在线协作。

测试团队使用 API Studio 日常维护 API 自动化测试用例后,可有效解决上述问题,帮助测试团队提高测试能力和效率。

API Studio 提供UI 和代码模式两种测试用例编写模式:

UI模式:支持通过界面模式编辑 API自动化测试用例,无需编写代码即可完成较复杂的API自动化测试工作。

脚本模式:通过编写Javascript代码,可以完成复杂的API自动化测试工作。

由于篇幅原因,我们在此仅演示 API Studio 的自动化测试效果,如需了解具体内容可以访问 Eolinker 官方网站查看。

如下图所示,您可通过界面方式编辑 API 测试流程、API 之间数据管理、返回的校验规则,甚至是插入数据库操作等,然后一键即可获得测试报告。

脚本模式中,编写几行代码即可发起测试,且支持从 API 文档自动生成测试脚本!

我们可以选择多个测试用例,一键批量测试并得到测试报告。

通过更多方式触发 API 自动化测试

API Studio 中提供了多种自动化测试的触发方式:

1. Open API 触发,可对接到Jenkins 等持续开发平台中;

2. 定时触发;

3. 手动触发;

灵活运用即可打造一个属于您的测试效率神器!

05. 更多关于eolink的API 解决方案

疫情的肆虐让无数的企业经营受阻,以上是eolink 结合自身长期的远程研发协作经验,为企业推出 API 管理远程协作指南,以下方案不仅在 eolink 内部,也在众多客户中得到验证,希望能够帮助您快速了解如何将 API 管理与自动化测试运用在实际的远程办公中。

我们希望用这套理论和产品,帮助更多企业从传统、低效的开发方式中解脱出来,也祝愿承载着中国梦的广大开发者和企业,能够携手一同渡过这个难关,eolink将一直与各位同在!

图中所使用的的接口管理工具是eolink,感兴趣可以自行使用:www.eolink.com

最佳实践 | 疫情之下,了解 eolink 如何助力远程办公!的更多相关文章

  1. TiOps,支持容器,支持多云安全远程运维,疫情期间免费开放,助力远程办公

    TiOps,支持多云环境安全远程运维,疫情期间免费对外开放在疫情期间,为减少疾病传染可能性,许多公司的选择了在家远程办公.对于运维来说,既要远程运维,又要保证安全,还要在复杂的IT环境中保持高效,面临 ...

  2. 基于开源软件在Azure平台建立大规模系统的最佳实践

    作者 王枫 发布于2014年5月28日 前言 Microsoft Azure 是微软公有云的唯一解决方案.借助这一平台,用户可以以多种方式部署和发布自己的应用. 这是一个开放的平台,除了对于Windo ...

  3. python高级编程之选择好名称:pepe8和命名最佳实践

    # # -*- coding: utf-8 -*- # # python:2.x # __author__ = 'Administrator' # my_list=['a','b','c','d'] ...

  4. 学习笔记TF061:分布式TensorFlow,分布式原理、最佳实践

    分布式TensorFlow由高性能gRPC库底层技术支持.Martin Abadi.Ashish Agarwal.Paul Barham论文<TensorFlow:Large-Scale Mac ...

  5. RESTful API 设计指南,RESTful API 设计最佳实践

    RESTful API 设计指南,RESTful API 设计最佳实践 网络应用程序,分为前端和后端两个部分.当前的发展趋势,就是前端设备层出不穷(手机.平板.桌面电脑.其他专用设备......). ...

  6. 2018亚太CDN峰会开幕, 阿里云王海华解读云+端+AI的短视频最佳实践

    4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和 ...

  7. Android开发最佳实践

    Android开发最佳实践 摘要 ●使用 Gradle 和它推荐的工程结构 ●把密码和敏感数据放在gradle.properties ●不要自己写 HTTP 客户端,使用Volley或OkHttp库 ...

  8. 腾讯云AI应用产品总监王磊:AI 在传统产业的最佳实践

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海 ...

  9. nodejs 实践:express 最佳实践(三) express 解析

    nodejs 实践:express 最佳实践(三) express 解析 nodejs 发展很快,从 npm 上面的包托管数量就可以看出来.不过从另一方面来看,也是反映了 nodejs 的基础不稳固, ...

随机推荐

  1. 团队Beta1

    队名:观光队 链接 组长博客 作业博客 组员实践情况 王耀鑫 **过去两天完成了哪些任务 ** 文字/口头描述 任务分配 展示GitHub当日代码/文档签入记录 接下来的计划 完成短租车,页面美化 * ...

  2. vue3中的四种插槽的介绍-保证让你看看的明明白白!

    插槽 当组件中只有一个插槽的时候,我们可以不设置 slot 的 name 属性. v-slot 后可以不带参数,但是 v-slot 在没有设置 name 属性的时候, 插槽口会默认为"def ...

  3. CTF简介

    最近在学习渗透测试,后来发现CTF很有趣,发现对学习有所帮助,于是找了几个网站,下面推荐几个我觉得不错的网站 https://www.ctfhub.com/#/index https://adworl ...

  4. vue大型电商项目尚品汇(前台篇)day01

    学完vue2还是决定先做一个比较经典,也比较大的项目来练练手好一点,vue3的知识不用那么着急,先把vue2用熟练了,vue3随时都能学. 这个项目确实很经典包含了登录注册.购物车电商网站该有的都有, ...

  5. NoClassDefFoundError问题

    问题: 遇到一个问题,报NoClassDefFoundError,如下图: NoClassDefFoundError和ClassNotFoundException区别 我们经常被java.lang.C ...

  6. java基础题(3)

    5.面向对象 5.1封装 5.1.1修改Data类的定义 描述 现有一个Data类,内部定义了属性x和y,在main方法中实例化了Data类,并计算了data对象中x和y的和.但是,Data类的定义存 ...

  7. 计算机网络 - HTTP和HTTPS的区别

    计算机网络 - HTTP和HTTPS的区别 http所有传输的内容都是明文,并且客户端和服务器端都无法验证对方的身份. https具有安全性的ssl加密传输协议,加密采用对称加密. https协议需要 ...

  8. LVS+keepalived高可用

    1.keeplived相关 1.1工作原理 Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题. 在一个LVS服务集群中通常有主服务器(MAS ...

  9. 使用pip安装库或执行pip命令时报错解决方案

    初次安装pip后执行安装升级一般不会有问题,但是国外的镜像源下载升级由于网速过慢会进行报错,提示需要升级 pip 或者下载速度很慢最后直接报了错如下图: 这个时候只需要修改镜像源即可,建议修改为永久镜 ...

  10. CentOS7及以下版本安装禅道

    由于是CentOS7以及以下系统,禅道已经集成了 Apache Nginx Mysql 服务,不需要我们再次安装搭建,我们只进行解压使用就好: 一.进行下载安装 1.在终端命令中输入以下命令确认系统是 ...