字节8年经验之谈 —— 如何设计一个自动化测试平台?

news2025/1/20 16:57:32

之前写过很多自动化测试相关的文章,后台有同学留言:希望写一篇自动化测试平台的文章。他的原话是这样:目前市场上开源或者商业的自动化测试平台很多,但试用下来总感觉有些地方不太融洽,想自己落地一个适合自己团队和项目的自动化测试平台。

这种想法在我看来很正常,商业平台要考虑普适性,会大而全,也会存在客制化的诉求;而开源平台更多的是作者结合自己的经验做出来的,个人风格较为强烈。且每个团队的技术建设、项目迭代、流程规范以及人员各有区别,很难有完全适配的自动化测试平台。这篇文章,我会以自己的实践经验结合业内部分优秀平台的设计理念,聊聊我对于设计自动化测试平台的一些想法。

平台解决了什么问题

先聊聊自动化测试平台的作用和价值。一般在企业内,技术团队如果规模比较小,很少会专门投入资源去做平台化的事情,特别是测试团队,无论是成本预算还是技术能力,先天技术能力不足,后天可投入的资源缺乏。而平台的特点在于:通过平台将操作流程标准化,抹平不同个体间的认知和技术差异,减少重复造轮子带来的的资源浪费以及排查和解决问题的成本,进一步提高人效比

大白话来说,就是人太多了,理解能力和技术差异太大,没那么多时间和资源浪费在不断造轮子和来回对比扯皮上,直接平台化,标准化,通过权限管理来标注操作的边界,保证大家按照同一个方向和目标甚至度量标准去做事情。技术本身的实践、迭代和演进是一个过程,从软件工程的角度来说,测试平台就是“只做刚刚好的设计”、“先做MVP方案然后不断迭代小步快跑”这些很好的软件工程实践理念某个阶段的产物。当然,言必称平台,动则撸代码的方式,也有企业发展和个人职场生存之间的博弈成分在内。

测试平台的功能架构

回到本文的正题,要设计一个自动化测试平台,最基本也是最核心的功能有如下几点:

  • 文件管理:脚本、数据的上传/下载、格式校验等功能;
  • 任务管理:测试任务创建、更新、删除、批次管理
  • 任务调度:测试任务执行,定时/触发等灵活的调度策略;
  • 报表统计:主要包括场景、用例、任务、报告、状态等维度的数据汇总;
  • 监控日志:包含测试任务的执行状态、时间、异常以及告警通知等功能;
  • 节点管理:执行器(node节点)的调度、配置、状态、插件、验签等功能;
  • 系统设置:用户权限、项目权限、插件管理等;
  • mock功能:隔离上下游依赖,确保任务执行的可靠性,避免外部影响;

当然,上述的功能模块是相对比较通用的,在团队内部落地时,可以根据自身具体情况进行扩展。综合上述的功能模块,自动化测试平台的功能架构,可以用下面一张图来概括(仅做示意和参考):

测试平台的技术架构

聊完了功能架构,接下来聊聊技术架构。在我看来功能架构的设计和功能模块的划分其实是很抽象的一件事,相比于技术架构,功能架构其实更为重要。好比于一个产品的好坏其实更多的取决于如何设计,而不是用了java还是PHP。自动化测试平台的技术架构,大致可用下图来概括(仅做示意和参考):

技术架构大致的调用关系和组件作用如下:

  • 通过UI界面进行编辑和下发任务执行消息,一般采用http协议通信;
  • 执行引擎支持多协议和规则格式等校验,将任务信息推送给node集群;
  • 从gitlab中获取对应的自动化脚本,并推送到具体的node节点来执行任务;
  • 从 S3 或其他文件管理组件中获取对应测试数据文件,并推送到node节点;
  • 通过任务调度组件比如 xxjob 来进行具体的任务分配执行,以及状态管理;
  • 任务执行过程产生的日志存储于es中,通过集成elk组件来做日志管理和展示;
  • 任务执行完成后产生的报告数据,以及项目/场景/用例/配置等冷数据存储于mysql;
  • node内置listener,负责将任务状态和资源耗用等数据通过kafka推送到工作台展示;

上图所展示的技术架构和相关组件,仅做参考。

在实际的技术选型过程中,还是需要根据团队自身的技术栈以及需求灵活选择合适的方案。相比于自动化测试平台,我们常说的自动化测试框架,就显得很简单了。只需要编程语言+测试框架+持续集成工具+测试报告工具,就能完成基本的自动化测试工作。

平台并不是万能的,平台相比于最基本的自动化测试框架,也并没有什么优越性。根据团队的需求,技术能力以及资源预算选择合适的解决方案,才是最优解。自动化测试的重点并不是平台,也不是选择什么高大上的框架。重点是,先让测试任务本身run起来,能快速验证和反馈结果,才是最重要的。

下面是配套学习资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

软件测试面试小程序

被百万人刷爆的软件测试题库!!!谁用谁知道!!!全网最全面试刷题小程序,手机就可以刷题,地铁上公交上,卷起来!

涵盖以下这些面试题板块:

1、软件测试基础理论 ,2、web,app,接口功能测试 ,3、网络 ,4、数据库 ,5、linux

6、web,app,接口自动化 ,7、性能测试 ,8、编程基础,9、hr面试题 ,10、开放性测试题,11、安全测试,12、计算机基础

资料获取方式 :

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/925556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

LC-1448. 统计二叉树中好节点的数目(DFS、)

1448. 统计二叉树中好节点的数目 中等 给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,…

Python案例|Matplotlib库实现的数据分析

