我与“Apifox”的网络情缘
Posted 流星不逝
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我与“Apifox”的网络情缘相关的知识,希望对你有一定的参考价值。
我与 “Apifox ”的网络情缘
亲爱的朋友们,适逢“玩转Apifox征文活动”如火如荼进行,我呢也想借此机会跟大家分享一个Love Story:我与Apifox的网络情缘。
1 引言
简单介绍一下故事人物:
角色 | 姓名 | 说明 |
---|---|---|
男一 | 阿哲 | 故事主人公“我”,是PMS领域的后起之秀,已支持数万家酒店正常运营"。 |
女一 | 睿狐 | Apifox,昵称:小狐 |
月老 | 刘哥 | 测试负责人 ( 他是为了我的终身大事,开挂的"月老" ) |
前女友 | Postman | |
曾经们 | Jmeter, swaggerUI,MeterSphere, SoapUI, Katalon Studio,Robotframework |
PS:性别为故事剧情需要,莫过于较真 ~
2 缘起
年前的时候,测试负责人刘哥说“为了保证每次迭代质量上线,除了原有的功能(UI)层面的测试以外,必须把API接口自动化测试提上日程。 更早的介入接口测试,可更早的发现软件缺陷,而且接口测试更稳定!每次回归跑一跑他不香么blabla”。从那以后他就开起来当“月老”的暴走模式。介绍的对象中印象深刻的有:Jmeter,swaggerUI,MeterSphere,soapUI, Katalon Studio,Robotframework,Postman 。 这几个相信测试的童鞋比较熟悉。各花入各眼,都个有优缺点,就不展开说了。 在相处的过程中,Jmeter 终处成了闺蜜,压测的时候经常一起玩耍;该说不说提一嘴,不得不好好提下Postman,毕竟“前任”。必须得给画面: Postman有很多优点:
-
①支持http、https协议,做接口调试非常的优秀 -
②保留历史记录,方便组织测试用例及支持多终端同步用例 -
③支持读取csv,json数据文件 -
④支持创建不同权限的Workspaces,能支持团队协作(按照团队规模和团队协作的功能模块收费),但免费版的团队合作支持跟没有是差不多,差评... 缺点就不当众说了吧;刘哥结合我的具体情况,也对下一”对象”明确了几点要求: -
①必须很好的支持团队合作, -
②零学习成本 -
③ 方便做API自动化测试 -
④能对数据库进行相关操作 -
⑤要能MOCK数据 -
⑥ 长得要好看
不能说我阿哲渣,确实是几经波折相处下来发现真的都不是最合适的。
3 相遇想识
有人说”前世500次的回眸才换来今生的相遇”;一次偶然,刘哥带你(Apifox)走进了我的视野。没错,只是因为在人群中多看了你一眼,再也没能忘掉你容颜。从对视的那一刻起,我知道这就是“缘”!
-
阿哲:“你好,我是阿哲” -
Apifox:“你好,我是小狐” ...
4 相知相爱
相识后,我用尽所有一切能知道的办法探索、努力尝试,只为走进你的世界,也带你了解我的世界;增进了解,拉近彼此距离。 经历了这段时间的磨合,我们相爱了,爱的那么深,爱的那么认真!我深知你所有的好。
4.1 Apifox下载安装
Apifox支持 桌面版和WEB版 , 受制于各种网络、硬件等环境影响,经过长时间使用,个人推荐大家直接下载桌面版安装使用,更稳定。小狐支持各Windows,macOS,Linux系统桌面版。
4.2 创建团队和项目
要创建自己的团队和项目,首先需要在Apifox上注册个账号(邮箱注册),也可以直接微信扫码登录,这种方式是也是他们比较推荐的登录方式。 无论哪种方式操作都很简单根据提示来就行了,不赘述。 非常有意思的是 Apifox支持多样的外观,也就是她有非常多样的衣服颜色搭配 在注册登录界面的时候就可以选择自己喜欢的界面风格(外观、主色、字体大小任意搭):
有了账号就可以创建自己的团队和项目了:
若有多个团队 可以拖动换位置, 多个项目同理:
项目这多说一句可以你容易克隆、移动、删除项目,删除项目需人工输入项目名称确认 ,这个设计很好,避免误操作一下子把项目干掉了:
4.3 邀请成员/设置权限
既然我们要团队协作, 团队成员进来是必须的,Apifox提供了3中邀请方式:链接要求、邮箱要求、账号邀请,不管哪一种操作都比较方便。
4.4 接口文档设计
使用Apifox设计接口方便快捷,遵循OpenAPI规范,完全可视化 。光标移动至已创建的项目的 位置 ,点击【新建接口】,然后根据接口的设计要求,填入接口路径、名称、分组、状态、参数、责任人、标签、服务、请求参数、返回响应及其相应的数据结构等。
设计文档这里还有个亮点,就是 自定义接口文档字段的使用, 我们希望接口文档 跟 产品需求文档 一一对应, 于是我们在接口文档中自定义了 “Confluence需求链接”:
若是已经实现的功能,在Apifox里补充接口文档, 有个快速的方法, 通过JSON/XML智能识别/快速导入,很好用:
4.5 接口数据导入
之前API大部分都在Postman 和RAP上,Apifox导入数据的功能异常强大,几乎你用到的数据格式都支持,这个必须点赞!我的数据很多都来自Postman 和RAP,先从Postman和RAP上导出数据。 然后通过【项目设置】的 【导入数据(手动导入)】把数据导入Apifox;导入后正常运行。只是在Postman导入的过程中,发现了小问题,就是我的有些接口的请求参数默认导成了 form-data格式,而我们都是JSON的,这个问题还需要深入研究下 WHY。
4.6 接口调试
4.6.1 Apifox调试之”自动校验”:
小狐调试接口基本操作跟Postman操作无差别。而且调试时亮点不少,比如调试时 小狐 会 ”自动校验” 数据结构,她会根据接口文档的定义,“自动校验“”返回的数据结构正确与否。无需任何脚本非常奈斯。
4.6.2 Apifox调试之”环境、变量管理”:
调试时难免用到不同的环境,需要设置环境变量、全局变量、全局参数什么的,Apifox全都有而且易操作。
4.6.3 Apifox调试之”断言”
4.6.4 Apifox调试之”接口依赖”
(下一个接口的请求依赖于上一个接口返回的数据)。 拿我们的项目为例, 我们有些接口都会用到登录接口返回的token值,具体怎么做呢? 如下:
登录接口的【后置操作】 提取变量:
阿哲项目的某接口用到的登录接口返回的token值,在请求参数中加入前面提取的变量即可:
4.7 测试用例
Apifox中组织管理测试用例超级方便,对接口文档执行【运行】操作,然后 【保存为用例】就会生成一条测试用例;并且用例会自动跟随这接口改变而变。
修改请求参数,点击 发送 保存为用例 ,可再生成用例,以此类推 一个接口轻松设计多条正异常测试用例。
4.8 接口MOCK数据
Apifox的亮点在于,智能MOCK数据很人性化,我们测试人员在用的时候更多的是使用“自动生成”功能。
4.9 自动化测试
自动化测试用例的组织以及测试套件的组织与管理是我们测试小伙伴工作的重点。
我们刘哥也是推荐测试组内小伙伴用 “从【接口用例】导入(推荐)”,【接口管理】模块中组织好每个接口相关的测试用例,然后到【自动化测试】模块针对需求场景组织测试用例。
无论是测试用例还是测试套运行后都会生产测试报告
测试报告方便查看、导出:
4.10 API Hub
小狐自身带了很多第三方平台,如企业微信、钉钉等的开放 API ,相信通过对他们的学习研究,可以让自己变的更优秀。
5 相守
相爱中的人儿总是你侬我侬,容易被爱情冲昏头脑。但是我们是理智的, Apifox已经很优秀,但仍有很多进步空间,比如:
-
应该支持离线使用 -- 这个可以借鉴下 印象笔记 离线、协作之后可以“ 同步”笔记 -
加强压力测试的支持,目前Apifox 对于压测的支持很弱 -
持续集成-- 感觉持续集成的方便度还不够,有优化空间 -
增加对gRPC、WebSocket 等协议接口的支持
有人说过”1000个项目心中有1000个小狐”,愿我跟“小狐”的相遇、相识、相知、相爱终能相守一生。
本文由 mdnice 多平台发布
我与IDEA的不舍情缘
JetBrains这家来自于捷克的公司是一家真正伟大的公司,它向全球的广大开发者提供了诸多的生产力工具,让我们这些以编程为生的程序员们能够真正享受到编程的乐趣。JetBrains的产品线十分丰富,从大名鼎鼎的IntelliJ IDEA、PyCharm、PhpStorm、WebStorm、RubyMine到移动开发利器AppCode,再到今年初正式发布的数据库管理一站式工具DataGrip,以及团队协同开发工具YouTrack、TeamCity等等,每一个产品都在各自的领域中傲视群雄,当仁不让。
此前得知CSDN与JetBrains公司合作举办了『JetBrains远征赛之使用技能征集』活动,同时CSDN编辑也邀请我为活动写一些文章,由于自己使用JetBrains公司的各种产品已经有很多年了,期间也积累了不少的经验和使用感受,同时也写过不少关于JetBrains公司产品的文章,便欣然接受了邀请,于是才有了下面这些文字。由于标题字数有限制,因此标题只写了IDEA这一工具,不过本文将会介绍IntelliJ IDEA、WebStorm与DataGrip这3个分别面向Java、前端与数据库的工具;他们也是我在日常开发工作中频繁使用的工具。
工作近10年来,我目前主要从事系统架构设计工作,每天的主要工作内容是规划系统设计方案、优化系统、核心模块代码的编写以及指导团队成员。可以这么说,我每天的绝大部分时间都是在编写代码,因此一款趁手的IDE就显得尤为重要了。现在,我每天游走在Java、Python、Angular、React、Node、iOS与Android之间;这每一项技术都需要有相应的工具作为支撑,值得一提的是,这其中我所使用的大部分IDE都来自于JetBrains,下面是我Mac Dock栏上的JetBrains公司部分工具图标一览:
在我的积极推动下,现在项目组所有成员也都从原来所使用的各种工具转向了JetBrains产品。由于一直在做Java开发,因此就从Java IDE IntelliJ IDEA开始说起吧。
IntelliJ IDEA——Java开发者所需的唯一工具
与很多Java开发者一样,我从2007年研究生毕业后进入到公司从事Java相关开发后就一直在使用Eclipse工具栈(包括MyEclipse)进行Java系统的开发工作,这种情况一直持续到2012年;期间也积累了丰富的Eclipse使用经验,同时感受到Eclipse的强大以及插件体系的精妙之处。不得不说,Eclipse是一款伟大的产品,免费、使用人数众多,上手比较轻松,我相信这也是很多Eclipse使用者的直观感受。
随着Maven的日渐流行,我们的项目开始转向Maven进行依赖与项目生命周期的管理。当我使用Eclipse与Maven进行集成时,我感受到了深深的挫败感;在2012年那个时候,Maven已然成为了Java构建事实上的标准,然而遗憾的是,Eclipse与Maven的集成做的非常差劲,通过Maven插件导入Maven项目后需要进行大量的手工设置,这些设置非常容易出错,相信当时很多人都遇到了和我一样的境况(因为当时通过Google搜索Eclipse与Maven集成会看到大量的文章,都是为了解决集成方式先天不足这一问题)。这些本来应该由IDE帮助我们完成的事情却转嫁给了开发者,显然这不是我想要的结果。经过不断尝试后,虽然成功完成了Eclipse与Maven的集成,但中间的操作步骤却异常繁琐,而且还要注意先后顺序,团队的每一名成员都需要按照这个步骤来才能顺利完成集成工作;新人加入团队后也要重复这一过程。当时我就在想,有没有其他IDE能够比Eclipse在这方面做的更好呢?于是,我想到了IntelliJ IDEA。当时,Java领域知名的三大IDE分别是:Eclipse、IntelliJIDEA与NetBeans(相信现在也是这个局面)。由于个人不是太喜欢NetBeans,于是就下载了IntelliJ IDEA试用。安装完毕后发现IDEA已经集成了Maven功能,于是通过git将仓库中的Maven项目导入进来,待系统刷新完毕后令我惊讶的一幕发生了:IDEA已经自动识别出了这是个Maven项目,并且完成了一切的设置工作;可我什么都没做啊,IDE已经自动帮助我完成了全部的设置工作,接下来我要做的就是编码——程序员的主要工作。这简直太令我震惊了,在Eclipse中需要花费那么久才能搞定的事情,使用IDEA竟然短短几十秒就由工具帮助我全部自动完成了。激动之余我开始了对IntelliJ IDEA的尝试与探索。
不得不说的是,由于具备了多年的Eclipse使用经验,因此对于Eclipse的各项功能与操作方式都了然于心了,特别是Eclipse的界面风格。但一开始使用IDEA时感受到了极度的不适应(后来在与很多新人沟通IDEA使用情况时发现,这几乎是每个IDEA新手的共同感受,看来习惯的力量是巨大的),菜单项、命令方式、操作方式、特别是快捷键(实际上,IDEA提供了Eclipse风格快捷键,可以在首选项的键盘设置中进行配置)都存在着巨大的差别,这其中界面风格的差别尤为突出。IDEA的界面与Eclipse是完全不同的(我们不能说哪一个更好,其实更多的是习惯造成的),这一点对于新手来说是比较难以克服的。据我所知,有不少IDEA新手在使用IDEA不到一天的时间后就放弃了,究其原因还是难以逾越习惯的心魔。好在自己对于新事物的适应能力比较强,经过了一周左右的不断尝试后,终于降伏了IDEA这一庞大的工具。使用得越多越能感受到IDEA的强大与贴心。
实际上,IDEA也提供了非常强大的插件体系,用于补充和完善IDE自身的功能。而且,IDEA现有的插件已经非常丰富了,比如说用于git .ignore文件处理的.ignore、用于thrift接口定义文件编写的Thrift Support、用于编写markdown文档的Markdown support、用于编写FreeMarker模板文件的FreeMarker support,以及用于在IDEA中模拟VI操作的IdeaVim等等。除此之外,IDEA自身就已经通过插件的方式提供了对诸多框架与语言的支持,比如说Spring、Hibernate、Struts2、Nodejs、Scala、单元测试、React、Bash、CoffeeScript、YAML、Gradle、GitHub等等。凭借着自身强大的功能与完善的插件体系,IntelliJ IDEA为开发者提供了开箱即用的便利性,这对于开发者效能的提升是显而易见的。
提起IntelliJ IDEA,就不得不提到它的快捷键。IDEA的快捷键之多、之方便为广大开发者津津乐道。众所周知,开发者在进行开发工作时,双手尽量不要离开键盘,因为从键盘切换到鼠标然后再回到键盘这看似不经意的动作,实际上每天做多了就会对效率造成一定的影响;IDEA凭借强大的快捷键与Alt+Enter功能(无论何时,这个快捷键都会给你与当前上下文相关的智能提示,这是个极具价值的功能)能极大提升开发者的生产率(当然了,前提是需要花一些时间熟悉IDEA的常用快捷键,这样才会事半功倍)。
目前项目的后端使用Gradle进行构建,使用git进行版本控制与管理,使用的技术栈有Spring、Spring MVC、MyBatis、Thrift、Kafka等,IDEA同样对其提供了完备的支持。开发者无需离开IDEA就可以完成几乎全部的日常开发工作,IDEA提供的Terminal(Mac下)支持也是非常有益的,这样就无需在IDEA与Terminal之间频繁切换了。
另外,值得称道的是IDEA对于Java8 Lambda表达式与调试的强大支持。众所周知,调试是我们日常开发中必不可少的一环,IDEA在这方面给予了我们最大的支持,当程序暂停在断点处时,编辑器会直接在界面上显示出当前上下文环境下所有变量的值,这对于开发者对程序执行流程的理解上无疑是帮助巨大的。
从图中可以看到,断点处的变量值直接就显示在了变量旁边,这一特性能有效提升调试的效率。
WebStorm——前端开发者的福音
目前的前端领域呈现出百花齐放、百家争鸣的景象,各种技术、框架、思想与库层出不穷。几年前还是用jQuery打天下的时代已经离我们渐行渐远。目前比较流行的方式是前后端分离,即前端通过Angular或是React等框架完成,后端则提供Rest接口供前端调用,前端使用Node与后端的Rest接口通信。这种做法的优势很明显。首先,前后端分离可以让前端开发者与后端开发者各施其职,互不影响。只需提前定义好通信的接口(HTTP+JSON),前后端开发者即可各自进行开发,不会因为后端某个功能没有完成而影响前端的开发(前端可以通过Mock的方式构造接口数据);同样,后端只需关注接口的正确性即可,因为所有功能都已经服务化了。另外一个优势在于,采用了前后端分离的方式进行开发,前端开发者就再也不必使用后端开发者使用的IDE工具了(在之前传统的类JSP开发模式下,前端开发者必须要先搭建好后端的开发环境才能顺利进行开发,然而这显然会造成前端效能的低下,毕竟前后端代码耦合到了一起是非常不利于开发和阅读的,虽然Velocity和FreeMarker等模板语言能够在一定程度上缓解这个问题,但还是无法从根本上解决)。正所谓一个硬币有两面一样,前后端分离也存在着一定的弊端,最为明显的就是对前端开发者的技能要求会更高,项目开始的开发成本会更高,中间增加了Node这一环节,会导致出现问题时解决起来变得更加困难。但总的来看,前后端分离是未来的发展趋势,也是我们应该深刻理解的思想。
JetBrains公司的WebStorm是一款专门针对前端的开发工具套件,它提供了大量的优秀特性来提升前端开发者的生产力。对于HTML、CSS及JavaScript的支持非常棒,代码提示、代码补全、格式化等功能一应俱全;此外,WebStorm还通过内建插件的形式对当今流行的前端开发框架与库提供了极其完备的支持,如Angular、React、CoffeeScript、Meteor、Yeoman、Nodejs等等,这些优秀的特性让前端开发者可以将精力放在重要的开发上,而非繁复的代码工程。
目前,公司的前端开发工具已经全部转至WebStorm,前端开发人员也对这款强大的IDE赞不绝口,极大提升了生产力。
DataGrip——数据库与SQL领域的瑞士军刀
DataGrip是JetBrains公司今年初才发布的一款数据库管理工具,它号称数据库与SQL领域中的瑞士军刀。值得一提的是,DataGrip的前身叫做0xDBE,在DataGrip发布前已经发布一年多了,我也在很早的时候就申请了0xDBE的试用资格,一路见证了0xDBE的不断发展壮大。与JetBrains产品线上的其他产品类似,DataGrip也提供了Windows、Linux与Mac版本。此外,JetBrains的其他产品如IntelliJ IDEA等也都通过插件的方式集成了DataGrip,这使得开发者能够更加方便地操作数据库。DataGrip支持几乎所有主流的关系数据库产品,如DB2、Derby、H2、MySQL、Oracle、PostgreSQL、SQL Server、Sqllite及Sybase等,并且提供了简单易用的界面,开发者上手几乎不会遇到任何困难。面对市场上已有的诸多老牌数据库管理工具(如MySQL WorkBench、Toad、NaviCat、phpMyAdmin、SequelPro、SQLWave等等),DataGrip要想获得用户青睐一定得有自己的看家本领才行。实践证明,DataGrip不辱使命,在众多同类产品中脱颖而出,迅速赢得了市场。我也在长时间使用DataGrip的过程中领悟到了JetBrains的软件设计哲学——易用且强大。
DataGrip的主要特性有:
提供了对主流数据库管理系统的访问
- 市场上的重量级产品:Oracle、SQL Server、DB2与Sybase
- 社区流行产品:MySQL、PostgreSQL
- 小众产品:SQLite、Apache Derby、HyperSQL与H2
修改数据库对象并自动生成脚本
DataGrip提供了一个UI用以执行诸如创建/修改表、管理列、键与索引的操作。可以立即执行生成的代码,也可以在文本编辑器中打开,并直接操作DDL脚本。DataGrip提供了上下文感知的代码完成特性,能够帮助你更快地编写SQL代码。代码完成可以感知到表结构、外键,甚至是正在编辑的代码中所创建的数据库对象。DataGrip可以检测到代码中潜在的Bug,并即时提供最佳的修复建议。它能够立刻让你知道无法解析的对象,并且总能提供问题的修复建议。
高效编写SQL并消除重复的编码工作
借助于DataGrip,你可以通过代码完成特性更快地编写代码。只需输入数据库对象、标识符或是变量的名字即可,DataGrip会提供一个匹配的列表。DataGrip能够感知到完成JOIN从句所需的依赖,并提供函数与过程所需的参数类型,还可以给出INSERT语句的表结构。DataGrip提供了Live Templates用以生成语句的常见部分,你可以使用默认值,也可以创建新值。
在代码间导航并在输入时进行重命名
DataGrip能够解析出SQL文件中的对象引用。如果对变量或是别名进行了重命名,那么所有用到他们的地方都会相应地进行重命名。如果在SQL中重命名了数据库对象,实际的数据库中也会进行重命名。DataGrip能够正确解析出SQL代码中所有的引用,并帮助你对其进行重构。
IDE会展示出对象(表、列等等)的使用,还会在专门的视图中展示出变量。导航工具可以帮助你在编辑器、模式视图等各种上下文中选择对象。
处理数据并探索关系
你可以通过强大的表编辑器添加、删除、以及克隆数据行。通过过滤文本域可以只查看所需的数据,而无需编写WHERE字句。寻找所需数据的另一种方式是使用文本搜索。如果不知道哪一列包含了你所要寻找的数据,那么文本搜索就是一项非常有用的功能了。可以在文本搜索中使用正则表达式。通过外键数据导航可以转到当前行所引用的数据,反之亦然。
分析查询与比较结果
在单击Execute按钮时可以选择让DataGrip做什么事情——执行子查询、执行外部查询,或是执行整个脚本。只想执行特定的一部分代码?只需将其选中并执行即可。DataGrip还提供了执行计划,其结果集类似于表编辑器,包含了相同的选项,如添加/删除行、文本搜索与数据导航等。可以在diff查看器中比较两个结果集。
DataGrip基于IntelliJ Platform,带来了:
- 拥有多种光标与语法感知选择的文本编辑器
- 版本控制系统集成:Git、Subversion、Mercurial等等
- 插件生态圈:Terminal、Textmate等等
不得不说的Android Studio——Android开发一站式解决方案
最后,不得不提的还有Android Studio——Google官方推荐的Android开发工具。
众所周知,过去Android的主要开发工具是ADT(Android Development Toolkit),它是基于Eclipse之上的一整套面向Android开发的插件集合,提供了Android开发的各种工具与调试器及模拟器等。不过,在去年底,Google宣布将停止对Eclipse Android开发工具的一切支持,转而将Android Studio作为官方推荐的开发工具。Android Studio是基于IntelliJ平台的,充分利用了既有的基础设施。对于那些熟悉IntelliJ IDEA平台的开发者来说,上手Android Studio是非常轻松的事情,这也是现在大部分公司进行Android开发所使用的工具。
总结
JetBrains是一家伟大的公司,它所推出的诸多工具面向软件开发的各个领域,从Java、.NET、PHP、Python、Ruby到iOS、版本控制、持续集成以及数据库管理,极大提升了软件开发者的效率。
作为一名开发者,我非常感谢JetBrains让世界变得如此美好,让我们的开发工作变得更加有趣,也让我深刻认识到——优秀的工具是多么的重要。
谢谢你,JetBrains!
以上是关于我与“Apifox”的网络情缘的主要内容,如果未能解决你的问题,请参考以下文章