忙了很久,终于有点时间来写点东西了。
前段时间,一直忙于各个外包项目的对接,也接触了很多客户,做技术的人在一起聊的肯定基本都跑不了技术范畴,尤其现在很多人关注的全栈测试、敏捷测试、TestOPS等等,一听,好多时髦牛B的专业词语。
软件测试这个行业,我从2014年开始接触,至今已有8个年头。从起初的纯手工,到现在遍地都谈的自动化测试,发展还是挺快的,作为一个快35岁的人,紧跟时代潮流,还是有点累的:)
记得刚开始做软件测试的时候,就是纯粹的手工测试,号称点点测试,每天的工作就是配置好要测试的系统,然后根据软件的实现来验证,基本不写计划,不写用例, 测试环境都是与开发环境一起的,毫无质量监控可言,不过,也就这么过来了,这个时间我印象中,从2014年持续到2016年,那个时候,想学点更深层次的技术,挺难的,第一,行业没太多这么高的要求,第二,没什么渠道可以学习。
2016年,到广州工作后,接触了TestDirector、QTP、LoadRunner,当时工作要求,测试管理用TD,Web自动化回归用QTP,性能用LoadRunner,比如论坛,美食频道以及播放器等,逐步技能丰富了,要求高了,但是仍然没有对编程有太多的要求,比如JAVA编程,Python语言、VBS也是因为测试工具需要用到,那个时候能够把测试工具玩的还可以,都可以称为“大神”,小白都这么理解,那时候我也热衷在各个群,论坛活跃,帮助别人,被别人称赞,也是一种荣誉,说到底,还是虚荣心,关键是还能遇到爱学好问的女测友😄
2018年进了华为,测试广东移动Boss平台的时候,发现华为不少的测试工具是自主研发的,可能很复杂,也可能很简单,比如EXCEL数据对比工具,这段时间的工作感觉,能够自定义开发测试所用的工具,感觉是极好的,但并不是大家都能搞定的,自此,对软件测试工作有了一个新的认识,用现在的话就是,以前的技术都是渣渣,不过从整个行业来讲,我个人感觉,还是没什么太大变化,但从技术而言,当时所用的,也是历史就有的,只是自己不会而已。
但从2019年以后,市面上流行出来的技术术语越来越多,我不知道是不是随着离岸外包越来越多的缘故,还是所谓的技术大咖故弄玄虚,各种奇形怪状的技术语言都出来了,比如探索测试、穿透性测试、玻璃盒测试等,我不是否认这些术语背后的测试意义,我只是不理解为什么一些相对通俗的技术,非要起一个比较唬人的名字呢?
从移动应用飞速发展,敏捷开发大行其道,随之而来的各种测试术语很嚣张,什么敏捷测试、全栈到现在的TestOPS等,听上去很牛,很玄,但究其本质呢?
行业对测试人员的能力要求越来越高,这是IT行业发展趋势,是正常的,大型优秀的企业,也会因为其业务的复杂度,需要构建复杂高效智能的技术框架,这点是无可厚非的,但我不理解的是,为什么现在测试工程师在学习,进化的过程中,非要研究那些高精专的技术呢?
8年来,我对软件测试技术发展的理解就是,在以后相当长的一段时间内,软件测试工作,仍然是劳动密集型工作,仍然需要测试工程师充分发挥自己的主观能动性,而不是依赖这样那样的测试工具或者框架,我们在学习、研究的时候,不要忘记了工作的本质,舍本逐末的想一步登天。
为什么这么说,其实是我看着目前行业内,有太多的人觉得自己不聊点、不靠点流行的概念,都不好意思说自己干IT工作了。以TestOPS来说,从技术发展来看,完全是从DevOPS延伸出来,就像敏捷测试的诞生一样。
DevOPS:我查到的解释是:DevOps是一种软件工程文化和实践,旨在统一软件开发(Dev)和软件运维(Ops)。DevOps运动的主要特点是在软件构建的所有步骤中极力提倡自动化和监控,从集成、测试、发布到部署和基础设施管理。DevOps的目标是缩短开发周期,增加部署频率,更可靠的发布,与业务目标紧密结合。
把开发人员、QA、运维人员的工作要求、技能的交集部分,定义为DevOPS,一句话,就是将开发人员的技能要求再提升两个档次
TestOPS:与DevOPS相对,期望TestOPS工程师,把测试、QA、运维甚至开发人员的工作要求、技能的交集部分,定义起来,希望测试工程师具备这样的技能,我的天,要求太高了。
就上面的TestOPS构成图,朋友们可以看看,这个要求很高,不是说不能做到,而是不是人人都能做到。
我们每天都在接触新的事物,都在学习新的知识,但是我们要知道哪些是目前能够解决现实问题的知识,哪些是可以扩展的,而不是每出现一个新的事物,我们就义无反顾,逼迫自己去追随。
目前的软件测试行业,我个人觉得,仍然手工测试为主,自动化测试为辅,手工测试是基础,是自动化测试思想的源泉,如果这个基础都没有,根本谈不上未来的测试开发、全栈、TestOPS等等,立足眼前,才可能有未来。
我不是在批判现在流行的技术或术语,而是期望朋友们能够理解、识别这些概念的本质,理解了本质才有明确的判断,才有明确的方向。
以我的理解,软件测试工程师的核心技能可以下图来表示:
图很简单,要说的也很简单,理论是必须要学的,传统的软件工程理论、流行的敏捷开发流程,在这个基础上,一定要从基本的手工测试活动开始,不断提炼,深化思想,有了优化的思想,再去实现对应的思想,才会有这样那样的技能,比如selenium自动化、Appium自动化、接口自动化等,当然,我仅仅是从技术本身来讨论。
目前软件测试技术中,从51job,Boss等招聘平台看到的测试开发工程师岗位要求,看到的主要要求举例如下:
1、测试理论;
2、开发语言能力:java、python、R语言、C++等;
3、数据库技能:Mysql、Oracle、MangoDB、Redis等
4、操作系统:基本都是Linux方面的;
5、测试工具:商用ALM、UFT、LoadRunner,开源:Selenium、Appium、JMeter、PostMan等
6、持续集成:基本Jenkins比较多;
7、容器:Docker等
一看这么多要求,想做一名合格的测试工程师得多难,掌握的技术,其实不亚于软件开发人员了,要求真的变高了很多。
关于自动化测试学习建议
回想自动化测试的学习过程,发现很多人总是急于求成,不懂该如何学习。
当你是新手的时候肯定会选择加很多的群。在群里总是会遇到很多人问低级问题,写了一个selenium脚本,却执行失败,也不看报错,就直接跑到群里来问(有时候连个图都不发或发图只截图一小半,有的甚至问我和你写的代码一样怎么运行不起来了呢?),大神,这里为什么会报错?很多都是明显的语法问题一问才知道,今天刚刚学selenium,之前也没有语法基础,没学过Java,没学过Python,就跑来搞selenium,想玩自动化。
今天把我当时深入学习了半年的《自动化测试工程师全栈学习路线》,也整理了一些测试资源。从名字就能看出和学习目标很契合~(篇幅有些长,我们被太多碎片化时间消磨了深度学习的能力,看完必有所获!关注个人技术公🀄️号有完整版下载)希望会给你带来帮助和方向。
一、Python编程入门到精通
编辑二、接口自动化测试
三、Web自动化测试
四、app自动化测试
五、前端网页编程语言
六、测试开发DevOps体系
七、一线大厂简历制作,面试技巧
八、RobotFramework框架和HttpRunner
上面就是我整理出来的一份自动化测试工程师技术路径图。希望大家能在这个成长过程中收益良多。全方位提升测试技术,建立一套属于自己的技术体系。帮助大家不断学习和优化技术栈,跟进先进和主流的测试技术,给到大家带来的不仅仅是技术和薪资的提升,更多的是改变测试人在IT技术领域的地位和心态,拔高测试行业的技术深度。
针对已经从业或即将从业软件测试的朋友们,我的建议是
1、软件测试基础理论必须奠定好;
2、从软件测试的目的--发现缺陷这个本质着手,规划技术体系,然后逐步学习;
3、虽说技多不压身,但是学习这些技术是有时间成本的;
4、以眼前需求为切入点:学习Python的紧迫性要高于学习JAVA、C++等语言
5、不懂编程、不会编程别谈什么单元测试,仅会一些工具是远远不够的;
6、解决眼前工作中的问题是老板关注的,你的其他想法与他无关,所以,你的核心目标是伺候好你的老板,因为他舒服了,你才有梦想。
最后我想说的是
不要因为这些变化,我们乱了阵脚,担心未来自己的职业发展,学习是个持续性的过程,把握学习的核心即可。我们既然无法一口吃成一个胖子,那就围绕一个领域,逐步增肥,但要的是肌肉,而不是脂肪;
点击下面卡片关注本博主个人公众号可以获取更多技术干货,包括自动化测试学习资料,知识体系大纲,40篇面试经验文章和项目案例源码、笔记等
可拉进交流群,有大佬指点迷津你的问题往往有人遇到过。具体详细内容可自行查看哦!
▲ 《程序员一凡》 ▲
上方公众号获取