首页 > 其他分享 >如何设计一个自动化测试平台

如何设计一个自动化测试平台

时间:2023-05-29 12:33:32浏览次数:20  
标签:架构 平台 技术 任务 测试 自动化

之前写过很多自动化测试相关的文章,后台有同学留言:希望写一篇自动化测试平台的文章。

他的原话是这样:目前市场上开源或者商业的自动化测试平台很多,但试用下来总感觉有些地方不太融洽,想自己落地一个适合自己团队和项目的自动化测试平台。

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

这篇文章,我会以自己的实践经验结合业内部分优秀平台的设计理念,聊聊我对于设计自动化测试平台的一些想法。

 

平台解决了什么问题

去年曾写过一篇文章专门聊过测试平台的作用和价值,详情见:《测试平台解决了什么问题》。以此为例,先聊聊自动化测试平台的作用和价值。

一般在企业内,技术团队如果规模比较小,很少会专门投入资源去做平台化的事情,特别是测试团队,无论是成本预算还是技术能力,先天技术能力不足,后天可投入的资源缺乏。

而平台的特点在于:通过平台将操作流程标准化,抹平不同个体间的认知和技术差异,减少重复造轮子带来的的资源浪费以及排查和解决问题的成本,进一步提高人效比

大白话来说,就是人太多了,理解能力和技术差异太大,没那么多时间和资源浪费在不断造轮子和来回对比扯皮上,直接平台化,标准化,通过权限管理来标注操作的边界,保证大家按照同一个方向和目标甚至度量标准去做事情

技术本身的实践、迭代和演进是一个过程,从软件工程的角度来说,测试平台就是“只做刚刚好的设计”、“先做MVP方案然后不断迭代小步快跑”这些很好的软件工程实践理念某个阶段的产物。

当然,言必称平台,动则撸代码的方式,也有企业发展和个人职场生存之间的博弈成分在内。

 

测试平台的功能架构

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

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

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

 

测试平台的技术架构

聊完了功能架构,接下来聊聊技术架构。

在我看来功能架构的设计和功能模块的划分其实是很抽象的一件事,相比于技术架构,功能架构其实更为重要。好比与一个产品的好坏其实更多的取决于如何设计,而不是用了java还是PHP。

自动化测试平台的技术架构,大致可用下图来概括(仅做示意和参考):

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

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

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

 

在实际的技术选型过程中,还是需要根据团队自身的技术栈以及需求灵活选择合适的方案。

相比于自动化测试平台,我们常说的自动化测试框架,就显得很简单了。只需要编程语言+测试框架+持续集成工具+测试报告工具,就能完成基本的自动化测试工作。

平台并不是万能的,平台相比于最基本的自动化测试框架,也并没有什么优越性。根据团队的需求,技术能力以及资源预算选择合适的解决方案,才是最优解。

自动化测试的重点并不是平台,也不是选择什么高大上的框架。重点是,先让测试任务本身run起来,能快速的验证和反馈结果,才是最重要的。

 

标签:架构,平台,技术,任务,测试,自动化
From: https://www.cnblogs.com/imyalost/p/17440108.html

相关文章

  • 基于 Mindspore 框架与 ModelArts 平台的 MNIST 手写体识别实验
    简介实验包含2部分:基于Mindspore框架的模型本地训练及预测基于Modelarts平台和PyTorch框架的模型训练及部署基于Mindspore框架的模型本地训练及预测本例子会实现一个简单的图片分类的功能,整体流程如下:处理需要的数据集,这里使用了MNIST数据集。定义一个网络,这......
  • SM2259XT2+IM3D固件下载,DIY+简单测试SM2259XT2+384G B0KB的固态
    SM2259XT2固件下载,DIY+简单测试SM2259XT2+384GB0KB的固态。这是本次要出场的固态U盘:刚好找到一个美光的B0KB,单颗384GB,想起来之前买了几百片59XT2的U盘板子,刚好这个东西支持,贴上去试试。从量产部落下载了SM2259XT2开卡工具,上电读一下ID,ID齐全,直接自动识别开卡。一把过,颗粒原来在一......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-1-环境准备与搭建
    1.简介有很多人私信留言宏哥问能不能介绍一下Playwright这款自动化神器的相关知识,现在网上的资料太少了。其实在各大博客和公众号也看到过其相关的介绍和讲解。要不就是不全面、不系统,要不就是系统全面但是人家是收费的。当然了宏哥接下来也可能介绍的不全面或者不系统,能力有限望......
  • 网络收发性能测试-iperf工具
    快速上手:iperf网络性能测试工具(运维必会)Cloud研习社 运维网工 2023-05-2509:00 发表于重庆收录于合集#运维工具87个#运维工程师145个#运维管理84个#网络运维94个#性能测试1个运维网工分享网络运维、运维规划、运维开发、Python运维、Linux运维、dev......
  • 如何选择适合平台的直播美颜SDK:从技术和商业角度考虑
    直播美颜SDK作为一种技术解决方案,可以帮助直播应用实现优秀的美颜效果,提高用户体验和粘性。然而,如何选择适合你应用的直播美颜SDK,需要从技术和商业角度综合考虑。本文将从这两个角度出发,为你介绍如何选择适合你应用的直播美颜SDK。一、从技术角度考虑1. 美颜算法美颜算法是直播美......
  • CIO视角|平台工程带来的优势与机遇
    在当今高速发展的技术环境中,企业越来越依赖技术作为创新和竞争优势的战略驱动力。首席信息官(CIO)在企业中负责监督信息和计算机技术的管理和实施,以交付预期的业务成果。在技术是业务核心的公司中,CIO这一职位对于推动战略、技术和管理计划以实现业务增长至关重要。 在现有的解决......
  • pip源测试
    有s,无trusted无s,无trusted无s,有trusted有s,有trusted正常情况......
  • Python自动化运维
    2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加代码的可读性运......
  • 渗透测试
    信息收集dnsenum+域名挖掘子域名whois拿注册信息dig+noall+answer-xdnsip亚数信息-SSL/TLS安全评估报告(myssl.com)也可以起到子域名挖掘作用钟馗之眼目录信息收集队友给的php反序列化的基础记录收藏一下反序列化基础知识:魔术方法:<1>.__construct()<2>.__destr......
  • Appium自动化(14):Appium常用操作之app操作
    APP操作方法:appium支持对手机上的app进行管理和操作,有如下方法:1、install_app(self,app_path,**options):安装app,app_path为安装包路径2、remove_app(self,app_id,**options):卸载app,app_id为app包名3、is_app_installed(self,bundle_id):检查app是否有安装bundle_id为app包名......