目前,我在公司的测试团队中担任Leader,团队成员11人,以外包居多。外包同事在工作中遇到最多的问题是权限受限的问题。我们每次在完成SIT(System Integration Testing,系统集成测试)后,都需要按照集团要求对所测系统的一些接口进行性能测试,并且将报告给到集团验收。

我们使用的性能测试工具是JMeter。“Best practices state that you shouldn’t run a load test from the GUI mode at all.”——按照JMeter的最佳实践,我们准备了不少压力机供测试人员到上面执行命令(-n -t -l),下载JTL文件生成报告。

但是我们的外包同事居然没有压力机登录权限,这样我们只能一遍遍地上去帮助他们进行上传、执行和下载操作,并且发给他们结果。我们还需要负责调整脚本的项目结构,操心执行完后去取文件的时机。这样就导致我们的工作时间被严重碎片化,工作效率也被降低了。

如果我们向外包人员开放账号,也面临着新问题。操作的人太多,压力机里目录变得一片狼藉。简单来说就是一切有权限的目录,都会有各式的文件和文件夹,慢慢压力机磁盘也爆了,无人清理。

MeterSphere能够帮助我们做什么?

面对这样一个简单的问题,业界有很多的解决方案,我们也有自己的办法。

图1 内部实现的压测平台

我们做了一个简单的Web程序,把一个个小项目的性能测试脚本文件夹打包上传,拷贝到做了分布式配置的压力机上。外包同事在Web页面点击便可执行,这时配置好的控制机就会执行一个事先准备好的Shell脚本去跑这些传上去的JMX,每一条上传记录执行后都会有JTL的ZIP包下载链接。这样一来,上述的基础问题便解决了。磁盘的清理加个定时任务应该也不是难事,但我们还是遇到了新问题。

每更换一次虚拟用户数,就需要将脚本下载下来修改一次。调试时我们习惯将虚拟用户数和循环次数都设置成1,这样操作很容易带入压测环境。这也带来了很多“下载-修改-打包-上传”的反复操作,真的令人抓狂的!我们需要让Web程序能够在线修改上传的JMeter脚本。

但是一波未平,一波又起。我们的性能测试除了出报告,也是需要配合开发调优,我们需要让开发看到实时变动。既然我们一直都在用Non GUI执行,就不必再使用JMeter的GUI去实时呈现了,这样不仅有性能损耗,也不太好和现有的Web程序相集成。

“Backend Listener+Grafana+InfluxDB”很香吗?实践下来也不尽然。为每一次压测生成对应的Grafana展示模板并作为URL分享并不是一件容易的事。再看我们这个简单的性能脚本分发器,还缺乏项目组织、定时设置、日志查看等功能。如果持续投入时间去完善它,哪还有时间写代码呢?是时候找一个开源产品了。

选择开源产品的套路很多人都懂,比如开源许可协议、活跃度、开发语言等等。常年混迹于GitHub,我们发现,GitHub里开发框架和业务项目居多,优秀的国内开源测试平台却凤毛菱角。

2020年5月之前,Java系的看的下去的貌似只有“LF”,阿里也有一款基于AI的用例膨胀的工具。国外的Taurus项目解决了我们根据场景修改JMeter脚本的痛点,但如何让它自身图形化、且变得易用又成为了一个新的课题。BlazeMeter似乎是集大成者,但是我司网络访问真的好卡,而且开源版不直接在企业环境内部署。

我们希望能找到一款目前能解决我们大部分痛点,遇到新的痛点我们能在此基础上自行解决,发生问题我们能自行定位处理的开源测试平台。MeterSphere开源持续测试平台正是我们所需要的。

从2020年6月MeterSphere发布的第一个版本,我们就开始试用,并阅读了其代码。MeterSphere使用的是当下主流的开发框架(Vue.js+Spring Boot+Docker),建立在著名开源接口、性能测试工具JMeter之上,没有丝毫地“藏私”,系统里的每一个组件都能找到源代码,包括它们使用到的Dockerfile。

MeterSphere的使用感受

