社区分享|云智天下的自动化测试落地与演进

发布于 2022年11月14日

编者注:在2022年10月22日举办的“2022 MeterSphere开源持续测试平台城市遇见· 成都站”活动中,云智天下研发经理江泽东分享了题为《云智天下自动化测试落地与演进》的主题演讲。以下内容根据本次演讲整理而成。

成都云智天下科技股份有限公司(以下简称为云智天下)成立于2014年, 是一家基于云网融合技术提供智慧场景运营整体解决方案的互联网高新技术企业。公司主要在智慧城镇运营服务、智慧宽带服务及数据中心增值服务三大领域为政府、基础电信运营商、商业机构、个人用户提供前期咨询、方案设计、核心软件开发、系统集成及后期运营维护等综合解决方案。其平台化产品包括智慧文旅、数字乡村、智慧社区、智慧公交等,并且提供智慧工地、智慧跑道等行业解决方案。

图片
云智天下研发经理 江泽东

一、业务背景

云智天下从2016年启动智慧社区平台建设。团队没有沿用传统的大单体架构,而是逐步将其转变为以数据中台和业务中台为核心的服务架构,以缓解运营管理与技术平台之间的压力,为产品赋能。

云智天下智慧社区的基础架构如下:

图片

随着智慧社区业务架构的演变,架构中具体的业务模块数量出现了呈现几何倍数的增长;它们之间的数据调用、接口调用数量同样呈几何倍数的增长。这为云智天下的测试团队带来了很大的挑战,具体如下:

1. 对测试质量的要求高

■ 数据中台中的数据是互通的,意味着业务稳定性、边界业务场景测试质量均需要得到保证;

■ 测试任务繁重,导致测试逃逸的频率变高;

■ 对测试管理能力、测试效率、测试质量的提升势在必行。

2. 自动化测试建设的必要性高

■ 业务应用中API接口数量增多,且变更频繁;

■ 包括生产环境、测试环境等在内的测试环境多样化,导致业务应用面临大量的回归测试;

■ 手工测试的投入占比过大,但所获得的收益不高。

3. 测试工具与测试团队的契合度要求高

■ 需要考虑到与团队技术栈的契合度,来判定测试工作是需要团队自己编写测试代码,还是直接使用测试工具;

■ 已知目前团队主要的测试需求为接口自动化测试和性能自动化测试;

■ 需要分别考虑选择自研测试代码、开源测试平台、收费测试平台的建设资金投入;

■ 团队有较为紧迫的项目化管理解决方案需求。

二、测试产品选型

云智天下目前使用的是微服务架构,对全面建设自动化测试的需求较高;且因为采用敏捷开发模式,需求变更相对来说会更加为频繁,所以需要进行较多API接口测试。

以前团队主要使用Python自行编写自动化测试脚本。但是代码编写的方法在测试工作中有很多不便之处:

■ 代码要求过高:脚本编写需要测试人员有一定代码素养,这也导致了招聘难度大,人工费用过高;

■ 学习成本过高:自动化测试代码的学习难度大,学习花费时间长;

■ 不便于集成:需要集成Allure等测试报告工具后,才能完成测试报告图表的配置;

■ DevOps建设不足:自动化构建消息的机制不够简便。

后来,云智天下的测试团队经过多方考察,选用了MeterSphere一站式开源持续测试平台。相比于自研测试代码,MeterSphere平台的优势包括:

■ 简单易操作:MeterSphere平台操作简单、易上手,可通过拖拉拽轻松实现界面化的场景编排,平台自带的脚本可读性高;

■ 开源可控:MeterSphere的开源社区生态建设完整,其中有许多社区工作人员和同行业人员可以进行深入交流。且目前“开源”是国家正在提倡的创新概念,为了积极响应国家号召,许多客户都会更加看重开源平台的使用情况;

■ 自动化运维:MeterSphere平台自带定时任务功能,并能自动生成优美的测试报告,简化运维步骤,降低运维难度;

■ DevOps建设:MeterSphere平台可以和云智天下使用的办公软件钉钉直接打通。在自动化测试结束之后,MeterSphere可以将生成的测试报告通过钉钉自动推送给测试人员,提高日常测试效率。

云智天下以前使用JMeter进行接口测试和性能测试。但是测试工作中仅使用JMeter会有以下的不足之处:

