谈到现状,国内的软件测试行情目前呈现了两极分化的极端情况。
- 一个是早期的手工测试人员吐槽工作不好做,即使有工作也是外包,而且薪资太低;
- 一方面是很多互联网企业感叹自动化测试人才难找,有技术的自动化测试工程师,高薪难聘。
这两者其实并不矛盾。
手工测试工作难找也确实是目前真实的行情
早期从事功能测试的手工测试人员,在测试方面大多采用手动、人工执行的方式查找软件缺陷和BUG,用行业术语来描述就是“点点点”。这种测试方式耗费大量人力和资源,工作效率却十分低下。
在早期软件复杂和迭代程度不高的情况下,有资本的企业会“供养”一批这样的手工测试人员。但对测试员本身来讲,毫无技术难度的工作,和几乎没有保障的薪资水平,直接导致太多人选择了退出这个行业。
如果照这种情况发展下去,测试行业最终被彻底淘汰都有可能。但互联网的发展却不允许这种情况的发生。从14-16年开始至今,国内互联网的发展迅猛程度,一度让国内互联网进入了“洗牌阶段”。
从之前的BAT独占鳌头到如今的"BATJ+TDM"百花齐放。国内互联网在娱乐、生活服务、出行、芯片/半导体等领域都得到了十分不错的进步。这就导致各大企业对自动化软件测试工程师的需求瞬间增大了很多倍。注意,这里是“自动化软件测试工程师”,而并非普通的功能测试员。
之所以各大互联网企业开始自动化测试,最主要的原因就是互联网产品的迭代速度远不是手工测试能做得了的,这已经不是单纯的人力可以堆积的工作,而是需要通过自动化脚本技术批量、高效的完成。
自动化测试工程师需要掌握的技术体系,也远远不是手工测试能比拟的,在App自动化、WebUI自动化、接口自动化、性能测试、CI/CD/DevOps等领域的技术延申,已经不仅仅局限于找BUG和缺陷。
更多的在于整个产品项目的“质量管理”,注意这个词。质量管理,要求的是产品的稳定性、安全性、体验度和用户需求的满足情况,以及整个企业的产品质量管理体系的建设、持续集成、质量监控平台等等。
下面主要谈谈作为一名工作3年-5年左右的软件测试工程师该具备的一些技能以及个人的一些其他感悟:
1、入行阶段
这个阶段是大部分刚入行软件测试的新人会遇到的情况。这个阶段大家都在疑惑什么问题呢?大部分都是这个行业前景到底好不好?从事这个行业工作好不好找?工作累不累?想拿高薪要学习哪些测试技术等等。
可以告诉大家的是,这些都不重要。当我们选择了这行以后,应该考虑的事情,是如何才能在这个行业当中做到最拔尖的那批人才之一,努力提升自己的职业竞争力和技术沉淀。需要我们重点关注的:
软件测试工程师的职业发展方向:初步了解软件测试行业的发展方向,考虑自己今后可能会朝着哪个方向发展,该重点培养自己哪方面的能力,比如到底是技术岗还是管理岗;
软件测试工程师的技术体系:清楚自己如今的技术薄弱点,针对性的做技术训练和提升,了解哪些方面是自己必须要做提升的;
自我积累和沉淀:在当下这个阶段,自己应当静下心来重点锻炼哪方面的基础能力。就比如测试用例的撰写、测试报告的生成、缺陷管理和项目管理的介入,这些基础知识是任何高阶自动化测试工程师都应该深度了解和掌握的基层技术。
2、中级阶段
这个阶段的自动化测试人员,已经算的上是测试行业中的半个“专家”了。理论上从业3-5年自动化测试工程师,在自动化测试领域应该已经有不错的造诣。
这个阶段的工程师有个显著的特征,就是能够熟练运用市面上各类自动化测试工具。并且也有自己擅长的测试领域,App自动化、Web自动化、接口自动化等等。甚至专研性能同样也大有人在。
这个阶段的自动化测试工程师,能称得上合格的一般都是学习了一门编程语言的,像Python和Java,当然一般对编程语言没有基础的新手小白,大部分会选择Python语言。先不说开发这块,至少在Python语法、常用的第三方Python自动化脚本等方面都有相关涉猎。这一块儿一般就根据个人的偏好和从业之处自己的被动选择有关。不管是哪个方面,只要你用心钻研,持续提升,都能在该领域获得不错的发展。
3、高级阶段
所谓高级阶段,其实也是一个分水岭。这个阶段大部分测试人员的技术已经算的上行业拔尖水平。想往更高层次攀爬,就得考虑职业方向的发展问题。
喜欢钻研技术,可以考虑往更深层的技术指导、自动化平台建设等方面发展。这一块儿较为考研“测试开发”技术。简单来说,既懂开发,又清楚系统化的软件测试和质量管理。能够独自完成和整个测试及开发部门的分工、体系建设等等。是很多大型互联网企业非常热衷的全能型IT人才。
如果本身对管理方向较为青睐。也可以考虑从事项目经理、测试总监等岗位。不过涉及到管理岗位,除了对人员的测试技术方面有一定的要求,更考验管理人员的上下级协调和部门协调能力。既要掌握产品的客户需求、项目需求、市场跟踪、迭代管理以及各部门之间的磨合、统筹运维工作。
那么,作为一名软件测试工程师,该怎样努力才能快速成为一名优秀的测试开发大佬,或者性能测试大佬,或者说作为一名软件测试工程师需要掌握哪些知识体系。这不仅是一个刚刚踏入职场的软件测试工程师,也是工作三五年之后开始迷茫的工程师,都必须要面对和想明白的问题。
一、Linux必备知识
linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有linux能力。
二、Shell脚本
掌握shell脚本,包括shell基础与应用、shell逻辑控制、shell逻辑函数等。
三、互联网程序原理
自动化必由之路:前端开发基础知识以及互联网网络必备知识。
四、Mysql数据库
软件测试工程师必备Mysql数据库知识,不仅仅停留在基本的“增删改查”。
五、抓包工具
Fiddler、Wireshark、Sniffer、Tcpdump各种抓包工具适用于各种项目,总有一款适合你。
六、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman。
七、Web自动化测试Java&Pyhton
了解自动化的目的,熟练掌握testng&unittest自动化框架,以及断言与日志处理。
八、接口自动化与手机自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用。
九、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心。
十、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选对方向,努力爬坑吧!
上面就是我为大家整理出来的一份Python自动化测试工程师发展方向知识架构体系图。希望大家能照着这个体系在1-2年内完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些软件测试的学习资源,希望能给你前进的路上带来帮助。
这些资料,对于想学习【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助!