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. 开通阿里云云效产品使用
2. 新建与配置流水
① 新建流水线;
② 选择空白模板的流水线;
③ 添加代码源:流水线中添加流水线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示例项目;
2. 查看云效流水线中的WebHook;
3. GitHub代码库中配置WebHook,“Let me select individual events”选项中勾选“Pull requests”。
六、最终集成效果展示
编辑GitHub中index.heml中的文件信息,然后commit changes提交;
显示已经触发流水线,云效流水线中已经正在运行;
点击流水线名称可以查看详细运行信息;
可以查看每个步骤执行情况;
同时企业微信已经收到每个阶段的相应的消息通知;
打开自动化部署系统页面,内容信息已经更新为代码修改的内容。
可以在MeterSphere平台中消息中心,配置详细的测试结果企业微信通知;
点击企业微信的MeterSphere报告详情连接或者登录MeterSphere平台,可以查看具体的报告内容和测试结果。
七、总结
结合阿里云云效DevOps平台和MeterSphere一站式开源持续测试平台,企业可以快速补足DevOps流水线的最后一公里。
当然,本文只是一个在Demo环境的操作演示,并非正式的生产环境,供大家参考与思路参照。比如在触发自动化测试前,在流水线中加入自动化检测“自动化部署是否已经完成”的检测,只有检测到部署完成后才会进行自动化测试(本文只是在脚本里面加了下sleep )。不同的企业可以结合自己的研发、交付、测试要求,将MeterSphere开源持续测试平台串联到自己的交付流水线中。