■ 依照Master-Salve模式(主从设备模式)配置时,会存在一定的交互压力;

■ 主从部署方案的配置过于繁琐;

■ 大并发性能压测的扩展性差;

■ 生成的压测报告不够全面,需要额外配置Allure自动化测试报告工具,以补充生成报告内容。

通过引入MeterSphere平台,云智天下弥补了以上测试工作中的不足之处:

■ 由Node-Controller(节点控制器)配置资源池,弹性部署;

■ MeterSphere的容器化部署配置更为轻简;

■ MeterSphere性能测试的性能并发扩展性强,可以满足日常测试工作中的性能发压需求;

■ MeterSphere一键生成的压测报告信息更加丰富美观,便于测试人员分析性能瓶颈。

整体而言,MeterSphere开源持续测试平台将接口测试、性能测试进行了统一的集成,更加方便进行团队管理和项目管理。

在MeterSphere平台上所进行的完整测试流程如下:

① 场景编排:通过MeterSphere平台可以统一进行测试的场景管理与环境配置,通过拖拉拽的方式轻松地进行测试步骤的编排。MeterSphere提供了丰富的测试组件,可以方便地进行场景嵌套与拼接,也可通过平台内自带的Mock功能及JMeter函数进行场景的调试;

② 场景自动化:在MeterSphere平台可以实现场景的自动化,手动或定时执行包括API调用、钉钉办公软件集成等在内的自动化测试,并将之转化为对应的性能测试;

③ 性能测试脚本:MeterSphere平台有良好的性能测试脚本管理能力及定时任务调度能力,可以将测试场景打包为系统测试脚本,对一些关键业务接口进行性能测试。MeterSphere有条件实现扩展性发压策略配置,并能通过优美的压测图表直接展示压测结果;

④ 报告发送:MeterSphere可以通过钉钉办公软件将测试结果报告发送给对应的工作人员。

三、基于MeterSphere的测试实践

云智天下基于MeterSphere平台的测试工作覆盖了包括智慧小镇、社区产品、智慧公交、智慧巡检等在内的公司大多数业务版块。借助MeterSphere开源持续测试平台,测试团队展开接口测试与性能测试,大幅提升了测试效率。

目前云智天下主要有5个测试项目,接口在1800个以上,接口自动化场景220个,达成了自动化场景的100%全覆盖。团队测试人员共3人,均正在学习MeterSphere的使用,并通过MeterSphere进行相应的测试工作。

图片

MeterSphere开源持续测试平台为云智天下的测试工作带来的正面影响主要有以下几方面:

1. 实现测试项目在平台的统一管理

■ 测试团队通过MeterSphere实现了测试项目和团队人员的统一协作;

■ 将MeterSphere接入企业DevOps流水线后,可以实现测试定时任务自动触发,帮助团队实现测试左移。同时,MeterSphere作为DevOps流水线中的关键环节,也可以将自动化测试的结果与钉钉对接,形成数据联动。

图片

2. 实现主业务的接口测试、性能测试全覆盖

■ MeterSphere满足了公司业务的接口测试需求,使得接口覆盖率有所提升;

图片

■ MeterSphere可以满足项目对于性能测试的需求,测试所需的配置简单,且能生成优美的结果报告图表,帮助团队掌握业务关键性能指标。

图片

3. 优化工作方式,提升测试效率

■ 团队测试工作全面迁移到具有易编排、高效执行等特点的MeterSphere平台后,相较于代码编写的测试方式,自动化测试的整体周期大幅缩短,人效提升高达30%;

图片

■ MeterSphere的系统管理能力可以协助项目负责人进行测试人员的个人效能统计;

■ MeterSphere可以支持团队测试报告的统一管理;

■ 在MeterSphere平台,团队测试工作的内容与进度更加透明、系统,方便管理者把控测试项目质量情况。

四、未来规划与期望

云智天下的测试团队正在计划,在一些长期稳定维护的项目中尝试使用MeterSphere平台的UI测试模块进行日常的冒烟测试、回归主场景。

在继续深度使用MeterSphere平台的同时,云智天下也希望MeterSphere平台能够不断进步,提供更加丰富的功能和组件。比如,在性能测试方面,希望MeterSphere能够提供更加细化的性能测试展示结果,引入更丰富的组件及图表,来帮助测试团队更好地展开测试结果分析。