写点什么

从零到一:保利威自动化测试体系实践

  • 2025-02-11
    北京
  • 本文字数:4949 字

    阅读完需:约 16 分钟

大小:2.37M时长:13:49
从零到一:保利威自动化测试体系实践

本文深入剖析了保利威如何基于创新性的 “双螺旋模式”、自研测试工具和 “先保障质量,再提升效率” 的核心理念,在 SaaS 业务快速发展背景下,构建高效、可扩展的自动化测试体系,从而更好地服务于业务需求,实现降本提质的目标。我们面临的挑战是如何解决测试资源分配不均、测试效率低下、自动化测试推进缓慢等问题。为应对这些挑战,保利威创新性地提出了 “双螺旋模式”,并自主研发了覆盖接口、性能和 UI 的全方位自动化测试工具链,结合 CI/CD 实现了测试的持续集成。本文将重点介绍保利威如何基于 “双螺旋模式” 构建高效的自动化测试体系,以及如何通过技术手段提升测试效率和覆盖率,最终取得了在回归提速、覆盖率提升和拦截 Bug 等方面的显著成果。本文将为业界提供可参考的 SaaS 自动化测试体系建设经验。

 

过去的问题现在的思考

背景与挑战

在 2018 年,随着保利威 SaaS 业务的快速增长,测试团队面临着巨大的压力,自动化测试推进缓慢,主要表现在以下几个方面:

  • 测试人员能力不足: 测试团队成员普遍缺乏自动化测试的编码能力,难以应对保利威复杂的 SaaS 业务逻辑。同时,部分测试人员对自动化测试的价值和意义认识不足,导致自动化测试推进缓慢。例如,直播业务模块的回归测试,由于需要手工执行,每次都需要耗费大量的测试人力和时间。

  • 测试资源分配不均: 各产品线各自为战,都希望优先推进自动化测试,导致测试资源竞争激烈,资源在 A 项目和 B 项目之间频繁切换,每个项目测试效率降低了 20%。

  • 自动化工具缺失: 缺乏统一的自动化测试平台和工具,导致测试用例无法有效复用,测试效率较低,并且维护成本高昂,例如,维护一次回归测试用例需要花费 50 小时,测试效率低下导致版本发布周期延长,严重影响了业务发展,无法快速响应市场需求,影响了客户的体验。

 

核心理念:交付效率与质量的平衡



图一:保利威的交付效率与质量平衡策略

 

面对交付效率和交付质量的矛盾,保利威团队得出结论:

先保障质量可控,再提高过程效率,通过节省下来的资源去投入到提高质量的过程中

这一理念指导了保利威自动化测试体系的建设,确保在追求效率的同时,不以牺牲产品质量为代价,从而保障业务的稳定性和客户的满意度。

 

自动化测试落地实践

为了实现上述目标,保利威从协同模式、人员能力、技术手段等多方面进行了改进。

双螺旋模式:业务测试与测试开发的协同



图二:保利威双螺旋模式

 

为了更好地保障交付质量和效率,保利威引入了“双螺旋模式”。该模式的核心是将业务测试和测试开发有机结合,构建双螺旋上升的质量保障体系:

  • 测试开发负责旧功能回归: 测试开发团队不再专注于新功能测试,而是深入理解业务,利用技术手段对旧功能进行自动化回归测试,从而提高回归效率。

  • 业务测试负责新功能测试: 业务测试团队则专注于新功能的首轮测试,确保新功能能够快速且有质量保障地交付。

  • 新旧功能的交替: 当新功能经过首轮测试并趋于稳定后,其测试用例将沉淀为旧功能,并由测试开发团队将其转换为自动化用例。测试开发团队对旧功能的回归交付质量负责。

 

这种模式下,测试开发团队专注于构建质量保障的底座,而业务测试团队则可以更加专注于新功能测试,两者形成协同,共同提高交付效率和质量,确保测试工作真正服务于业务目标。

 

