赞
踩
1、自动化测试的分层模型
自动化测试的分层模型,测试同学都应该很熟悉了,按照分层测试理念,自动化测试的投入产出应该是一个金字塔模型。
越是向下,投入/产出比就越高,但开展的难易程度/成本和技术要求就越高。
从性价比的角度来说,接口自动化测试最应该在实际的工作实践中去推动落地。按照现在流行的前后端分离架构理念来说,接口是交互和逻辑的处理层,只要对数据的处理逻辑没问题,纯技术层面,测试效率就能得到明显的提升。
2、自动化测试分层的落地前置条件
先聊聊不同的自动化测试各自的特点,再来列举它们的适用场景和前置条件。
1)UI自动化
UI自动化落地最大的挑战是需求和UI设计的频繁变化会导致大量的变更,如果需求和UI设计频繁变化,那测试框架、脚本甚至相关的测试数据都需要频繁的变更,环境和测试的维护成本大概率会高居不下,因此持续稳定的系统是UI自动化测试落地很需要的一个属性。
UI自动化落地较为适用的场景有:
稳定的系统版本迭代;
线上业务主流程巡检;
2)接口自动化
相比于UI自动化,接口自动化要解决的问题是验证数据的交互和逻辑的正确性,此时要考验的则是系统设计和研发编码规范。
因此接口自动化落地的前提或者说适用的场景有:
较为清晰的系统架构设计(单体架构或交互与逻辑分不清的系统,梳理逻辑就需要花费很多精力);
有一定的研发规范且执行的比较好(如果接口命名和变更无法及时同步,同样需要投入很多精力去检查);
环境的稳定性和相关的基础技术设施建设是前提条件;
3)单元自动化
单元测试要检查的对象一般是代码中的类、方法甚至某一个函数,一个系统或者服务本身就是由很多这种细小单元构成。
因此要落地单元自动化测试,有几个前置条件:
对业务需求很熟悉(如果不熟悉业务和需求细节,单元测试就无从谈起);
具备一定的技术底子(主要指编码能力,或者最起码的代码走读能力以及对技术方案的了解);
迭代内有一定的时间来设计单元测试case(单元测试相对来说是更底层更细致的活儿,需要在每次变更迭代中一边实现业务代码一边实现测试代码);
团队规模和上级支持是很重要的隐藏条件(如果是小团队且迭代较快,资源的投入势必会少很多,且如果没有上级支持,单元测试的落地大概率没有足够的时间证明其价值);
在当前的工作场景中,自动化测试只是质量保障的一个技术手段。是否分层,哪种测试手段投入多少资源,更多的是取决于面临什么问题,这些问题对质量的影响程度大小,然后才是根据具体的情况选择合适的测试手段去解决问题。
成本、范围、时间依然是影响我们做技术选型和落地的最大影响因素。
3、技术菜鸟如何提升自己的能力
首先,要承认成长是一个比较长的过程,而非一蹴而就的事情。
成长是什么?
我个人认为成长的三要素是技术+经验+心态。技术是解决问题的手段,经验是对解决问题过程的抽象总结,心态则是遇到问题后的应激反应,或者可以理解为看待问题的角度。
技术的获取和熟练,需要不断的学习实践,才能形成自己的知识体系。应用技术解决问题的过程和结果优劣,最终经过复盘思考总结形成了经验。知识体系+经验,会不断修正个人面对问题时的心态,最终会形成自己的思维逻辑体系,或者称之为方法论。
其次,职业发展规划并没有标准答案,也没有适用于所有人的模版。我个人的理解,职业发展规划如何制定,取决于你想要获得什么东西,你想成为一个什么样的人。
比如你想成为一个销售冠军,那除了专业的销售方法和对产品的了解,你还要具备很强的同理心以及沟通交流谈判能力。
再比如你想成为一个技术管理者,除了技术深度,你还需要具备一定的技术广度以及基于这两项之上的技术前瞻性和技术架构设计能力。
除此之外,团队管理、目标制定、协调沟通等能力也是你必须具备的能力,这些因素缺一不可。
先想清楚自己想获得什么东西,自己要成为专场或者专业领域内的什么人,再考虑职业规划也为时不晚。
当然,不建议一开始就制定很宏大的目标或者很高级的职业Title,这样很容易成为又一个伤仲永的案例。
最开始不妨先制定一个短期内更容易实现的目标,在成长过程中随着个人认知的提升不断修正这个目标,进行延续性的改变,这是更适合普通人的一种个人成长和职业发展规划制定方法。
回到技术话题上,如何从技术菜鸟成长为一个技术大佬?
以自动化测试为切入点,下面是一些提升技术能力的经验之谈。
自动化测试首先要做到数据和脚本分离,管理测试数据的方法有很多,比如参数化文件(Excel),配置文件以及通过数据库管理数据。解决测试数据管理问题,过程中要学习如何设计表结构,测试服务访问数据库需要用到一些DAL工具如Hibernate、Mybatis或其他ORM框架。
自动化测试最起码需要能自动执行,这个时候就需要考虑持续集成如何实现。最基本的Jenkins如何配置,要实现多个测试任务同时执行,就需要了解Pipeline流水线的构建。再进一步的持续集成流水线,需要能监听到代码的变更和发布然后自动执行自动化测试任务。
更进一步来说,要很好的构建持续集成流水线,需要对代码分支命名规范以及代码版本进行管控,这就涉及到了代码仓库如Gitlab和版本管理工具如Git。
要将自动化测试任务融入持续集成流水线,还需要合理完善的研发测试流程,这时候测试可以推动研发质量流程和代码管理规范。
如果团队规模变大或者业务规模更大,就需要自动化测试平台来进行统一的任务管理,而开发自动化测试平台,就需要梳理团队对自动化的需求、设计原型图、开发自动化平台。
这个过程中,自动化测试服务需要注册到注册中心,一些参数文件需要维护,这个时候会顺带了解和使用配置中心和注册中心,比如Apollo,Nacos。
再扩展,就会涉及到缓存、消息队列和分布式任务管理的范畴,进而了解和使用Redis、MQ、XX-Job等技术组件。
以此类推,当你的自动化测试做的足够好时,这个过程需要你解决很多问题,了解很多新的知识,而技术成长最快的方法则是,在实际工作中不断解决问题,不断复盘和技术优化。
这就是技术菜鸟技术提升的过程,除了生而知之或者极有天赋,绝大多数技术同学提升技术,都是这个过程。
下面是我整理的2024年最全的软件测试工程师学习知识架构体系图 |
不论前路多么崎岖,努力奋斗的每一天都在铸就辉煌。坚守初心,追逐梦想,勇敢面对挑战,终将收获成功的喜悦。奋斗是通向自我超越的唯一路径。
只有敢于坚持,才能超越自我;只有不停奋斗,才能抵达梦想的彼岸。困难是通往成功的阶梯,只要勇敢迈出每一步,终会登上巅峰。
在苦难中磨练意志,在挫折中燃烧激情,用汗水浇灌成就,只有不屈不挠的奋斗才能创造辉煌的人生。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。