MeterSphere项目的第一个版本发布后,我们完成了对它调研。GPL v2.0开源许可协议赋予了这个开源项目充分的使用和修改自由,短时间内,这个项目在Github上的Star数量已经突破了2500个,项目团队也在持续展开规律性的迭代,每个月你都能收获一系列想要的功能。如果你是Java系,MeterSphere项目采用的技术非常主流,代码也比较工整,你可以上手修改。

第一次搭建部署我们就遇到了问题,主要的原因是我们没有太多使用Docker Compose的经验。我们的风格是要完全掌控我们所使用工具的每一个细节,为此我们放弃了MeterSphere一键安装的部署方式,单独编译每个组件,并使用公司已有的中间件(Nginx、ZooKeeper、Kafka、MySQL)来部署MeterSphere,并且把我们一直使用的JMeter做成Docker镜像供MeterSphere进行调度。

这样每个组件的日志,以及运行方式我们都能了如指掌,出现问题也能快速定位,以确保平台一直可用。遇到搞不定的问题,也能在微信交流群中提供更精准的信息请MeterSphere研发团队的同学帮忙解决。

图2 MeterSphere平台架构

在我们使用第一版MeterSphere之前,我们做了简单的改造,屏蔽了用例管理和Bug跟踪功能。这样做是考虑到上线了就会有人使用,屏蔽暂不使用功能是为了降低运维成本和解释成本。我们将执行时间从分钟改为了秒,也修改了一些Bug(这些Bug在MeterSphere后续的版本中已经修复)。我们就这样愉快地开启了开源持续性能测试之旅,它完美解决了我之前所提到的种种问题。

伴随着MeterSphere项目的持续演进,我们基本上是MeterSphere每发布一个新版本都会进行升级。因为MeterSphere的接口测试功能几乎每个版本都在完善(从Dubbo到TCP,再到SQL),这对我们很有意义。我们的接口自动化测试用例都是以JMeter脚本的形式维护在SVN中,每次需要再次执行时都需要花费时间去调试。很多脚本都不知道是从何时开始就已经不可用,用这种维护方式做持续集成测试并不如人意,报告也需要额外处理。

MeterSphere集中化、界面化、场景化接口测试用例的方式其实更为主流。而且MeterSphere一系列界面配置操作后内部其实还是一个个JMeter文件去跑接口测试(使用JS生成的JMX),你从JMeter接口测试到MeterSphere接口测试的过渡从原理与机制上是顺滑的。而且在后面的版本,MeterSphere还计划推出JMeter直接上传为MeterSphere接口测试用例的新功能。目前,MeterSphere已经支持了Postman的迁移功能。总的来说,持续发展的项目更值得我们花时间去适应,也会引导我们走更为主流的技术道路。

期待与建议

MeterSphere的每个版本都有惊喜,易用性也在不断加强。我总在期待却不知道如何建议,如果非要说点什么,那么我简单想到了以下两点:

■ 报告与图表不如BlazeMeter精细、丰富;

■ 日志类的文件存到了MySQL中,不适合查询。下载是需要先读mysql,文件大时非常卡,感觉Elastic Search和InfluxDB更合适一些。

我们还需要与MeterSphere开源持续测试平台不断磨合并深入使用。MeterSphere项目成长得很快,我们还有很多东西没有来得及使用和学习,我们要加快脚步!

编者注:本文作者为高级测试工程师李生。

