6 月 24 日,MeterSphere 一站式开源持续测试平台发布 v1.20.8 LTS 版本。

本文将分享如何集成 MeterSphere 一站式持续测试平台与阿里云云效 DevOps 平台,帮助企业快速补足 DevOps 流水线的最后一公里。

一、持续测试:DevOps 最后一公里

说起 DevOps,大部分人的第一反应或者说映入脑海的就是 CI/CD(Continuous Integration/Continuous Delivery,即持续集成与持续交付)。但是,要想构建能够支撑起持续交付的软件研发能力,与之相辅相成的软件测试能力必不可少。

正如《持续测试白皮书》(“软件质量报道” 公众号与 MeterSphere 项目组联合撰写)在《持续测试产生的背景与意义》章节中所说:“目前,大家普遍认为持续测试是指软件持续交付流水线中的一种可随时开展且具有连续性的测试自动化测试流程。它基于强调全方位的测试能力,以及测试、开发和运维良好的融合自动化测试能力,但它更关注利用自动化测试能力在持续交付流水线全过程中及时、准确地给团队提供当前版本的质量和使用体验反馈,从而切实保障软件持续交付过程中的质量”。

从经典的持续交付莫比乌斯环中也可以解读出 “持续测试应该作为一项基础和持续的测试活动、贯穿于整个软件交付周期之中。” 企业开展持续测试能够帮助企业尽快获得软件发布后业务风险的反馈。

由中国信息通信研究院牵头撰写的全球首个 DevOps 标准,即《研发运营一体化(DevOps)能力成熟度模型》中第 3 部分——《持续交付》章节中也阐明了,测试管理是持续交付七大能力域之一。

参照《研发运营一体化(DevOps)能力成熟度模型》要求,软件行业先后引入了 SCRUM 敏捷软件开发模型、持续构建、持续部署、持续监控等一系列最佳实践。而不同于 CI/CD 工具集,例如 GitLab 或者 GitHub 成为代码库标准,Jenkins 成为持续集成工具主流。

而测试本身,在 DevOps 流程体系中并没有一个平台或者工具完成所有的测试类型,用户会采用不同的工具完成不同的测试类型。乃至同一种测试都采用了不同的工具,比如接口测试有采用 Postman、JMeter、pytest 等。而不同的测试工具都无法非常适配地嵌入集成到 DevOps 流程体系中,从而导致了测试速度、测试反馈等方面的滞后问题。

相比于其他环节,测试领域无论从工具的集成还是最佳实践等方面,都已经成为企业落地敏捷及 DevOps 实施的最大瓶颈之一。

二、阿里云云效 DevOps 平台简介

阿里云云效是云原生时代一站式 BizDevOps 平台,支持公共云、专有云和混合云多种部署形态。

云效 DevOps 提供项目协作、代码管理、持续交付流水线、云原生应用交付、在线 IDE、制品仓库、测试管理、知识库 、效能洞察九大产品。

详情可进入链接查看:
https://www.aliyun.com/product/yunxiao?channel=yy_sem_key_yunxiao&utm_content=se_1009966124

三、MeterSphere 开源持续测试平台简介

MeterSphere 是一站式开源持续测试平台, 涵盖测试跟踪、接口测试、UI 测试、性能测试、 团队协作及融入 DevOps 等功能,全面兼容 JMeter、Postman、Swagger、Selenium 等主流开源标准。

MeterSphere 的五大功能模块如下图所示:

■ 测试管理:远超 TestLink 的使用体验,覆盖从编写用例到生成测试报告的完整流程;

■ 接口测试:媲美 Postman 体验 ,接口管理、Mock、多协议支持、场景自动化,你想要的全都有;

■ UI 测试 :基于 Selenium 浏览器自动化,高度可复用的测试脚本;无需复杂的代码编写,人人都可开展的 UI 自动化测试;

■ 性能测试:兼容 JMeter,支持 Kubernetes 和云环境,轻松支持高并发、分布式的性能测试;

■ 团队协作、融入 DevOps:用户管理、租户管理、权限管理、资源管理,无论团队规模如何,总有适合的落地方式。

四、为什么需要对云效和 MeterSphere 进行集成?

基于云效 DevOps 平台介绍描述,云效 DevOps 平台集成需求管理、代码管理、流水线、制品仓库、应用交付管理、测试管理等。

但是在实际的使用中,在测试功能域中云效只包含了面向开发人员的单元测试和测试用例(手工测试)管理(可以给用例标记不同的测试类型,例如接口自动化,但是无实际作用)。如下图所示,这样的功能对于一些应用交付测试是远远不够的。


▲ 流水线中的单元测试


