MeterSphere MeterSphere 案例分享丨易盛信息 MeterSphere 接口测试使用经验

MeterSphere 小助手 · 2020年11月23日 · 255 次阅读

郑州易盛信息技术有限公司(以下简称为易盛信息)是郑州商品交易所的全资技术子公司。其主要的发展战略为 “两个面向”,即面向郑州商品交易所和面向全球金融期货市场。

目前,易盛信息一个普通交易日 6 小时处理的交易额远远超过了天猫双十一全天的交易额,核心系统处理时延精确至纳秒级,部分系统数据精度要到小数点后三十多位。系统的稳定性至关重要,如果交易系统发生故障导致中断会影响世界范围内相关产品定价。总而言之一句话,我们要千方百计地确保系统 “不能出事”。

系统测试阶段面临的问题

在系统测试阶段,针对接口测试我们主要面临两类问题。

  • 第一类是私有协议问题,期货交易采用基于 TCP 和 UDP 的期货报文交换协议,市面上没有针对性的测试工具。如果需要自动化,就需要编写 C++ 代码来进行测试,这无疑对测试人员提出了很高的要求;
  • 第二类问题则是我们的办理申报类业务,对 HTTP 接口测试的需求具有鲜明的特点。此类采用非私有协议的系统,大部分采用 Java 开发,通过 HTTP 接口进行交互。

而在这一环节中,我们需要和数据库进行比较。业务中有大量的表单填写和各种计算,需要对接口处理后的数据进行一定规则的校验。传统接口测试工具均无法支持数据库相关操作。

在这方面,我们也进行了一些尝试,今年疫情期间,我们开发了一版以 HttpRunner 为核心引擎的接口测试工具原型,结合自有 Python 操作 Oracle 封装的库,实现了和数据库结果的比较,但由于脚本编写内容多、UI 不够便捷、文档不够清晰等一系列原因最终搁置了这一自研工具;

接口测试的另一个特点是具有复杂且长的流程性接口。对于很多审批、申报类业务,需要按照顺序和逻辑条件请求十几个接口,中间由不同的用户登录并操作,过程之繁琐远超微服务的无状态调用,对于很多长流程组成的场景,无论是手工测试还是编写自动化测试脚本都很复杂。

MeterSphere 给我们带来的帮助

任何技术都有着自己的生命周期,从诞生到衰落也符合事物发展的客观规律。传统金融行业的互联网转型是漫长的,为了求稳,对于业内的众多新兴技术,并不会立刻采纳,但我们仍然持续关注相关理论、技术、工具及平台,争取成为早期技术红利的受益者。

2020 年 8 月,在朱少民老师的公众号 “软件质量报道” 上第一次了解到了 MeterSphere 这个开源项目,并在 9 月的 QECon 大会上第一次见面。真的是 “相见恨晚” 呀!

经过一段时间的使用,我们逐步将 MeterSphere 开源持续测试平台引入到我们的业务场景测试之中,也收获了一些使用心得和体会。在这里和大家分享一下。

1.平台即服务

在使用 MeterSphere 之前,我们主要用 Postman 进行接口测试。与工具型的 Postman 相比,MeterSphere 是一个持续测试的平台。MeterSphere 的主要优势包含以下几点:

搭建方便

MeterSphere 基于 Docker 提供服务,并提供完备的私有化部署能力,支持一键安装和升级,整个过程非常流畅,体验良好。容器化的部署方式避免了测试人员安装工具的成本,搭建好平台后即可直接使用。

▲图 1 MeterSphere 支持一键安装和升级

管理规范

MeterSphere 能够实现组织、工作空间、项目、测试、场景等多级管理,角色权限分离,井井有条。它还可以与内部 LDAP 对接,使用起来非常方便。

▲图 2 MeterSphere 可与 LDAP 进行对接

▲图 3 MeterSphere 支持用户、组织和工作空间管理

2. 与 MeterSphere 的 “一见钟情”

初次试用 MeterSphere,就发现了它非同一般的易用性,提供接口测试解决方案上也恰好直击我们的痛点。我们选择了具体的业务组进行了试用推广,真的很香,主要的原因来自以下几个方面:

调试功能

测试过程中常常需要调试,MeterSphere 贴心地提供了调试按钮,可以立刻看到当前接口的执行情况,方便使用者及时调整,这方面体验和 Postman 完全一样。

▲图 4 MeterSphere 接口测试提供了与 Postman 类似的体验

支持 Python 的前后置脚本

Postman 支持使用 JavaScript 编写脚本,但我的同事们更熟悉 Python,而 MeterSphere 支持 Python 的前后置脚本就给接口测试增加了更多的灵活性。在这方面,MeterSphere 更具优势。

▲图 5 MeterSphere 支持 Python 的前后置脚本

支持 SQL 语句

这应该是支持我的团队开始使用 MeterSphere 最关键的原因了。支持 SQL 就满足了我们在接口测试中 50% 的需求,结合自定义变量和数据库源配置及调试功能,可以非常便捷地编写用例。即使测试人员不会写代码只会写 SQL,也可以通过简单的培训快速上手,相较于原有需要测试人员手动编写 Python 测试代码要便捷许多。

▲ 图 6 MeterSphere 在接口测试中支持 SQL 语句

▲图 7 SQL 请求返回结果

3. 支持测试跟踪和性能测试

除了我们主要关注的接口测试,MeterSphere 也支持测试跟踪和性能测试。官方有意和我们目前正在使用的禅道平台打通,进行缺陷管理,这样工具就可以联动起来。对于性能测试的功能,我们也正在探索中,将接口测试用例一键转为性能测试用例,并辅以可视化施压曲线,非常直观,点个赞!

4. 与技术栈契合

基于 Vue.js 和 SpringBoot 的前后端分离程序是当前主流的技术实现方式,MeterSphere 没有藏着掖着,核心功能代码全部开源,使用 Swagger 作为接口文档清晰易读,大大降低了二次开发和定制化的门槛。

5. 支持持续集成

MeterSphere 提供了 Jenkins 插件用来打通持续集成,能够和内部的 CI/CD 流水线配合工作,提高自动化率。同时,基于前后端分离的设计,MeterSphere 还能够便捷地通过自定义脚本触发接口批量执行。

使用情况

我们目前对 MeterSphere 的使用方法是在诸多测试团队中选择了一个典型团队进行试点推广,文中截图均来源于此团队的测试实践。具体项目由专职测试团队进行系统测试,充分设计场景和用例,开始逐渐将原有零散的用例向 MeterSphere 平台迁移,充分利用其管理能力和复用能力。当用例积累到一定规模后,可以便捷地展开冒烟和回归测试。

感受与评价

MeterSphere 开源持续测试平台是一款经过细心雕琢的产品,易用性相较于之前接触过的开源工具有极大的提升。

社区的活跃度是评价一个开源项目的关键指标。没有社区哪来的生命力?MeterSphere 团队的同学非常热情,积极协助我们解决使用中的各种问题,同时我们将发现的问题和意见建议提交 Issue,官方再有选择地采纳,这就形成了一个良性的互补和循环,互相促进各自的产品质量持续提升,共同受益。

期待与建议

截至目前,MeterSphere 每一个新版本都能解决多个切实关心的实际问题,并且积极采纳用户合理的意见和建议,永葆活力。希望 MeterSphere 开源项目不忘初心,在开源社区持续不断地茁壮成长,成为测试工程师们不可或缺的工具。

注:本文作者为郑州易盛信息技术有限公司测试中心效能组狄雨晨。

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册