软件测试工程师,一个即将消失的职位
很多年以来,软件测试一直是一个地位尴尬的职位。作为软件测试工程师,他是企业产品质量的最后一道防线,不共戴天的敌人是软件开发工程师,因为他必须不停的在软件开发工程师发现的代码中找bug,经常会听到在软件测试工程师和软件开发工程师之间的撕逼:“你这个功能实现的不对”,“不对是你自己的理解有问题,这功能绝对没有任何问题”。当然我们今天不是谈论如何理解和定义功能的正确与否,这个又是一个很大的主题。
软件测试的尴尬地位在于,软件测试一直被认为是一个技术能力要求比软件开发要低的职位,在很多公司软件测试人员的工资也要低于软件开发人员。
事实上,在很多公司,软件测试人员的技术水平确实不如软件开发人员。不但如此,其实就连很多应聘软件测试,将软件测试当做自己发展方向的人,他们选择软件测试行业的原因是认为以自己的能力做开发比较困难,或者自己没有兴趣做开发,然而自己的专业就是计算机,所以当个软件测试工程师,不必那么费脑子,也是自己比较好的选择。所以你会发现在软件测试行业的女性比在软件开发行业的女性要多很多。
你可能会认为软件测试工程师包揽了所有软件测试的任务,然而,软件测试的全过程却并不是都是由软件测试工程师包揽的。
首先,一般软件开发工程师写完代码后会自己先做个测试,至少要能build成功和自己改的功能可以work后才能check in,这个简单的测试是由软件开发工程师完成的。
第二,软件测试分为白盒测试和黑盒测试。白盒测试是在能看到代码的情况下来测试代码的逻辑是否正确的测试。因为针对的是代码的语句和分支的测试,所以是由写这个代码的软件开发工程师自己写单元测试来完成的,这部分测试不属于软件测试工程师的工作范围。
所以软件测试工程师工作的范畴基本就在黑盒测试。黑盒测试是在不知道代码的情况下对产品功能进行的测试,也就是所谓的functional test。但是一般在单元测试的时候,很多的bug其实已经可以被发现了,所以其实functional test能发现的问题其实并不会太多,大多是些corner case,这是导致黑盒测试效率低下的主要原因。
只有在开发流程不规范,软件开发人员不写单元测试,或者单元测试没有经过很好的审查的情况下,软件测试工程师才可能在黑盒阶段发现很多的问题。
然而黑盒测试阶段的成本很高,因为不知道具体代码所以黑盒测试没有针对性,发现bug的效率很低,测试人员常常要加班。而单元测试是非常有针对性的,可以完全自动化并且和build集成,发现bug的效率高。所以很多企业认识到,与其在黑盒测试阶段投资,不如在单元测试阶段投资,把开发流程规范化,性价比更高。
黑盒测试也分为两种,一种是手工测试,一种是自动化测试。手工测试是低端的测试,主要是在界面上点鼠标来发现产品潜在的问题,发现bug的效率最低。所以很多公司都在慢慢杜绝手工测试,转向自动化测试。
有些领导认为自动化测试不够准确,特别是模拟的界面点击可能不准确,或者认为自动化测试在某些场景下无法替代手工测试。其实以现在的技术,任何手工测试都可以自动化,模拟的界面点击出错等问题,其实是自动化代码的问题。既然自动化测试其实也是代码,那么就可以为自动化测试代码编写单元测试,至少我目前的team就是这么搞的。要相信一切皆可自动化。
对于自动化测试,软件测试人员需要写代码,然而要写好自动化测试的代码,很多时候还必须编写自动化测试的整个框架,而且还要使得自动化测试的代码达到很好的效率,其实需要的技能并不低于软件开发人员。这样与其去找一个代码能力不强的软件测试人员,何不直接找一个软件开发人员来写自动化测试呢。
之前在前公司参加过一个敏捷开发的培训,有软件测试的同事提出了问题:软件测试在敏捷开发中处于什么样的位置。然而据我所知,敏捷开发scrum并没有明确提到需要软件测试专职人员,因为在敏捷开发过程中开发和测试已经混在了一起,一个人既要做开发又要做测试,所以已经不存在纯粹的软件测试职位了。后来任何的对敏捷开发方法的试图加入专职测试团队的扩展,其实只是为了调和敏捷开发和企业现有测试团队的矛盾而硬加上去的而已,这样的敏捷开发,效果必然有所折扣。
软件测试的真正尴尬在于,软件开发人员都能顺手做软件测试,但软件测试人员却并不是每个人都有足够的技能做软件开发。随着黑盒测试的重要性越来越降低,企业开始倾向于直接招软件开发人员,而不是招软件测试人员,软件测试这个职位将在不久的将来消失。
几年前微软有SDET(software development engineer in test)的职位,专门是写自动化测试的,但现在微软已经没有SDET的职位了,新招的人全部是SDE。这也体现了软件测试职位已经被并入到了软件开发职位。
综上,软件测试这个行业正在被软件开发吞并,可能不久就会慢慢消失,以软件测试做为自己的职业发展方向目前来看是不太明智的,我建议如果实在不想写代码,应向产品经理或者项目经理转型。