▲ 测试计划中的测试用例

因此,为了更好地在 DevOps 环节中引入自动化测试,需要引入测试平台。能够将测试作为一项服务来提供,而不仅仅是测试工具进行使用。

对企业而言,无论产出比和对整体测试人员使用的友好度(并不是所有测试人员都可以基于 Python 写接口自动化)方面,MeterSphere 开源项目在业内都有着不错的口碑。所以 MeterSphere 和云效进行有效的集成,可以打通云效 DevOps 中测试最后的一个环节,实现 “一加一大于二” 的效果。

五、MeterSphere 与云效集成的具体操作流程

本次实操 Demo 重点依赖云效的流水线,实操环境采用了 GitHub 代码库、阿里云云效流水线、阿里云个人镜像仓库、本地 Jenkins 环境、一台本地虚拟机(用于自动化部署)、MeterSphere 平台、MeterSphere 平台的 Jenkins 插件。

本次模拟场景如下:

■ MeterSphere 部署

MeterSphere 官网提供了一键部署脚本:curl -sSL
https://GitHub.com/metersphere/metersphere/releases/latest/download/quick_start.sh | sh

具体其他部署详见 MeterSphere 官网:
https://metersphere.io/docs/quick_start/quick_start/

■ MeterSphere Jenkins 插件部署

  1. GitHub 上下载 MeterSphere Jenkins 插件 :
    https://GitHub.com/metersphere/jenkins-plugin

  2. 在 Jenkins 的插件管理页面,上传并安装下载好的 HPI 插件包;

  3. 插件安装后,在指定的 Jenkins 构建任务中,添加 “MeterSphere” 类型的构建步骤;

根据图示进行配置,填写认证信息并选择需要触发执行的测试计划(本文测试计划名称为 MeterSphere-demo-testplan)。

■ 云效具体配置步骤

  1. 开通阿里云云效产品使用

  1. 新建与配置流水

① 新建流水线;

② 选择空白模板的流水线;

③ 添加代码源:流水线中添加流水线 GitHub 代码仓库源(提示需要 GitHub 授权),选择 GitHub 的命名空间、仓库和分支;

④ 添加构建:选择镜像构建并推送至阿里云镜像仓库个人版,选择镜像仓库(需要提前在阿里云区域中开通镜像仓库),填写 Dockerfile 路径(在 GitHub 代码库中需要包含 Dockerfile 文件,详见文末 GitHub 样例),配置企业微信通知(需要提前创建企业微信助手的 WebHook);

⑤ Docker 部署:选择主机组(需要准备可以连接到互联网一台主机,按照提示安装阿里云的 Agent),编写部署脚本;

⑥ 触发 MeterSphere 自动化测试:填写安装了 MeterSphereJenkins 插件的 Jenkins Master 信息,填写 Job 名称(本次实践名称为 MeterSphere-demo-testplan)。

备注:Jenkins 实例全局安全设置中需关闭 “防止跨站点请求伪造” 选项,不然此部署会失败。
https://cloud.tencent.com/developer/article/1941884(竟然是腾讯云的社区贴)

整体的流水线如下图所示:

■ GitHub 配置

  1. GitHub 示例项目;

  1. 查看云效流水线中的 WebHook;

  1. GitHub 代码库中配置 WebHook,“Let me select individual events” 选项中勾选 “Pull requests”。

六、最终集成效果展示

编辑 GitHub 中 index.heml 中的文件信息,然后 commit changes 提交;

显示已经触发流水线,云效流水线中已经正在运行;

点击流水线名称可以查看详细运行信息;

可以查看每个步骤执行情况;

同时企业微信已经收到每个阶段的相应的消息通知;

打开自动化部署系统页面,内容信息已经更新为代码修改的内容。

可以在 MeterSphere 平台中消息中心,配置详细的测试结果企业微信通知;

点击企业微信的 MeterSphere 报告详情连接或者登录 MeterSphere 平台,可以查看具体的报告内容和测试结果。

七、总结

结合阿里云云效 DevOps 平台和 MeterSphere 一站式开源持续测试平台,企业可以快速补足 DevOps 流水线的最后一公里。

当然,本文只是一个在 Demo 环境的操作演示,并非正式的生产环境,供大家参考与思路参照。比如在触发自动化测试前,在流水线中加入自动化检测 “自动化部署是否已经完成” 的检测,只有检测到部署完成后才会进行自动化测试(本文只是在脚本里面加了下 sleep )。不同的企业可以结合自己的研发、交付、测试要求,将 MeterSphere 开源持续测试平台串联到自己的交付流水线中。


↙↙↙阅读原文可查看相关链接,并与作者交流