今天,思索下软件工程师的出路。
首先,必须肯定,无论是哪个行业,只要成为精英,不愁发展。但是,绝大多数人,由于各种原因,成长并不顺利。
从毕业到现在已经快七年,同时也进入了30岁的门槛。以前一直以为30岁是一个离自己很遥远的年代,不过却这么快就来到了,好像毕业还是就在昨天。
七年的时间足够让一个人无论从身体、财富、思想、人际关系等等方面发生质的变化。比如:笔者现在身体就大不如前了,也许这也是一个好的信号,提醒自己该注意了。
写了两段废话,这里回答下大家的疑问:为啥毕业不到七年,却标记为八年的测试工作经验呢?答案是:加班,呵呵。下面开始回到正题吧。
一般来说,做测试不久后(可能是半年,也可能是一年),自己就会去思考自己的职业发展方向。对于测试来说(转岗的不算),无外乎就四个方向:测试管理方向、自动化测试方向、性能测试方向和测试分析方向。每个方向要学习的重点都不一样,这里不去讨论哪个方向更加有前途,因为适合的才是最好的,下面分别讨论下每个方向大概的经历以及需要注意的地方。
测试管理:测试管理一般来说过程为:项目经理->测试经理->测试总监-> 研发总监(CTO角色)。越往上走对具体的技术要求越低,但是对于技术(战略)规划和管理能力要求越来越高。
对于初级测试管理岗位,其实更多的是一个服务角色,而不是管理角色。如果你对技术不是非常敏感,更加喜欢跟人打交道,并且喜欢去协调和组织工作;并且能够受的了委屈,那么你可能更加适合去走管理岗位(但是千万不要去放弃自己的技术,否则你第一道坎都迈不过去)。
选择这个方向后,就要开始在沟通、执行力、反馈、解决问题等能力方面去培养和表现自己,让上级看到自己这方面的能力,并且跟上级提出想去管理项目的意愿,这样你经过一段时间后肯定会有带项目的机会,剩余的就靠自己去发挥了(小编:后面会分享一个项目经理如何去管理好项目,有兴趣的同学可以关注下)。
自动化测试:自动化测试的一个很重要的目的就是提高测试效率,并且快速的反馈质量。但是各个领域的自动化还是有一些区别的,比如:web自动化和手机软件自动化。而对于自动化来说,首先还是要去学习自动化的框架(这里跟一些朋友理解的自动化主要就是去写代码还是有一定区别的),好的框架能够让你事半功倍。而对于自动化人员来说,学习自动化框架对于自己后面的自动化开发工作是很有帮助的。
这里拿Web自动化来举例子吧!当前流行的就是selenium框架+脚本语言(python or ruby)。去系统的学习下selenium框架,并且尝试搭建起来并且用于自己的项目,这样你对自动化的理解可能就会更深入 (而不要将selenium想象成为简单的录制和回放)。脚本语言还是很简单的,只要你有过编程的基础,上手肯定很快,至于后面就看自己对技术对热爱程度了,可能你会开发出更加适用于同类型产品的测试框架(在效率和可维护性上更牛逼),当然,不管走的多远,都不要忘记了做自动化的目的。
自动化还有一个方向就是走SET的工作,大家不了解的去看看google测试之道吧,还是一本不错的书籍。
性能测试:要做好性能测试,一个最重要的前提就是需要了解被测试产品的系统架构,掌握整个系统的数据流向和交互;这样你才能够分析出系统的压力点,从而制定性能测试计划,否则你再牛逼的性能测试工具都可能达不到测试目的。
然后就是选择一个性能测试工具,这里建议多分析下一些开源的性能测试工具,比如:ab性能测试工具。掌握这些工具的实现原理,这对于后面自己去优化工具来达到测试目的会有很大的帮助。而不是简简单单的觉得自己会使用loadrunner的录制回放以及结果分析就是性能测试的大牛了,这样我只能说,你对自己要求太低了。
实践、分析、验证、反复实践,终有一天你会成为该领域的性能测试大牛以及测试专家,这里不得不说的就是,一般性能测试大牛同时也是测试工具开发的大牛,否则你可能还要去依靠别人(不符合大牛的身份)。
测试分析:这块的技术因为无法量化的评估出效益导致很多测试人员不愿意去走这条道路,这个跟国外的情况还是有很大区别的。大家感兴趣的可以去看看James A. Whittaker 写的《探索性软件试》,看完后,可能你会觉得软件测试真正的魅力原来在这里。而探索性测试仅仅只是测试分析的一方面;这里的测试分析包括:测试设计分析、测试策略分析、测试质量分析、测试需求分析等等;但是不得不说的是,这块确实比较难,很多同学因为看不到自己的明显进步或者研究了一段时间都没有产出,从而放弃了,笔者不得不说这是一个很遗憾的事情(这个过程需要自己不断的总结和积累,没有一个通用的方法,但是你在这个领域持续做了1万个小时,肯定会有产出,这样你就是大牛,并且能够发现测试的兴趣)。