业务测试从经验型转变到技术型

仅仅依靠测试开发团队对旧功能进行自动化测试是不够的。业务测试团队仍然承担着每周大量的交付工作,为了提高新功能的交付和回归效率,节省时间投入到更深层次的测试用例设计中,业务测试转型势在必行。

 

为了更好地适应快速迭代的业务需求,业务测试团队必须从经验型向技术型转变,掌握自动化测试能力,以应对繁重的测试任务。

 

保利威通过内部培训、技术分享、项目实践 等方式,帮助业务测试人员掌握基础的自动化测试技能。 例如,业务人员可以独立完成简单的自动化测试用例编写,并运用自动化工具提升测试效率。业务测试人员通过掌握自动化测试技能,可以更好地理解业务需求,从而设计出更具针对性和业务价值的测试用例,提升测试的有效性,并可以把精力放在探索更深入的业务场景中。

随着技术的不断创新和交付模式的不断改变,保利威的测试团队需要尽快从交付型经验质量向实时技术型质量方向转移。

 

传统的交付型质量,将测试作为一道道关卡,以任务的形式分布在开发提测和项目发布时,这种方式存在不同角色之间的过多交互,只能起到单点质量保障。实时质量的目标是:将质量手段以模块、组件乃至系统化的方式嵌入到业务应用中,形成实时保障质量的能力。例如,引入自动化技术,首先构建夯实的自动化测试底座,通过 CI/CD 形成核心保护层,然后拓展到多个产品应用场景,落地质量保障。

 

自动化测试达成标准

在自动化测试投产之前,保利威制定了一系列的标准,确保自动化测试的有效性和可靠性,具体标准如下:

维度

说明

可观测

通过 Grafana + Prometheus 构建监控大盘,实现 UI 和 API 测试的实时可视化,测试人员可以通过大盘,实时了解测试的进度和结果。我们还会在办公区搭建测试展示机架,实时展示测试进展。从而快速定位问题,减少问题的排查时间。

即时反馈

通过机器人将测试运行报错和运行结果,即时通知到相关人员,提高问题响应效率。测试运行失败时,会通知到对应负责人,方便及时定位和修复问题,从而降低问题的风险。

易上手

使用 低代码测试平台,通过录制和在线设计功能,在测试过程中快速完成自动化测试用例的基础设计,降低自动化测试门槛,测试人员通过简单的拖拽操作,就可以完成测试用例的编辑。从而降低人力成本。

稳定

自动化测试用例需要支持上千次的稳定执行,从而保证测试的可靠性。为了保障用例的稳定性,会对用例进行定期维护和优化,并采用数据驱动的方式管理测试数据,从而避免频繁维护,降低维护成本。

安全

测试用例在本地执行,测试数据在本地存储,并进行定期备份,测试数据在云端进行加密,从而保证测试数据安全。测试结果数据会加密存储,防止数据泄露。我们会定期进行安全扫描,确保测试平台没有漏洞。从而降低由于数据泄露带来的风险。

识别力度可调

自动化测试框架提供灵活的元素识别策略和容错机制,从而提高自动化测试的成功率,比如可以通过元素ID、xpath、css 等多种方式进行元素定位,并可以通过超时时间设置来提高用例的鲁棒性。

调度稳定性可扩展设备

支持分布式执行,根据实际需求动态扩展测试设备,从而提高测试执行效率, 通过分布式调度,可以并行执行大量的测试用例。 我们还使用了 Docker 和 Kubernetes 进行环境的管理和部署,从而方便测试人员快速搭建测试环境。

自带容错

自动化测试框架提供内置的容错机制,能够在测试执行过程中自动处理一些异常情况, 比如,如果某些测试用例执行失败,可以重试执行,并自动记录错误日志。

表一:自动化测试标准

 

自动化测试投产实战

BaaS 服务:业务自动化测试服务