性能测试方案_MeterSphere案例分享丨基于JMeter的性能测试方案演进之路相关推荐

  1. 虹科案例分享丨世界领先的矿业公司(英美资源集团)与虹科-Atheer合作

    虹科案例分享丨世界领先的矿业公司(英美资源集团)与虹科-Atheer合作   摘要 世界领先的矿业公司之一.总部位于伦敦的英美资源集团(Anglo American)与虹科-Atheer合作,推动了劳 ...

  2. 分享哈啰出行小程序架构演进之路

    今天跟大家分享一下哈啰出行支付宝小程序的架构演进之路. 内容主要分四个部分.一是对支付宝小程序的简单介绍和我们的项目背景,二是我们遇到的问题和解决问题的思考,三是我们为了解决这些问题引出的哈啰小程序新 ...

  3. 【腾讯bugly干货分享】微信Android热补丁实践演进之路

    为什么80%的码农都做不了架构师?>>>    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://bugly.qq.com/bbs/forum.ph ...

  4. MeterSphere案例分享丨88完美邮箱全面提升产品质量的落地指南

    2019年,全球领先的文化娱乐产业集团完美世界拿下了"一定是东半球最贵的"顶级域名www.88.com.2020年8月8号,历时一年研发,88完美邮箱与大家正式见面.立足产品角度, ...

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

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

  6. 频谱分析幅值单位_案例分享丨某水泥厂入窑斗提减速机不对中故障分析及处理...

    斗式提升机是利用均匀固接于无端奉引构件上的一系列料斗,竖向提升物料的连续输送机械.分为环链.板链和皮带三种.今天因大师将给大家分享一个水泥厂的入窑斗提减速机不对中故障的诊断案例. 1 设备概况 设备基 ...

  7. 软件测试 : 第5次作业 -- 基于Jmeter的 性能测试

    1.1 实验步骤 1.2 设计三组不同的负载,采集网站相应时间数据,用表格形式画出网站性能相应表现 1.3 写出性能测试的测试用例设计心得(不少于3条) 一.下载jmeter 1.先从apache的官 ...

  8. 案例解读丨基于 SDAF 闭环的消费金融复贷场景精细化运营实践

    互联网金融的有序发展持续提升用户对线上借贷行为的认知与接受度,加快着消费金融领域的发展进程,并逐步提升消费金融的线上渗透率. 现阶段,消费金融企业纷纷依托互联网与大数据技术加速产品创新.业务流程优化及 ...

  9. 案例分享:基于道路智慧路灯改造的智慧城管项目系统解决方案详细解析

    项目需求: 新型智慧城市的建设,其中一部分就是智慧城管系统升级.经济技术开发区升级国家级智慧园区配套建设,配合建设智慧城管平台中智能监控部分. 产品功能: 本项目中的道路智慧路灯产品集智能照明.数字监 ...

最新文章

  1. Lucene.net: the main concepts
  2. 第十一届蓝桥杯省赛 A组 试题H:子串分值
  3. 德国机器人公司库卡出售美国业务 为美的收购做准备
  4. 【沟通之道】头脑风暴-女人的心思你别猜
  5. 递归遍历文件夹,并添加到TreeView控件中
  6. search has not been saved
  7. 用access建立一个试题库_Access考试题库(含答案).doc
  8. 实现Chrome Devtools调试JavaScript V8引擎
  9. C++标准库vector及迭代器
  10. [Vue.js]实战 -- 电商项目(四)
  11. kafka集群安装部署
  12. redhat 7 oracle 11,redhat7 搭建oracle 11g RAC 问题与处理
  13. python的标准库——turtle
  14. 安装appach时出现没有安装gcc的错误,用yum安装gcc时yum出现错误(修改yum配置)...
  15. 基础数据结构-线性表-顺序表的连续操作
  16. linux只能单向ping通,两机只能单向Ping通的原因、ping的原理
  17. 智能优化算法:侏儒猫鼬优化算法-附代码
  18. VMWare 克隆,合并父盘
  19. 科技云报道:2022年,产业互联网如何重建安全边界?
  20. TIA Portal下载安装

热门文章

  1. 目标文件里面到底有什么(1)?
  2. 计算机网络核心知识(中)
  3. Thymeleaf一些标签的传字符串/message/消息
  4. 使用jsp实现word、excel格式报表打印-JSP教程,Jsp/Servlet
  5. Photoshop画笔的混合算法实现(逆推)
  6. Linux 网络诊断命令
  7. 问:一行Python代码到底能干多少事情?(一)
  8. 【译】KNOWLEDGE EXTRACTION FROM UNSTRUCTURED TEXTS
  9. Android Studio Library 模块中 Native 代码进行 debug 的一些坑
  10. Tensorflow学习笔记——word2vec