摘自:https://weibo.com/ttarticle/p/show?id=2309404141691887072285
https://git.oschina.net/zhoujingjie/apiManager.git
一. 简介
为什么需要接口管理与测试平台
随着系统业务增长,模块间的交互复杂化,我们在测试接口时总会碰到各种各样问题,比如:
因为接口文档更新不及时导致的接口歧义
测试时总会有思维发散的测试用例,在测试用例文档中维护起来很麻烦
市面上的测试工具各有特色,测试人员找不到合适自己测试的工具,或者说在不同的工具间切换不方便
因为接口的加密或者验证功能,给测试带来麻烦,而工具又很难进行扩展
自动化测试需要大量编码维护工作
为了改善这些问题,让接口测试更加流畅。我们在开源系统上进行二次开发,综合了常用的接口测试工具的功能,开发了新浪接口管理与测试平台,功能更加全面,且易于扩展。
接口管理与测试平台的主要特点
功能全面
平台实现了项目接口编辑,文档导出,接口测试,用例记录,自动化测试,团队管理等功能,涵盖文档编辑,在线测试,自动化等各种场景,实现一站式测试。
简单易用
在传统的接口开发过程中,我们会用到wiki,postman,soapUI等工具来辅助开发和测试,该平台集以上功能于一体,使整个项目的接口开发和测试工作更方便快捷
解决了什么问题
消除接口文档歧义
接口即文档,可用于团队内外分享接口文档,开发在更新接口的同时,对外发布的文档也同时更新,再加上分享和在线测试功能,不会引起接口歧义
一站式测试
集在线测试,用例维护,自动化测试于同一平台,而且可以对参数进行常用的加密等处理,并支持扩展,再也不用在各种测试工具之间切换
测试用例共享
测试用例和测试数据都可以随时保存,且与团队成员分享
简化自动化测试
保存的用例可直接用于自动化,不用专门维护
二. 系统功能模块
【图1 功能模块图】
1. 项目管理
包括可视化接口编辑/预览,文档分享/导出等功能,还通过webSocket机制实时通知团队中成员的操作,与传统的wiki管理项目和接口的方式相比,有很多优势:
以项目->模块->分类->接口的层级关系,让接口自然分类,一目了然。省去了wiki中复杂的层级结构规划工作
支持markdown编辑器
编辑页面更人性化,接口的所有属性清晰明了,参数类型,描述都有严格定义,减少接口文档带来的歧义
浏览模式自动生成格式化文档,省去了wiki复杂的格式排版工作
测试模式可以进行在线模拟测试,未上线之前可以进行环境切换,在接口联调时可以减少沟通成本
可直接导出PDF,方便接口文档传阅
2. 用户管理
包括用户信息,团队成员的管理。无需注册,用LDAP域帐号直接登录,可以维护自己团队的成员来实现项目的权限控制。
3. 接口测试
可进行在线测试,并设置校验规则,测试过的用例可以保存下来在团队中共享。与普通的接口测试工具(如postman,soapUI)相比,也有很多优势:
支持多种接口协议,如http、webSocket测试(postman不支持webSocket)
支持多种请求类型如form-data,x-www-form-urlencoded ,raw,binary ,根据不同响应类型可对返回结果进行格式化,如json,xml,txt,jsonp等格式(postman做的比较全面,其他工具就比较少)
支持变量,测试环境和请求参数都可以用变量形式,且无限扩展(其他工具或者不支持扩展,或者只有少量的既定变量)
支持团队中分享项目,接口和测试用例。无需注册,用LDAP域账号登录后,即可加入团队,查看接口(postman需要借助google账号实现分享,且收费项目)
支持将单个项目或者接口分享给其他人进行浏览(postman只能导出)
支持测试用例管理(soapUI有测试用例管理,但操作比较复杂)
支持对返回值进行校验,校验规则可以扩展(其他工具只能使用既定的校验规则)
4. 自动化测试
从数据库读取自动化用例进行回放并校验返回结果。支持设置执行计划,单次执行或预约执行。为了解耦,分为三个模块:
Server:提供接口供前端调用,传入执行计划
Task Runner:后台轮询检测数据库,获取未执行的任务,执行并置状态
Email Sender:读取数据库,发送邮件给执行者
流程图如下:
【图2 自动化运行流程图】
三. 系统架构
前端静态页面基于nodejs,webpack gulp,vuejs,jqueryjs开发;
后端API 使用java开发,运行在tomcat8以上版本;
自动化运行程序使用python开发,轮询获取数据库中需要自动化运行的case,运行并回写结果;
系统架构图如下:
【图3 系统架构图】
四. 功能亮点展示
新浪接口测试平台实现了大部分日常接口开发和测试流程中所用到的功能,我们通过二次开发,也对许多功能进行了优化,并支持在使用过程中随时进行扩展。界面设计和操作步骤都非常简易,下面主要介绍一下功能亮点:
可视化编辑与分享,让接口撰写变简单
可视化编辑器,可随时修改并且浏览接口基本信息及参数,让开发在设计接口和撰写接口文档时更加方便。
完善的分享机制,通过权限控制,可以将某个项目或者接口分享给团队内外的人员,在线测试和mock功能可以增强团队合作的紧密程度。
多功能导出,支持导出PDF或JSON格式,PDF即为格式化的接口文档
【图4 接口可视化编辑界面】
在线接口测试,消除接口文档歧义
支持在线测试,接口文档撰写好后即可在线测试,方便前后端开发联调,降低错误率
支持参数变量化,简化接口因加密带来的测试工作量,方便测试
支持多种协议,目前有http,webSocket协议,可扩展
支持返回结果校验,方便回归测试
【图5 在线接口测试演示】
测试用例管理,使测试过程有迹可循
支持测试用例保存和查看,团队成员可互相审阅测试用例,减少项目交接带来的工作量
支持多种格式校验,测试用例可以对返回结果设置校验,包括http返回码,json值校验等,方便回归测试以及自动化测试
【图6 测试用例管理界面】
在线编写自动化测试,让大家都能够参与测试
自动化用例编辑可视化,使自动化过程更加简单明了
完善的自动化运行机制,支持接口参数和环境变量化,实现不同环境下运行同样的测试用例
丰富的结果展示,方便问题查询
【图7 自动化测试界面】
五. 参考文档
小幺鸡项目源码地址:
https://git.oschina.net/zhoujingjie/apiManager.git,我们在小幺鸡的基础上做的二次开发,增加了很多功能,开发和封装了接口管理与测试平台