不知不觉已经从事软件测试六年了,从刚开始到进入外包公司外包给微软做软件测试, 到现在加入著名的外企。六年的时间过得真快。 长期的测试工作也让我对软件测试有了比较深入的认识。但是我至今还是一个底层的测试人员,我的看法都比较狭隘,如有错误还请批评改正。
一、技术方向
就技术方向的职业发展之路,我非常赞同之前看过的一篇文章里说的,如果你打定主意就想往测试技术方向去发展,做一个技术型的牛人,那摆在你面前的就只有三条路:
自动化测试工程/架构师
性能测试工程师
行业性测试专家
特别提醒:你几乎没有其他选择,甭管你的领导怎么忽悠你,做手动测试大量需要劳动力也好,自动化测试现在还没有大规模发展起来也罢,如果你只会手动测试,并且你所测试的软件也没有什么特别值得深究的方面的话,那么可以告诉你你的测试生涯钱途堪忧,说白了也就是没有什么核心竞争力,哪天boss们想砍人了,那你就是第一个。
有些朋友可能会说了,这个不对吧,看咱项目里不是还是80%以上的人都是做手动的嘛,为什么你却说自动化/性能测试才更具有核心竞争力呢?
假象剖析:先说自动化吧,确实,就目前中国测试业的现状来看,80%以上的IT公司里面80%以上的测试人员都在做着黑盒的手工测试,这个假象确实麻痹了一些人,使得大家以为既然大部分人都在做着手工测试,那我也不需要去学习自动化或者性能测试了。就算很多已经实施了自动化测试的公司,也在痛苦地摸索着如何提高自动化测试的效率,如何能够真正提高系统的性能。但不管现状如何,很多公司也必须重视自动化测试。
为什么重视自动化?原因有二
1. 商业上的需要。
很多公司,特别是测试外包公司,销售们在推销自己公司的团队和产品的时候,测试的自动化程度都是一个重要的指标,这年头说测试不说自动化都显得自己“out”了,所以自动化测试能不香吗?
2. 项目需要。
很多管理职位的人,如果不是做测试技术出身,都会非常迷信自动化测试的神力,把自动化测试当成测试的银弹,战无不用,用无不胜,所以相对来说,会比较重视自动化测试的人。
对于性能测试和行业测试专家来说,那就是物以稀为贵了。真正能做好性能测试,并能够通过性能测试结果分析出性能瓶颈,提出性能改进方案的人,寥寥无几。
行业测试专家也一样,比如电信、医疗、ERP测试,能够精通业务,真正能够利用对业务的了解改进测试效率,也是数都能数出来的,你说他们的钱途用得着担心吗?呵呵。
好了,接下来再来说说这三个职位各需要什么样的具体技能吧。
1)自动化测试
自动化测试工程师/架构师
基本能力要求:
熟悉自动化测试的理论及常用框架
熟练使用常见的自动化测试工具并能够根据项目实际需要选择合适的工具或者开发相应的工具
熟悉项目软件架构及层次结构,能够利用自动化测试工具或自定义的框架提高自动化测试的覆盖率和复用率
熟悉脚本类及一到两种常用的编译型编程语言,网络协议及linux平台
2)性能测试
性能测试工程师
基本能力要求:
熟悉性能测试过程模型和过程
熟悉各种常见的应用协议
熟悉性能测试工具的原理及使用
能够根据实际项目配置测试环境,选择合适的性能测试工具或开发性能测试工具
能够通过对被测系统的分析,对性能测试场景进行分析和选取
执行性能测试并根据结果分析性能瓶颈,提出性能提升改进的建议
3)行业测试专家
基本能力要求:
精通某个业务性较强的行业的业务流程及关键技能,如医疗,通信,ERP等特征较明显的行业。(如果你是测一般的网站或者是手机系统之类的话,还是省省吧,这个不是这里指的行业专家)
能够根据对本行业业务的了解和对软件测试的了解,对组织内的软件测试流程和方法做出优化,提高测试效率,节省测试成本
二、管理方向
谈完了技术,当然就该谈谈被无数人所追崇的管理职位了。当然了,能管别人,发号施令,谁不喜欢呢?古人云:学而优则仕,就是这个道理。可职业发展这个金字塔上,能最终站上管理职位的那个塔尖的人又有多少呢?管理职位虽然看似很爽,很诱人,但绝不是每个人都适合做这个岗位的。
也不是说你做了若干年的技术,成了技术大牛,你就一定能去管项目管人,毕竟管理主要是跟人打交道的活,你虽然能把电脑弄得服服帖帖,但不一定你去管人的时候,人就会服你,所以其实谈到做管理,最关键的就不是技术了,用两个比较时髦的词来说,关键就是“沟通”和“协调”,你得会跟客户去做沟通,你得会跟其他人去做协调,这是做管理的先决条件。
如果你觉得自己不善言谈,不想时时面对众人,那兄弟你还是跳过这一节,继续看看其他部分吧。
那么就从做管理来说又可以有什么样的职位选择呢?撇开高层管理什么CXO的不谈,就一般的管理而言,可以选择的管理职位有两类:
1)项目经理
基本能力要求:
较高的沟通和协调能力。一方面你要能把客户哄好了,另一方面你得牢牢取得团队的支持,你要没点沟通能力和协调能力,能行吗?
熟悉项目管理的相关知识,如果能够取得PMP证书(项目管理师认证)是最好的,因为那至少可以证明你从理论上非常专业地学习了项目管理的基本概念,熟悉了项目管理的五大过程组及九大知识领域(详细内容请参考相关PMP书籍),有一定的项目管理经验,理论上是没问题的了。
技术方面呢,不需要你太精通技术,但作为IT行业的项目经理,我一直都认为没有任何的技术背景其实是很难胜任这个行业的管理职位的,因为技术性确实太强,人家谈论实现的时候,你啥都听不懂,是不是挺尴尬的?关键是你还得做出决策。如果打个比喻来说明究竟项目经理需要掌握技术到什么程度的话,可以用两个词:一平方公里和一米。你的知识面必须得有一平方公里宽,但这些知识的深度只有一米。什么都知道一点,什么都不精,或许对做技术的人来说不是什么好事,但如果你是做管理的,那恭喜你,兄弟,继续干吧。
2)测试经理
基本能力要求:
参照项目经理的第一条,必须滴~~
你不需要有特别多项目管理理论基础及经验,但你必须精通软件测试的方方面面,从流程、方法、工具、框架、组织等等,你都必须了解,并最好有实际的项目经验,能够随时指导测试团队的工作,对团队里面的问题提出一定的参考意见和解决方案,对团队的测试流程和方法做出改进。
三、我的选择对吗?
剔除上述所列条件,当然最重要的还是个人的兴趣爱好。你有再强的逻辑思维能力,再强的抗压能力,但是对代码不感兴趣;就算你文档写的再好,但是对测试不感兴趣,那么就不要逼自己干自己不喜欢的事情了,只有对自己想要进入的职业感兴趣了,才能真正的尽自己的全力去努力学习这个职业的知识,所以选择一个自己感兴趣的职业尤为重要。
所以在选择方向的时候,不要人云亦云,别人说技术岗好,我就去干技术,别人说管理岗好我就去干管理,这样容易哪个都干不成。我们应该分析自身的特点,根据实际情况选择适合自己的职位。并且做出选择后,不要因为外界因素动摇自己的选择,也不要因为在学习的过程终于到了难点就放弃,这样不管干什么都会无法深入。
既然确定好了方向,那该如何学习和提升技术呢?
绵薄之力
不知不觉自己已经做了几年测试开发了,由记得刚出来工作的时候感觉自己能牛逼,现在回想起来感觉好无知。懂的越多的时候你才会发现懂的越少。
不用多说,相信大家都有一个共识:无论什么行业,最牛逼的人肯定是站在金字塔端的人。所以,想做一个牛逼的软件测试工程师,那么就要让自己站的更高,成为技术大牛并不是一朝一夕的事情,需要时间的沉淀和技术的积累。
关于这一点,在我当时确立好方向时,就已经开始梳理自己的成长路线了,包括技术要怎么系统地去学习,都列得非常详细。
《软件测试工程师发展规划路线》
一、测试基础
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
程序员一凡 | 测试基础 |
---|---|
测试计划/测试用例 | 黑盒用例设计等价类/边界值/场景分析/判定表/因果图分析/错误推断 |
缺陷 | 缺陷生命周期/缺陷分级/缺陷管理工具禅道/Jira |
数据库 | Mysql/环境搭建/增删改查/关联查询/存储过程 |
Linux | 系统搭建/基本指令/日志分析/环境搭建 |
二、Linux必备知识
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。
查看详情
三、Shell脚本
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
程序员一凡 | Shell |
---|---|
Linux Shell基础与应用 | shell脚本编程介绍,环境类型,变量,参数,运算符,数组的使用,零距离接触脚本 |
Linux Shell逻辑控制 | shell逻辑应用,test命令,流程控制,数据输入与输出,脚本逻辑不再单调,玩出花样 |
Linux Shell函数 | shell脚本函数写法,文件互相调用,脚本实战应用,懂得开发,测试,运维都可以做什么 |
Windows 脚本批处理 | Linux玩够了,再来看看Windows常规命令用法,批处理脚本写法,实战应用,并不是到哪都是Linux,Windows脚本也是常用脚本之一,看到这里可能你就用的Windows |
四、互联网程序原理
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理
查看详情
五、MySQL数据库
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。
查看详情
六、抓包工具
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的
查看详情
七、接口测试工具
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman
查看详情
八、Web自动化测试Java&Python
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理
查看详情
九、接口与移动端自动化
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用
程序员一凡 | 接口与移动端自动化 |
---|---|
接口自动化方案Requests | Python Requests、Java HTTPclient接口框架,都是专业的接口调用、测试的解决方案,使用简单快速,结合工具的使用方式和功能,快速上手并对其操作,解决其中的疑难杂症 |
web+自动化框架整合 | 自动化测试是相通的,如何将web与接口、甚至更多的测试类型和方向结合起来,组成完整的自动化框架 |
Appium环境搭建 | Appium环境相对复杂,针对Android系统进行完整的环境搭建演练,解决环境上的问题,并进行基本的自动化操作 |
Appium自动化实战与框架结合 | Appium整体使用与web自动化类似,引导使用典型功能,并针对一款APP进行实战操作 |
十、敏捷测试&TestOps构建
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心
程序员一凡 | 敏捷测试&TestOps构建 |
---|---|
构建敏捷测试运维架构体系 | 敏捷测试是什么?为什么需要敏捷,行业都提到的devops又是什么?TestOps能做什么 |
持续集成Jenkins框架实战 | 持续集成最常见的一套框架,介绍Jenkins操作、权限、系统管理等,常用构建与运行实例讲解 |
静态扫描测试Sonar | 一款自动化的代码扫描工具,便捷式快速扫描代码中的问题,做到提前发现,统一规范,自动化中的代码测试神器 |
十一、性能测试&安全测试
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!
查看详情
上面就是我为大家整理出来的一份软件测试工程师发展方向知识架构体系图。希望大家能照着这个体系在3-4个月完成这样一个体系的构建。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
最后:【可能给予你助力的攻略】
技术之路就是漫长的打怪升级,不断学习前人的踩坑经验才能提升自己,切忌闭门造车。所谓独乐乐不如众乐乐,分享以上文件,希望能帮助到有心在技术这条道路上一路走到黑的朋友!
最后,祝关注、点赞、收藏的同行都能找到好工作,工资翻几倍!