通常二选一,最残酷。因为选择了一个就意味着必然要放弃另一个。那对于测试和开发,究竟你更适合哪个方向呢?
其实要搞清楚怎么解决这个问题,最起码要先搞明白它们各自的工作职能是什么。
下面举个日常工作中常见的例子:
开发说,测试净找麻烦,客户跟本不可能像他们那样使用软件。
测试说,问题总是会在看似极端的条件下产生,用户总是会不经意触碰到看似极端的不可能出现的条件。
开发说,测试花在异常情况下的精力比测试主流程还多,不知道轻重缓急。
测试说,开发从来不考虑测试的感受,连测都不测就扔给我们。
开发说,我都测了,还要测试人员干什么。
测试说,这么明显的问题你们都不测一下,把我们测试当垃圾桶啊
……
上面的对话并不是争吵,只是表达出了软件测试与软件开发人员工作内容上的区别。简单来讲,软件开发人员就是在生产代码, 但有时也不可避免的会一同产生BUG。而测试人员主要的工作除了测试程序能否满足需求,还需要测试程序可能出现的BUG。
 
1、做软件测试需要掌握的技术有哪些?
1)编程语言
掌握至少一门开发语言,比如c、java、C#等,一门脚本语言,比如Tcl、python、Perl、Ruby、Shell中对于测试工程师未来更广的职业发展非常有帮助。
2)数据库知识,虽然并不是所有的测试工程师都需要掌握一门数据库,比如做移动互联网的,对数据库要求相对较低,但对于大部分大型项目,都会有数据库,所以掌握至少一门数据库,比如Oracle、DB2、Mysql等。
3)操作系统,比如Linux、Unix核心命令也非常重要。对于有些涉及到网络的,网络和通信知识,比如Tcp/IP协议也非常重要。另外数据结构、软件工程等其他计算机知识也最好也具备。
4)软件测试核心技术,掌握软件测试核心的方法论,具体包括软件测试需求分析与软件测试用例设计核心工程方法。
5)掌握主流的软件测试工具,比如性能测试工具LoadRunner,自动化工具典型代表QTP,测试管理工具QC、、开源测试管理工具Testlink、Bugzilla、Bugfree、Jira等。
6)掌握核心的研发流程,比如RUP,测试流程,比如双V模型,或者是现在流行的敏捷测试等,也是同样重要。方法是秘笈、工具是兵器、流程是套路。虽然测试好比武术,棍术好比黑盒测试,剑术好比白盒测试。不同的武术对知识结构要求是不一样。
7)行业知识与背景,这个对于有些行业而言,非计算机专业的人会有些相对的优势。
 
2、开发岗位要求
1)在软件项目经理的领导下,配合完成程序设计和开发。
2)按产品需求进行软件设计和编码实现,确保安全、质量和性能。
3)参与内部测试、部署、实施等工作。
4)分析并解决软件开发过程中的问题。
5)熟悉Java EE 技术,包括Servlet/JSP 、JDBC 、JMS 、Web Service 等,对各种开源的软件如Spring 、Struts 、hibernate/ibatis 、Tomcat 等有深入的了解。
6)熟悉css/xml 等网页技术,熟练Ajax (jquery 、mootools )、Java 技术。
7)熟悉Oracle 、Mysql 数据库。
8)熟悉面向对象编程,具有良好的编程风格、习惯;了解软件开发流程,熟悉MVC 模式;并有在MVC 模式下进行中大型web 开发的经验。
9)可以单独对已有的系统进行维护,工作认真细致负责,有良好的自学能力,独立思考能力,能够在短时间内学习并应用新技术。
 
3、软件测试与开发的职业发展对比
软件测试:
软件测试的职业发展路线要广于软件开发。
在测试技术领域:可以从测试执行工程师、测试设计工程师、测试系统工程师、测试架构工程师、测试专家这个道路晋升,也可以走比如自动化测试、测试开发、性能测试、易用性测试、安全性测试等专项。
在管理的领域:可以从普通测试工程师,测试项目经理、测试主管、测试经理、测试总监、大部门测试总监等晋升。另外从外围IT职业,测试还可以走行业测试专家,比如金融领域测试专家,项目管理、软件测试咨询与培训等、软件质量保证(SQA)、软件销售、技术支持等只要是IT领域的职位都行。
软件开发:
在开发技术领域:可以从软件编码、软件设计与架构、软件需求等领域晋升。也可以从普通开发工程师、开发项目经理、开发经理、开发总监或者研发总监等晋升。
可以转型来做测试:通过学习测试关键技术,来做测试领域的测试开发。但从外围IT职业,开发相比测试能走的相对还是要窄些,很难走行业专家,除非先走需求分析,最后走行业专家。
总结:
想要先快速进入it行业拿高薪就选软件测试,性价比最优的职业选择。其实不管是测试还是开发,只要确定了目标和方向,相信你一定会找到出路。