为了长远发展,保利威质量团队提出了分层 BaaS(Business-automationtest-as-services)业务自动化测试服务的目标。该服务的核心是将测试资源和能力进行平台化、服务化输出,能够有效降低测试成本、提高测试效率。该服务的核心是打通业务中心的测试用例库建设,关联分层用例,通过分析研发代码变更影响面,精准推荐测试用例进行持续构建。

 

  • 分层用例: 将测试用例按功能模块和业务重要性进行分层,例如核心业务流程、关键功能点、边缘功能等。

 

  • 代码变更影响分析: 通过分析代码变更,找出受影响的功能模块,从而精准地执行相关的测试用例。

 

  • 持续构建: 通过 CI/CD 流程,将自动化测试集成到日常开发流程中,实现持续测试。

 



图三:保利威 BaaS 服务架构

 

工具和平台建设

业界提出的 TestPyramid 测试金字塔

在自动化测试领域,业界普遍采用测试金字塔模型来指导测试策略的制定。测试金字塔模型从下往上分为 Unit 测试、Service 测试和 UI 测试三个层次,层次越低,测试的执行速度越快,成本越低。保利威在自动化测试体系建设中,参考了测试金字塔模型,并结合自身业务特点,构建了覆盖 UI、接口和性能的全方位自动化测试能力。Unit 测试主要用于测试代码的最小单元,例如函数或者类,它具有执行速度快、成本低的特点,通常由开发人员来完成。Service 测试主要用于测试服务与服务之间的交互,包括 API 测试、集成测试等,它能够保证不同服务之间的协同工作,通常由测试人员来完成。UI 测试主要用于测试用户界面,包括功能测试、兼容性测试等,它可以保证用户体验,通常由测试人员来完成。

  


图四:测试金字塔模型

 

行业现状

目前,业界在自动化测试方面仍面临诸多挑战,例如测试成本高、维护困难、自动化覆盖率低等问题。同时,在多终端多角色场景下,业界常见的自动化测试方法也存在诸多不足,例如,测试工具难以覆盖复杂的交互场景,测试数据难以管理,测试用例维护成本高等。如上图所示,API 自动化测试和 UI 自动化测试是效率提升最高的两种方式,保利威基于这些行业现状分析,投入资源研发了接口录制回放平台、UI 自动化平台、和 Agent 自动化底座,以应对这些挑战。



图五:工作中使用的效率提升方式

 

接口录制回放平台

该平台能够帮助测试人员快速生成接口自动化测试用例,无需编写大量代码,极大地提升了测试效率。平台支持 RESTful API 和 WebSocket 协议 的录制和回放,并支持数据驱动和参数化的管理, 从而降低了测试人员的技能要求,降低了人力成本。

HTTP API 录制回放

通过浏览器 UI 操作录制 API 数据,降低自动化用例编写难度,并支持对动态参数的处理和复杂鉴权的设置。




图六:接口录制回放平台-HTTP API 录制回放

 

长连接 Socket 录制回放

自研服务端录制工具,拦截通讯事件,快速生成回放数据。

  • 优势: 降低用例使用和维护成本,隔离 UI 变化的影响,纯 API 回放速度快。

  • 录制命令示例: java -cp ./analysis-client-1.0.jar com.kang.ChromeRecorder group={录制组命名};role={录制的角色命名};init={录制的初始化页面}

 



图七:接口录制回放平台-长链接 Socket 录制回放

性能压测平台

该平台基于 JMeter 构建,可以模拟高并发场景,对系统进行负载测试、压力测试和容量测试,并实时监控性能指标。该平台帮助测试人员提前发现系统性能瓶颈,从而避免了线上事故,降低了损失。

  • 监控链路指标: 平台提供全面的性能指标监控,包括 CPU 利用率、内存占用率、响应时间、吞吐量等。

  • 性能测试监控大盘: 提供可视化的大盘,方便用户实时查看性能测试结果。


图八:性能压测平台-性能压测平台架构

 


图九:性能压测平台-性能监控链路指标

