一个自动化项目的思考总结

背景

话说为什么会有一个这么个题目的文章分享呢,原因是它是作者本人来到新公司之后的第一个技术产出,并且达到且超出了收益预期。所以特此把这个项目的过程及总结的一些经验分享出来,希望可以给成长中的小伙伴一点启发吧,同时也欢迎大家和作者本人多多交流,共同打怪升级,吃鸡路上有你我他,作者VX:1010584905

项目概述

2020年4月,我加入了我现在的公司,作为一名质量保障部的测试开发工程师,服务于基础架构云平台项目组,刚进组就是和所有去新公司的人一样,熟悉环境熟悉业务熟悉同事,信心满满的准备大干一场(),进组之后听到第一个技术项目就是研发同学对自动化急切需求,因为目前的回归基本靠人,繁琐且耗时,为什么繁琐那么就要简单介绍下我所做的项目了,我所做的项目总结起来就是私有化部署,什么是私有化部署呢?简单来说就是把公司的产品组件以及所有的底层存储开源组件以及大数据组件一键部署到客户任意环境,再此基础之上进行,升级,扩容!所以它有三个核心功能:安装,升级,加节点。我们日常就要围绕这三大功能测试;实现这些安装,升级,加节点都需要手动配置初始化或者检查一些东西,所以频繁的操作就会比较繁琐~那么就要把这些繁琐且重复性搞的东西自动化起来,说起自动化这里也要顺便普及一下一点自动化知识(主要供一些刚入行的小伙伴参考),目前我们在市面上和公司里常见的测试自动化如下:
1、UI 自动化
2、基于http,grpc, dubble 等协议的接口自动化
除以上两种外还有一种就是基于流程或者说是场景自动化,大家都已经知道UI 或者 接口自动化目前已经做的很成熟了,网上都有很多成熟的解决方案和各种各样的框架,而流程或场景化的自动化一般都是基于不同公司的不同业务情况独立设计和开发的,比如我们接触到的各种公有云,一个公有云虚拟机的创建过程其实十分复杂,包活VM镜像创建、创建磁盘分区,创建网络,分配IP,创建网卡等等,这是过程,过程背后是一个个步骤缺一不可,而测试工程师在测试这个过程时难免不了会涉及自动化的测试,那么这些自动化的测试框架实现都是完全基于业务自主设计的,我们的私有化部署也同样是一个过程背后有很多步骤,既然是项目组最需要的,那么就一定要做了,经过几个月业务熟悉之后,这个自动化项目也被提上了日程,下面就是这个项目的一个架构设计过程:

整体设计

需求实现原则

  • 尽快开发完成投入使用-所以选择了python 语言这也和项目组用的语言保持一致
  • 尽可能的利用现有能力协同共建
  • 可扩展性必须强,可快速在此框架基础迭代开发新功能,调试简单报错可快速定位;分层清晰
  • 我们的自动化结果尽可能赋能其他业务线或本组开发人员

设计理念

  • 设计灵感其实借鉴的我们云平台研发的整体设计思路,这里要说一下其实我们云平台研发设计思路是借鉴了K8S。
  • 用户面向yaml配置

架构图

一个自动化项目的思考总结_第1张图片
架构采用的类似微核的一种架构,不是严格意义上的微核架构,这里简单说一下微核架构的特点:

  • 良好的功能延伸性
  • 需要什么功能,开发一个步骤;
  • 功能之间是隔离的,步骤之间互不影响;
  • 可定制性高,适应不同的开发需求
  • 可以渐进式地开发,逐步增加功能,其实就是独立增加步骤
    以上类微核架构完美的契合适用像我们这种场景化的项目,所以要根据项目特点设计选择不同的架构设计

收益情况

  • 支撑了核心功能的自动化回归,解放人力回归成本,大大缩减了回归测试时间
  • 由于我们项目的特殊性,我们是整个产品体系中最基础组件业务线要想搭建测试环境全部依托云平台的功能,所以我们也承担了推广给3条业务线使用的okr,但实际下来不仅已经覆盖了所有业务线的qa同学而且还覆盖了部分研发同学,得到了研发QA同学好评,为繁琐环境的创建由以前的文档化改进为自动化。有的复杂环境新手搭建起来原来是按天算,目前都是小时级别

思考总结

扣主题 说到此也要扣一下这片分享的主题了,现在看来这个项目其实是收益是超预期了,不但完成了我们本身的自动化需求,同时赋能了其他业务线的研发和QA同学使用,也在部门和公司做了分享。所以它提高了我们小组在部门和公司影响力,那么为什么可以收益超预期呢,现在想来可能是因为以下几点原因,拿出来与大家分享,希望可以在你去设计实现或做事时有一些启发:

  1. 良好的架构设计:我们的自动化在后期维护与迭代过程中,新开发的功能时间成本并不多,都能很快的实现或者适配一些特殊功能,所以可扩展性、可维护性强的的架构设计一定是一个好的自动化框架的基础,它会对你日后的维护成本大大降低,也可以快速跟上你项目的迭代速度!还有就是面向yaml的设计特点其实也借鉴了我们云平台本身项目设计思路,所以测试同学一定要十分了解自己负责项目的架构设计,必须具备代码CR能力,对架构设计的理解不仅有助于我们的日常测试,还可以启发我们在一些测试工具,框架、平台上设计思路,必定人家研发的架构师在技术上远胜于我们QA同学,人家设计的东西一定是有让我们学习之处的
  2. 充分利用现有资源:其实在实现中每个独立步骤的执行单元一部分是复用了现有效能同学的能力,一些特殊组件的步骤实现是把需求提给了这些功能的实现方,自动化框架只是做了调用关系;所以在实现过程中,我们应该充分的考虑哪些资源是可以直接被我们使用的,避免重复造车,只要能达到我们的目标,我们就应该果断的利用已存在的资源,去达到目标,后期有时间了如果现有能力不满足复杂情况时我们可以在慢慢重构也没有关系
  3. 利他原则:道德经中老子呈现我们的一个核心思想就是无我利他,我们在做事情的时候,不要求那么的高尚但是如果也注入一些此类原则,当我们做一件事情,或者设计一个东西时多想一下,是否可以给予他人提供便利,与人沟通时也尽量遵循一些利他原则,最终事情的结果也一定不会让你失望。
  4. 分享:当你做一了一个项目并且总结了一些经验,如果你觉得有意义,那么就应该果断的分享出来,不说为了产生多大影响力。至少也可以提高你自己的对知识的总结写作能力,还可以锻炼你的演讲能力,一箭双雕。何乐而不为呢?

最后;
以上就是我对我做的第一个技术项目的一个总结,希望小伙伴们可以一块交流互相提高

作者WX:1010584905

你可能感兴趣的:(软技能,经验分享)