数据展示是数据分析和挖掘中的重要环节,通过图形的形式可以直观、清晰地呈现数据内在的规律。 本文所用数据采用上一篇案例实现后的数据表,数据存储在newbj_lianJia.csv文件中,具体代码如下。 import pandas as pd #导入库 import matplot…

论文阅读_图形图像_U-NET

name_en: U-Net: Convolutional Networks for Biomedical Image Segmentation name_ch: U-Net:用于生物医学图像分割的卷积网络 addr: http://link.springer.com/10.1007/978-3-319-24574-4_28 doi: 10.1007/978-3-319-24574-4_28 date_read: 2023-02-08 date_publi…

基于“R语言+遥感“水环境综合评价方法教程

详情点击链接:基于"R语言遥感"水环境综合评价方法教程 一:R语言 1.1 R语言特点(R语言) 1.2 安装R(R语言) 1.3 安装RStudio(R语言) (1)下载地址…

MyBatis分页插件PageHelper的使用及特殊字符的处理

目录 一、PageHelper简介 1.什么是分页 2.PageHelper是什么 3.使用PageHelper的优点 二、PageHelper插件的使用 原生limit查询 1. 导入pom依赖 2. Mybatis.cfg.xml 配置拦截器 3. 使用PageHelper进行分页 三、特殊字符的处理 1.SQL注入: 2.XML转义&#…

C语言:选择+编程(每日一练Day8)

目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:字符个数统计 思路一: 题二:多数元素 思路一: 本人实力有限可能对一些…

创建harbor仓库并进行一些操作

文章目录 前言一、使用mysql:5.6和 owncloud 镜像,构建一个个人网盘。二、安装搭建私有仓库 Harbor1、安装docker-compse2、安装harbor 3、修改配置文件4、运行脚本5 登入harbor仓库总结 前言 本篇文章需要完成的以下几个操作: 使用mysql:5.6和 ownclo…

0基础学习VR全景平台篇 第90篇:智慧眼-数据统计

【数据统计】是按不同条件去统计整个智慧眼项目中的热点,共包含四大块,分别是数据统计、分类热点、待审核、回收站,下面我们来逐一进行介绍。 1、数据统计 ① 可以按所属分类、场景分组、所属场景、热点类型以及输入热点名去筛选对应的热点&…

Spring之Spring生态系统的演进

未来展望:Spring生态系统的演进 未来展望:Spring生态系统的演进 摘要引言词汇解释详细介绍新技术趋势与影响开发方向与展望探讨Spring在未来的发展趋势微服务与云原生响应式编程强调开发效率和全栈式开发支持人工智能和大数据保持灵活性和创新性 针对新兴…

有效降低传导辐射干扰

一直以来,设计中的电磁干扰(EMI)问题十分令人头疼,尤其是在汽车领域。为了尽可能的减小电磁干扰,设计人员通常会在设计原理图和绘制布局时,通过降低高di / dt的环路面积以及开关转换速率来减小噪声源。 但…

SpringBootWeb案例 Part 4

3. 修改员工 需求:修改员工信息 在进行修改员工信息的时候,我们首先先要根据员工的ID查询员工的信息用于页面回显展示,然后用户修改员工数据之后,点击保存按钮,就可以将修改的数据提交到服务端,保存到数据…

eps三维测图软件工具箱设置

1、打开软件,点击工具箱按钮。具体如下: 2、点击工具箱内分组按钮,右键选择插入命令。如下: 3、进入命令设置界面,如下:

Android View动画整理

此前也有写 View 动画相关的内容,但都只是记录代码,没有特别分析。以此篇作为汇总、整理、分析。 Android View 动画有4中,分别是 平移动画 TranslateAnimation缩放动画 ScaleAnimation旋转动画 RotateAnimation透明度动画 AlphaAnimation …

深度学习模型优化:提高训练效率和精度的技巧

文章目录 1. 数据预处理2. 批量归一化(Batch Normalization)3. 学习率调整4. 提前停止(Early Stopping)5. 模型压缩与剪枝6. 模型并行与分布式训练7. 自动化超参数调整结论 🎉欢迎来到AIGC人工智能专栏~探索Java中的静…

【MySQL】2、MySQL数据库的管理

常用 describe user; Field:字段名称 Type:数据类型 Null :是否允许为空 Key :主键 Type:数据类型 Null :是否允许为空key :主键 Default :默认值 Extra :扩展属性,例如:标志符列(标识了种子,增量/步长)1 2 id:1 3 5 …

机器视觉工程师,2023年最大忠告,没实力,别辞职

最近很多粉丝频繁联系我,太难了,想辞职,干不下去,想要要辞职。 我会慢慢和他分析他当前的优势和劣势,从目前掌握各家公司招聘的信息来看,分以下几种情况: 第一:员工流动性大的公司&…

badgerdb 压缩合并

压缩合并原因 badgerdb是lsm tree派系的数据库,put,delete接口都是通过追加写日志的方式来保存的,日志如果一直不清理,会导致读性能越来越差,占用的存储空间也越来越大,badgerdb为了解决这些问题&#xff0…

深入解析:树结构及其应用

文章目录 学习树的基本概念理解树的遍历方式学习堆和优先队列的应用案例分析:使用堆进行Top K元素的查找结论 🎉欢迎来到数据结构学习专栏~深入解析:树结构及其应用 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页:IT陈…

提高生产力的强大开发工具

在当今快速发展的软件开发领域,提高生产效率和质量是每个开发团队追求的目标。JNPF(Java Non-Enterprise Application Framework)作为一种灵活且强大的开发工具,旨在帮助开发团队实现这一目标。本文将深入探讨JNPF如何提高生产力&…