我相信,有很多测试人员会不断问自己,自己到底要不要坚持做测试,测试的职业发展到底怎么样?如果你还在迷茫,在到处找各种大牛问类似的问题,我希望这篇文章,你看完能够结束你的这个烦恼,给你更多的指明方向,当然也有更多的压力。
这个问题,就像大学报考专业一样,很多人问选什么专业比较好,将来毕业就业前景好,薪水起点高。我不会争论这种思想如何不好,回到中国的一句谚语:360行,行行出状元。假如你现在是做测试,你身边同事是做开发,你们对比,肯定有伤害,是吧。会不会有一种,选择了做测试,死路一条的感觉,后悔过没有。后悔也没用,关键是如何去弥补,我们和别人的差距。任何职业,只要你足够努力和坚持,你也会成为大牛和专家。这样吧,如果要给你一个测试职业发展的前景和希望,你可以去任何一个招聘网站,看看阿里巴巴的测试专家的薪水。你看到了人家的薪水,我们很羡慕,当然,你也需要看人家需要的技能,这下压力就大了吧。希望和基本的技能大致了解了,我们下面聊聊测试这个职业。
测试工程师主要干的事情就是测试,找出程序的Bug,尽量在程序发布出去之前,把一些潜在的,严重的bug给提前指出来,降低软件研发过程修复bug的成本。测试是一个比较综合和全面的职业。测试人员需要和很多人员打交道,这些包括开发人员,产品经理,业务人员,运维人员以及其他和这个人软件生命周期有关的人员。软件测试入门门槛低,几乎简单培训不到一个月,人人都可以做测试工作,但是不是人人都能做好测试工作。我们私下经常调侃,一个好的测试人员,他可以写代码,水平甚至不输给一般开发人员。好的测试人员,可以去产品,他懂得一些设计常识,为什么好多,招聘app测试的要求,要有互联网思维,能够提出对产品的改进意见,就是这个道理。好的测试人员,可以去做运维工程师的事情,测试也需要代建环境,好的测试人员,可以熟悉linux和shell脚本,有的可以做软件的持续部署,这个在测试持续集成里面的技能。好的测试人员,可以去做业务。有人在银行软件测试,之后被银行录取了,就因为人家非常了解银行业务,从软件测试就到了甲方的业务人员。所以,测试很容易做,也很难做好,做精通。测试职业发展之路,很长,需要不断学习,不断进步,不断提高自己各个方面的技能,包括软技能和硬技能。硬技能,主要是技术相关,这个是你吃饭的本身,软技能主要是你的工作中的情商,如何处理矛盾,如何处理人际关系等等。
到了这里,对软件测试职业发展,有了一定了解,有动力,也有更多的是压力。有迷茫,不知道如何下手如何去提高。所以,现在开始聊聊,如何提高技术能力这个话题。大致的意思就是,从软件测试入门,学习各种技术,然后到达一个比较好的职位和薪资水平。这是一个很长的,很痛苦的过程。有很多人,没开始就放弃,有很多人,开始了一点,就死在沙滩上,不想改变自己。有的人前进了一大步,初步达到了他想要的结果和目标。下面,我给出一个学习成长路线,也许不适合你,但是希望对你有帮助。
上面只是描述了一种测试职业道路发展规划,偏重代码技术方面。测试领域有,服务器端测试,客户端测试,安全测试,性能测试,接口测试,自动化测试,渗透测试,测试开发。所以,如果你达到了测试开发的水平,其他方面测试,对你来说也不会太难。
软件测试理论知识,这个必备,当然,有些基本概念我都不清楚,所以,有时间,我也得去学习,复习下软件测试理论。这部分包括,软件测试基础理论和方法。例如软件生命周期,测试用例编写方法,软件测试原则。软件测试管理相关技术,软件各个阶段评审,软件测试计划编写,软件测试过程管理,软件验收,软件测试整个过程一些文档规范等等。
语言基础,这部分,你可以选择Java或者Python入门。或者其他编程语言,这部分,在我博客都有入门教程。看你适合Python还是Java,我个人推荐先Python入门,然后再去学习Java。初学诶,认真学习一个月足够,第二门语言,一个礼拜就可以入门。基本上很多思想和语法是相通的。
手工转自动,这是一个痛苦过程,有些人天天看语言基础,不知道如何练习,天天入不了门。这里推荐,在你学习了一个语言之后,你一定要找一个事情去练习,熟悉这个语言的基本使用。推荐,结合Selenium学习Web自动化测试。通过脚本编写,有助于你提高语言基础知识的理解和运用。在练习自动化脚本过程中,你得到快乐,会帮你提升学习兴趣。
自动化脚本开发,这个是在手工转自动过程之后,你需要大量的练习,如果Selenium自动化脚本开发,你起码要完成100个自动化测试用例,你需要对seleinum达到熟练使用的地步。快速写出自动化测试用例。
了解和接触框架,这里提到框架,是只自动化测试框架,不是指开发用到的框架。继续深入研究Selenium和一些自动化测试框架的知识。例如,什么是框架,框架解决什么问题,框架组成组件有哪些。这部分包括,单元测试框架,Java中Junit或者testNG,Python中unittest.
设计简单测试框架,这个在我博客也有,例如Python+Selenium从零开始到设计自动化测试框架。先学会设计一个POM设计思想的框架。
常见设计框架设计,前面我们有了POM设计框架的思想,接下来我们要学习数据驱动框架,关键字驱动关键,混合测试框架,还有行为测试驱动框架。
Linux和数据库,不用说,自动化测试到一定深度,也需要用代码连接数据库去进行测试,linux和shell脚本,基本上测试环境也会接触到。如果要做自动化部署和运维,常见的linux和shell脚本是有必要学习的。这部分,请看linux和shell脚本入门系列。
版本控制和持续集成,有些人在公司接触了版本控制软件,例如SVN和git,随意选择一个你公司在使用的版本管理软件,去学习它,要学会基本的操作,工作中常见的,用得到的需要掌握。持续集成,这个一个很火的话题,看到持续集成就要想起Jenkins,需要安装和简单配置Jenkins,如何在上面挂一个job等等,这部分,接下来我会写系列文章。
Web前端,放在这里,是为后面的web开发学习做准备的,前面的自动化测试,我们接触了一点点前端的知识,这部分已经有了javascript入门教程写,接下来会写html和XHTML和XML和CSS等入门教程。
写一些小程序,假如你是选择Python,你可以试试爬虫。Java其实也是可以写爬虫。
完全掌握一门编程语言,这个可以放在和写一些小程序一起去学习和实践。如果你选Python,你可以学习Django框架进行开发一个web或者一个博客。如果是Java,你需要学会web开发入门,尝试去了解Java三大web框架,优先学习SSH框架。后面的阶段,我就不介绍了,我也不会,也是我的一个学习目标。
虽然市场上,很多测试开发工程师,没有这里提到的各种水平,但是他们有一个特点,开发,代码基础特别扎实,甚至有些做过一两年开发。我强烈建议你按着这个学习路线进行学习,坚持学习,尽量到达测试开发的目标,如果达不到,你也会接近这个目标,你到时候的能力也会让大部分羡慕,相信自己,努力学习,坚持下去,不轻易放弃。