2023年5月25日,MeterSphere 一站式开源持续测试平台正式发布 v2.10 LTS 版本。这是继 2022 年 5 月发布 v1.20 LTS 版本后,MeterSphere 开源项目发布的第三个 LTS(Long Term Support)版本。MeterSphere 开源项目组将对 MeterSphere v2.10 LTS 版本用户提供长期支持,每两周发布小版本,持续进行问题修复更新并针对部分功能进行优化。
MeterSphere 开源项目组深入践行 “一站式持续测试平台” 的设计理念,自 v1.20 LTS 版本起已实现了对测试跟踪、接口测试、UI 测试和性能测试的一站式覆盖。随着广大开源社区用户在不同行业、不同领域深度落地使用 MeterSphere,用户在功能覆盖上对 MeterSphere 提出了更多的期望,在使用体验上对 MeterSphere 提出了更高的要求,MeterSphere 开源项目在系统稳定性、性能和安全性等方面面临挑战。
本次发布的 MeterSphere v2.10 LTS 版本在测试能力、用户体验、系统架构、系统安全四大方面进行了关键性的升级与优化,为用户带来全面升级的使用体验。
一、测试能力升级
■ 一站式测试能力增强
MeterSphere v2.10 LTS 版本在测试管理与测试执行上采用一站式平台设计,在交付功能测试、接口测试、UI 测试、性能测试能力的同时,规避了测试人员执行测试任务时因工具繁多、种类差异化而导致的无法沉淀和无法追溯的问题。MeterSphere 平台全面承载不同类型的测试用例、API、测试数据、测试环境等关键资产的集中管理。
MeterSphere 的功能测试模块支持以脑图模式编写用例,用户可以在线进行用例评审与用例执行,缺陷管理与主流项目管理工具(例如 JIRA、TAPD、禅道等)集成,缺陷数据双向同步。功能用例可以关联其对应的自动化(包括接口、UI、性能)用例,运行自动化用例可以同步更新功能用例结果,实现功能用例与自动化用例在线联动;
MeterSphere 的 UI 测试模块支持在线编辑或 Selenium IDE 录制两种方式编写用例,基于页面对象模型,提供自定义指令和 “搭积木” 式的场景编排能力,复用性强。用户可以在本地或服务端进行 UI 用例执行,基于 Grid 的强大扩展能力,UI 测试也支持多节点分布式运行;
MeterSphere 的接口测试模块全面兼容 JMeter、Postman、Swagger 等数据格式,支持 IDEA 插件和 MeterSphere Chrome 浏览器插件直接导入 API 数据进行 API、接口用例以及接口场景的管理。接口用例和接口场景也可以一键生成性能测试用例,基于 JMeter 测试引擎完成性能测试;
MeterSphere v2.10 LTS 版本的测试计划模块支持同时添加不同项目(应用系统)的功能用例、接口用例、UI 用例和性能用例。测试计划自身支持手动执行、定时任务、Jenkins 插件触发等多种执行方式,并且能够在测试计划执行过程中在线生成多种用例类型汇总的测试报告。
自此,MeterSphere 平台实现了一个测试计划覆盖全部测试类型的应用场景,进一步提升了测试工作的集中化、规范化、自动化的执行能力和效率。
■ 测试管理能力增强
在 MeterSphere v2.10 LTS 版本中,测试计划功能进行了增强,覆盖功能用例、接口用例、UI 用例和性能用例。
测试计划执行支持串行和并行两种模式,同时支持配置失败重试机制,用户可以自定义重试次数以提升自动化测试执行的成功率,避免因网络、环境因素导致误报。
在 MeterSphere v2.10 LTS 版本中,用例评审功能进一步增强,支持多人评审模式。多人评审模式需要所有评审人参与评审活动,只有全部评审通过,用例的最终评审状态才会更新为 “通过” 状态。多人评审模式能够推动评审活动更加规范和严谨,最大程度上规避评审环节的相关风险。
■ 接口测试能力增强
在 MeterSphere v2.10 LTS 版本中,接口测试重点解决了 “API 发生变更一键更新接口用例” 的问题。
在 MeterSphere 平台中进行 API 变更,用户可以自定义同步要素将变更内容一键同步给用例,用例更新后引用该用例的场景也会同步更新。通过数据导入方式导致的 API 变更,系统会根据用户自定义的数据流入规则将符合条件的接口用例展示在工作台的待更新列表中,用户可以逐条或者批量同步 API 的指定信息或全部信息,将其更新至接口用例中。
■ UI 测试能力增强(X-Pack 增强包)
在 MeterSphere v2.10 LTS 版本中,UI 测试模块针对 Selenium 原生指令进行了进一步扩展,以覆盖特殊测试场景。例如,扩展后的拖拽指令支持从一个坐标位置到目标坐标位置,添加多个坐标位置可以覆盖绘图场景。
在 MeterSphere v2.10 LTS 版本中,UI 测试与项目环境正式打通,用户可以将设计好的自动化脚本在不同环境中执行,进一步提高 UI 测试用例的可复用性。
■ 性能测试能力增强
在 MeterSphere v2.10 LTS 版本中,性能测试实时报告的计算能力增强。将性能测试生成的 jtl 文件分成小段,分段计算结果,节省了磁盘空间和 IO 性能,覆盖了高强度、持续性的压测场景,同时也提升了报告生成的效率。
二、用户体验升级
■ 测试跟踪首页、接口测试首页 UX 交互升级
在 MeterSphere v2.10 LTS 版本中,接口测试模块首页示例图如下。首页 UX 交互设计将核心指标与明细指标分层展示,视觉上避免了因数据过多产生的视觉疲劳。
■ 测试跟踪模块功能用例 UX 交互升级
在 MeterSphere v2.10 LTS 版本中,测试跟踪模块的 “功能用例” 页面进行了全新的交互升级,整个页面采用轻量化设计进行了整体降噪,页面信息更加清晰易懂,操作流程更顺畅,用户体验得到了整体提升。
在测试跟踪模块的 “功能用例” 列表页中,对功能操作与信息展示进行了分区,页面中心位置展示用例列表信息,功能操作分布于页面的顶部和底部。
“用例详情” 页面布局进行了全新的调整,用例详情与用例其他关联信息以多个 Tab 的方式分类展示,用例基础信息展示在页面右侧,整体页面更加聚焦。
除此之外,MeterSphere v2.10 LTS 版本还进行了以下高频使用功能的体验优化:
■ 测试跟踪:高级搜索支持输入多个标签进行搜索;
■ 测试跟踪:脑图用例删除时增加二次确认;
■ 接口测试:接口测试批量添加请求参数时自动去空格处理;
■ 接口测试:支持通过路径搜索;
■ 接口测试:接口测试列表展示定时任务列;
■ 接口测试:固定单接口用例执行按钮的位置;
■ 接口测试:运行环境列表支持模糊搜索;
■ 接口测试:单步调试用例或场景步骤时响应内容自动展开;
■ 接口测试:接口 TEST 支持保留最近一次的执行记录;
■ 性能测试:测试报告增加图表单位展示;
■ 通用功能:标签字数过多时的展示优化。
三、系统架构升级
■ 系统架构升级为微服务架构
MeterSphere v2.10 LTS 版本采用了微服务架构,既能满足用户按需配置、水平扩展的需求,又能有效规避单个服务故障导致整体服务不可用的现象。
■ 平台扩展能力增强
作为一款一站式的持续测试平台,MeterSphere 既需要与各种周边系统进行集成对接,也需要支持各种不同协议的接口测试,灵活的插件体系可以很好地解决平台扩展性的问题。用户可以按需安装、开发各种形式的插件以覆盖不同场景的测试及对接需求。
MeterSphere v2.10 LTS 版本支持通过插件的方式与其他工具和系统进行集成。MeterSphere 的 Jenkins 插件可以很好地融入企业 DevOps 流水线,实现自动化部署和持续交付。在提升协作效率方面,MeterSphere 的 IDEA 插件可以将 HTTP 接口直接同步到 MeterSphere 平台进行管理。在统一项目管理方面,MeterSphere 支持与 JIRA、TAPD、禅道等主流项目管理工具集成,用户可以安装所需的插件实现测试用例与需求的关联,同时可以实现缺陷的双向同步。
除此之外,MeterSphere 也扩展了一些特殊协议类的插件,例如 WebSocket、MQTT、gRPC 等,用户可以安装所需的插件在 MeterSphere 平台进行这些协议的接口测试。
MeterSphere v2.10 LTS 版本支持的插件(部分)列表如下:
■ 性能优化
MeterSphere v2.10 LTS 版本对 UI 测试的执行策略进行了重新设计,解决了大批量 UI 测试用例执行时会导致内存泄漏的问题,降低了资源占用率,将 UI 服务的内存分配由 2GB 优化到 1GB,以满足更大批量测试任务,提升了 UI 测试的整体执行效率和成功率。
注:据深度使用 MeterSphere UI 测试模块(使用版本为 v2.8.0)的用户反馈,在整体资源配置不变的情况下,160 个 UI 场景并行执行,由原来的 120 分钟执行完成,提效至 33 分钟即可执行完成。
在 MeterSphere v2.10 LTS 版本中,针对高频使用的测试计划执行功能,从生成执行脚本到执行资源查询,到资源分配策略,再到最后的执行结果入库分片存储,每一个环节都进行了深度优化,提升了多个测试计划并行执行的效率。在实时生成测试报告的过程中,对测试计划报告涉及到的资源查询及统计算法进行优化,提高页面渲染效率,解决了用户反馈的大批量测试执行时的系列问题。
注:据深度使用 MeterSphere 测试计划功能(使用版本为 v2.9.1)的用户反馈,通过测试计划的定时任务并行执行超过 2000 个自动化测试用例进行核心场景的回归测试,均能稳定运行。
加载机制从实时获取优化为本地缓存加文件服务(MinIO)中按需获取。
除此之外,MeterSphere v2.10 LTS 版本还进行了以下常用功能的性能优化:
① 左侧模块树效率优化;
② 登录系统加载耗时性能优化;
③ 批量导出大数据量用例性能优化;
④ 测试计划批量关联大数据量用例性能优化。
■ 运行稳定性提升
用户对于 MeterSphere 平台的使用规模很多时候总会超乎我们的想象。在 MeterSphere v2.10 LTS 版本的迭代过程中,我们接触了很多大规模、高频次使用 MeterSphere 开展日常测试工作的案例,包括脑图模式下编辑大量功能用例,大批量的接口测试、UI 测试执行,高并发、高 TPS 的性能测试等众多使用场景,这些场景给 MeterSphere 带来了很大的挑战,但经过我们的不懈优化最终都达到了让用户满意的效果。
MeterSphere v2.10 LTS 版本不仅包含以上所有真实使用案例中的稳定性优化改进,还经过了我们长达三个月的内部测试和部分用户的灰度测试。
服务运行列表:
四、系统安全升级
作为一款开源的企业级软件,产品的安全性至关重要。MeterSphere 开源项目组非常重视产品的安全性,自项目发布以来,我们一直与第三方的安全测试团队及个人保持着紧密沟通,在第一时间修复反馈给我们的安全性问题,并在修复后即时通知用户进行处理。
在 MeterSphere v2.10 LTS 版本中,我们着重处理了由接口测试自定义脚本带来的安全风险。自定义脚本功能是接口测试中十分常用也十分重要的功能,该功能极大地提高了接口测试的灵活性,拓展了 MeterSphere 平台的能力边界。但也由于这样的特性,导致接口测试自定义脚本的执行可能会带来一些安全风险,例如在脚本中引入死循环、误操作了服务器上的重要文件等。针对这种情况,我们在当前版本中进行了如下处理来规避潜在的安全风险。
■ 接口测试禁用本地执行
在之前的版本中,接口测试提供了本地执行(即在接口测试服务中直接执行)和资源池执行两种方式。MeterSphere v2.10 LTS 版本禁用了接口本地执行方式,与性能测试一样,当接口调试或运行时会在指定的资源池上运行,同时资源池节点上的 node-controller 服务默认以容器方式运行。这样一来,即便存在上述用例设计不当的问题也只会影响到对应资源池节点上的 node-controller 容器,接口测试主体服务还可以正常使用,node-controller 所在服务器也不会受到影响。
注意:当存在多个可用的测试资源池时,可以选择 “项目设置”→“应用管理”→“接口测试”,在菜单中配置接口执行的默认资源池。
■ 测试用例脚本预警通知
除了禁用本地执行,为接口测试提供沙箱执行环境外,MeterSphere v2.10 LTS 版本还增加了主动预警机制。当用户保存或修改的用例中包含脚本的内容时可以配置指定用户审核,当系统检测到包含脚本的用例时会触发系统消息通知,指定审核人对该脚本进行审核。
除了上述针对执行自定义脚本采取的安全措施外,我们在此期间还修复了以下公开漏洞,仍在使用受影响版本的用户请尽快进行升级。
总结
在 MeterSphere 开源项目创立的三年时间里,MeterSphere 开源项目组累计收到了超过 1500 名社区用户提交的 7800 多个 GitHub Issue。MeterSphere v2.10 LTS 版本经历了 10 个功能版本的迭代,期间有来自全国 19 个城市的 123 名用户参与填写了用户使用调查问卷进行反馈,有 15 家企业的测试团队同 MeterSphere 的产品团队进行了累计 1350 分钟的深度沟通,帮助 MeterSphere 开源项目组进一步完善产品功能和使用体验。
感谢广大社区用户和企业客户的信任和支持。MeterSphere 开源项目组会坚守初心,做出一款好用的工具平台,帮助企业中不同规模的测试团队落地 “持续测试” 理念,加速高质量的软件交付,推动中国测试行业整体效率的提升。
因为热爱,快意成长。