软件测试和软件开发哪个专业好?

软件测试人员和软件开发人员哪个岗位要求更高?哪个更有前途?业内对这个问题的争论似乎从未停止过。有人指出,这个问题其实是一个伪命题。武汉达内IT培训学校的专家表示:两个不同岗位的员工的能力是无法比较的,因为他们没有可比性。但不可否认的是,这两种立场之间存在不可分割的重叠区域。本文列举了从业者对软件测试和软件开发的几种典型观点,并收录了其对应的职业发展方向,为广大从业者提供参考。有软件开发毕业生说,还在学校的时候,老师经常说,如果女生以后不能从事开发,可以考。刚进企业的时候问了一下未来几年开发人员的发展情况,被告知如果个人水平差可以转行做测试。言下之意是否意味着软件测试人员的技术要求低于软件开发人员?针对这个问题,很多开发人员和测试人员都表达了不同的看法。这里总结了几个典型的观点,包括对职业发展的一些建议,大家看看吧。《造炸弹》《拆炸弹》《我的第一本C++书》的作者说,他不认为程序开发人员的技术水平比测试人员高。他将开发人员和测试人员分别比作“炸弹制造者”和“炸弹拆除者”。在这方面,陈良桥甚至认为测试人员的技术水平应该高于开发人员。陈良桥进一步指出,之所以有很大一部分人认为“开发人员的技术水平比测试人员高”,反映了国内行业重视程序执行,轻视程序质量的现状。拥有“生产力”和“额外支持”的Adobe程序员冯东,恰恰与陈良桥的观点相反。他说,在软件行业,只有开发者平等的公司才能测试。其实开发者的生产力可能相差十倍。冯东认为,目前行业内大多数公司的测试人员都是扮演“辅助”的角色,只有开发人员才能扮演“生产”的角色。换句话说,如果只能雇一个人,你会雇开发人员还是测试人员?“一个炸弹制造者至少可以算是半个炸弹制造者。如果你坚持说炸弹制造者也能制造炸弹,我只能说你给他的头衔是错误的。”所以测试和开发的技术水平不在同一个“情境”里。微软亚洲工程院项目开发工程师陈认为,对于并不真正了解什么是测试的人来说,“开发人员的技术水平比测试人员高”的观点具有代表性。陈付起说,软件测试的目的是保证软件的质量,而从工程学的角度来看,软件测试人员扮演着重要的角色。他认为,要真正理解测试是什么,首先要明白测试是为了什么。陈付起介绍了软件测试的三个方面:第一个方面是监控产品过程。这个过程中的程序开发和bug修正是一项时间平衡的工作。如果发展过快,可能会给下一阶段带来更多的问题。而且每个发展阶段都需要一定的信息收集和分析。这些只能由测试人员来完成。第二个方面是构建复杂的应用场景。以构建一个完整的ActiveDirectory服务器回归测试环境为例。陈付起曾为此构建了11个域控制器,还不包括可能在中间动态添加或删除的客户端。该过程涉及大量的破坏性操作,每次破坏后,必须恢复现场以进行下一次测试。陈付起认为这种测试场景是任何程序员都无法构建的。第三个方面是简化问题报告。用户举报发生时,用户给出的描述往往缺少直接指向问题的步骤描述。这时候就需要对流程进行分析,与用户反复沟通,才能最终定位关键步骤,而这一系列工作并不适合开发人员来处理。陈付起介绍了一些不需要特殊测试的情况。即软件本身不包含复杂的应用场景,如单机软件、单服务器网站等。而更复杂的应用场景需要通过专业严格的测试,比如股票软件服务器系统。没有长期熟悉这种复杂系统的技术人员,是不可能做好测试的。测试和开发所需要的技能是重叠的,但是属于两个要求不同的岗位。如果你做测试是因为开发技术不好,不代表你能成为一个好的测试人员。目前,开发和测试的分离助长了一种趋势:一些程序员越来越不关心他们的程序的质量以及他们的程序是如何被使用的。在CSDN的微软测试专家组论坛上,有人曾经说过,一个产品在发布时对他来说已经死了,他不再关心了。陈付起认为这代表了一些程序员的观点。但这不是程序员的错,也不是分工的错。是无能的领导设立测试这个职位只是为了扔垃圾,却无力把握两个角色的关系,改进产品。这种无能的另一个倾向就是雇佣大量的测试人员,以为好的产品可以靠人堆出来。他们忘记了测试人员扮演的角色是监控质量变化,而不是提高质量。提高质量的唯一途径是发展。丢行李可以让人轻装上阵,但只知道丢行李是做不出好产品的。iOS开发者应时认为,开发者和测试者的技术水平要求大致相同,只是侧重点不同。开发人员需要精通某个技术点,测试人员需要对某个技术方面高度熟悉。