监控链路指标说明



性能测试监控大盘

提供可视化的大盘,方便用户实时查看性能测试结果,支持对性能瓶颈的快速定位和分析。




Agent 自动化底座服务

Agent 底座概述

基于保利威多终端、多角色互动等复杂业务场景,构建基于代理模式的分布式自动化技术架构。每个 Agent 部署成微服务,模拟多用户、多终端使用场景,支持多种客户端。Agent 底座基于 Docker 和 Kubernetes 构建,实现 Agent 的动态注册和发现,并通过消息队列实现 Agent 之间的通信,同时实现了测试任务的分布式调度和执行。 该平台支持多终端多角色场景的测试,从而覆盖更复杂的业务场景,提升了测试的覆盖率。



图十一:Agent 自动化底座架构

 

UI 自动化测试平台

该平台提供了图形化界面,方便用户编写和管理 UI 自动化测试用例。

  • 特点: 降低 UI 自动化门槛,通过录制或者图形化编辑用例,支持多种元素定位方式(如 ID、XPATH、CSS)和多浏览器多环境的测试。

 





图十二:UI 自动化测试平台

 

可观测:测试能力成长

保利威通过代码变更覆盖率来衡量自动化测试的有效性,并不断调整测试用例设计。通过分析代码变更,找出未被测试用例覆盖的部分,及时补充用例,从而达到测试覆盖率的提升。通过以下方式来实现可观测性:

  • 代码变更覆盖度分析: 通过分析代码变更,找出未被测试用例覆盖的部分,及时补充用例。

  • 测试用例与代码关联: 将测试用例与代码模块关联起来,方便查找和管理。

  • 自动化测试平台数据可视化: 提供可视化报表和图表,方便用户了解测试覆盖率、测试结果等。

代码变更覆盖度调整用例设计






图十三:可观测-代码变更覆盖度调整用例设计

 

自动化测试收获

  • 回归提速: 自动化测试大大缩短了回归测试的时间,每次版本发布平均回归时长节省 50 小时,大大加速了版本发布周期,提高了业务的响应速度 。

  • 回归覆盖率提升: 自动化测试覆盖了更多的功能点,覆盖率从 10% 提升到 70%, 降低了线上缺陷的风险,提升了用户满意度。

  • 自动化拦截 Bug: 自动化测试有效地预防了线上 Bug 的发生,提前拦截了 3 个严重 Bug,避免了线上事故,保障了业务的稳定运行,避免了业务损失。

回归提速效率数据



图十四:回归提速数据

回归覆盖度提升数据



图十五:回归覆盖率数据

自动化测试预防拦截 bug



图十六:某次回归自动化拦截 Bug 数据

 

写在最后

保利威的自动化测试实践,并非一蹴而就,而是在不断探索和实践中逐步完善的。通过“双螺旋模式”和各种自动化工具的引入,保利威构建了高效的自动化测试体系,持续稳定跑了超过 20 个月,为产品的质量提供了有力的保障,不仅保障了当前业务的质量,更为未来业务发展奠定了坚实的基础。

 

未来,保利威将积极探索 AI 驱动的智能测试,实现测试流程的智能化和自动化,并构建更加完善的质量体系,以适应不断变化的业务需求,具体目标包括:

  • 更智能化的测试: 引入 AI 技术,实现智能化的测试用例生成和执行,提高测试效率和覆盖率。例如,利用 AI 自动生成测试用例,并基于 AI 进行缺陷检测和分析,从而更好地服务于业务,并可以降低测试成本。

  • 更全面的覆盖: 进一步拓展自动化测试的范围,覆盖更多的业务场景和边缘功能,减少漏测风险,比如覆盖更多的移动端业务和复杂的网络环境。

  • 更完善的质量监控体系: 构建更完善的质量监控体系,实现质量的实时可视化,及时发现和解决问题,并能根据数据分析,自动优化测试策略。 


作者介绍:

乐少是一位资深技术和管理专家,专注于软件研发、测试和项目管理。曾在网易等知名互联网公司担任重要技术岗位,主导研发效能提升和自动化测试质量平台的建设。在保利威推动 SaaS 行业企业直播质量测试平台的建设,助力企业降本增效。他注重实践与创新,以结果为导向,通过优化流程和引入新技术推动团队高效发展。乐少在 InfoQ 等平台分享的经验,特别是在研发效能、质量管理和项目管理领域的实践成果,对行业产生了积极影响。

2025-02-11 17:009164

评论

发布
暂无评论

618 技术特辑(一)不知不觉超预算3倍,你为何买买买停不下来?

华为云开发者联盟

电商 图数据库 知识图谱 618 图引擎服务

校友会小程序开发笔记二:功能需求设计

CC同学

小程序云开发 校友录小程序 校友会小程序

缓存的世界 Redis(二)-持久化

卢卡多多

redis redis持久化 配置文件持久化 6月日更

JavaScript 学习(三)

空城机

JavaScript 大前端 6月日更

阿里云视频云 Retina 多媒体 AI 体验馆开张啦!

阿里云CloudImagine

阿里云 短视频 视频处理 媒体处理 视频制作

项目经理如何有效管理需求变更?

万事ONES

需求管理 ONES 项目经理

618 技术特辑(二)几百万人同时下单的秒杀,为什么越来越容易抢到了

华为云开发者联盟

数据库 服务器 流量 618 弹性负载均衡

拍乐云受邀2021亚太CDN峰会,技术创新赋能行业新价值

拍乐云Pano

RTC

校友会小程序开发笔记三:数据库设计

CC同学

小程序云开发 校友录小程序 校友会小程序

软件工程,其实没有任何工程而言

实力程序员

PO 就是Scrum中的产品经理?别再搞不清啦

万事ONES

项目管理 Scrum 敏捷开发 PO ONES

译文 | AI产品经理:如何打造一款SaaS+AI的优质产品

LigaAI

产品经理 研发管理

用EasyRecovery“监控硬盘”功能检测硬盘问题的方法

淋雨

数据恢复 EasyRecovery 文件恢复

并发王者课-铂金1:探本溯源-为何说Lock接口是Java中锁的基础

MetaThoughts

Java 多线程 并发 并发王者

【LeetCode】石子游戏Java题解

Albert

算法 LeetCode 6月日更

MySQL中的pid与socket是什么?

Simon

MySQL

校友会小程序开发笔记一:背景与技术方案的选型

CC同学

小程序云开发 校友录小程序 校友会小程序

Java8 的时间库(1):介绍 Java8 中的时间类及常用 API

看山

Java 6月日更

【Flutter 专题】103 初识 Flutter Mixin

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 6月日更

Python——字典的使用

在即

6月日更

教你两招,解决数据膨胀

华为云开发者联盟

数据 GaussDB(DWS) VACUUM 数据膨胀 FSM

连续七年,我们持续领跑

密码学系列之:feistel cipher

程序那些事

加密解密 密码学 程序那些事

针对 MySQL IO 特点进行的存储优化揭秘

焱融科技

MySQL 技术 分布式 高性能 文件存储

故事|订单系统中的补偿事务

悟空聊架构

故事 事务 6月日更 订单系统 补偿事务

6月26日,HarmonyOS开发者日将于杭州举办

科技汇

快来,这里有23种设计模式的Go语言实现

华为云开发者联盟

线程 设计模式 单例模式 Go 语言

JAVA笔记(三)--变量及运算符

加百利

Java 程序员 后端 6月日更

Java包装类(Integer 详解 )

若尘

java编程 6月日更

一分钟开发一个表单

蛋先生DX

vue.js 表单 动态表单 6月日更

react源码解析13.hooks源码

全栈潇晨

React

从零到一:保利威自动化测试体系实践_可观测_乐少_InfoQ精选文章