我从知道有软件测试这个职业到现在共五年不到时间。也潜伏在51testing论坛里差不多五年时间,基本没怎么发过贴,也没怎么回过贴,只是有空时偶尔看看论坛里的帖子。
从正儿八经从事测试工作到现在也有4年半时间,我用了这些年的时间从一个初始的测试执行到测试组长,成为测试主管,再到测试经理甚至同时带着产品经理团队。这四年半时间积累了一些东西,但不敢说自己是技术大牛或者自己试测试专家。因为这些名头都是相对的,在菜鸟前夸夸其谈也会被人称作专家大牛,但真正说技术到了什么阶段,其实在整个测试领域里面也仅仅在某些方面是比一些人多了解东西,多接触了些东西而已。一直想写些东西,算是给自己这么些年做个总结,对测试这个职业做个总结。 当然也仅仅是个人的一些意见
初级阶段
在N年前,进了一家国内较知名的移动互联网公司,刚接触软件测试。虽然这个职业在国内已经发展了将近有十年时间了,但是对于初出社会的学生来说,还是相对陌生的(包括现在在软件开发相关学科里面很少有软件测试相关的课程)。那时候有一些自动化测试的概念,但是在大部分公司里面其实大多数还是手工测试,更何况是刚刚兴起的移动互联网行业,压根就没什么自动化的方式,完全手工。所以一天到晚都是拿个手机对着用例执行、参加各种评审会议、写个各种文档(虽然那时候有敏捷的说法,但是公司还是按照传统瀑布式的流程,于是乎难免就有很多很多文档,很多很多评审)。开始也没觉得什么,毕竟是自己选择的职业,也还算比较新奇的。但是久而久之就发现一些问题:
为什么在一个研发团队中测试的地位不高?
为什么测试每天做的都是同样的工作,但是应聘要求要这个那个的?
怎么规划职业发展比较合理?
那时候想想都想不明白,但是后来慢慢的都有了答案:
1. 这样一个研发团队中,测试仅仅是去验证软件是否按照产品的要求去完成相应的功能。不了解完成相关功能如何实现,从而在产品出来后如果有问题就比较被动。如果碰到一些可改可不改问题,开发就会说这个问题解决不了,这个问题就是这样不算问题,我相信很多测试都碰到过类似的情况。测试仅仅是当做一个用户这样去工作,这样一来测试的地位就很尴尬了,随便来一个人只要思维清晰一点就可以代替你的工作。从整个公司管理角度看到的情况就是,测试仅仅是来做功能测试的,这样的职业门槛很低,所以地位不会得到重视。
要如何去解决这样的问题呢?我目前的做法,测试介入产品设计阶段,介入开发设计方案阶段。在产品角度,测试对需求的把握程度比开发跟精确,更细致。而且通过对测试工程师能力培养,使之能够知道在完成这块功能的时候,需要怎么去设计,会用到哪些技术。
久而久之就会变成我部门目前的状态:产品经理出了需求后,测试和产品经理、开发做大量沟通。后续到研发阶段,测试俨然就是这个项目的产品经理了,会和开发讨论需求,并监督其在开发阶段按照需求来研发。另一方面,在研发阶段,虽然测试不需要给出一个设计方案,但是很多时候测试的方案往往会被开发主管直接使用,或者做参考,有时甚至为一个功能的实现方式争论。后期测试阶段,测试会按照一些自己的逻辑去执行,覆盖面明显有提高。
这样一来,产品的质量明显提高,测试地位也提高。
2. 第二个问题,其实分两个方面来讲。第一个方面,很多公司的HR有时候不大专业,在发布一个岗位招聘信息的时候,往往看了别人信息中写了会LR、会QTP等等等 就往上贴,也不会去考虑自己招的这个岗位具体是怎么个要求。有时候去跟这个招聘的需求方去沟通,相关的测试经理也就按照行业内的一些工具,不管三七 二十一就往上贴,显得自己要招的岗位是多么多么牛逼。这样就会出现一些纯粹黑盒测试岗位,要求精通代码。做功能的测试岗位,要求会用LR。
但是从我的个人角度来看,大部分的要求其实并不过分。一个测试如果仅仅做功能测试,有时候可能不会用到一些工具。但是如果想更深的去了解实现方式,稍微的代码能力还是需要的。对于不同的项目,可能会用到不同的知识点,可是千变万变就那么些东西,无非是代码,数据库,操作系统,缓存,算法 等等等等 。而其他的一些技能,是对自己提升身价有很好的帮助,也对自己职业发展有很好的帮助。所以我一直认为测试是对知识广度要求比较高的职业,既然选择了这个行业就要不停的去拓展自己的知识面。
3.对于第三个问题,也是见仁见智了。很多人选择测试转管理,转开发等等 都有。从我角度来看,测试发展一般有那么几种:
对技术比较感兴趣,肯往深的去钻研的,后期发展成测试技术专家,或者专开发成为开发领域的专家,抑或变成技术管理。对某些领域的测试,有很高的技术修养。
沟通能力,团队概念比较强的,转测试管理。当然专管理也是要看机会的。测试管理 就有一定的测试技术 和测试理论 ,但主要还是管理能力。
有些同志就直接换个职业,转成项目经理 或者 产品经理。在这些岗位,测试工程师是很有优势的。
过了一些时间(写累了,以下内容先列个提纲,后面有空再写吧)
过了一些时间,我碰到个机会,转去了系统测试部门,并且慢慢的成为一个组的leader。从那时候起就开始接触到了一些自动化和性能测试方面的内容。那时候的系统测试有很多时是去写一些接口代码。然后用这些接口代码去过用例,然后通过接口代码去做性能测试。其中也是有一些总结:
1.什么时候做自动化比较合适?
2.怎么样去建立一个自动化测试团队比较合理?
3.性能测试是需要一个什么样的团队,什么样的环境去做?什么时候去做性能测试比较合理
再后来
成了测试主管
1.什么样的人比较合适做测试?
2.一个部门怎么样的去构建,会比较有战斗力?
3.管理到底是管员工,还是管什么?
现在
测试经理兼管产品
1.怎么样去定位测试 才能使其迸发最大的能量?
2.敏捷是个什么样的东西?我们现在这种敏捷的做法对么?
(未完待续)
从正儿八经从事测试工作到现在也有4年半时间,我用了这些年的时间从一个初始的测试执行到测试组长,成为测试主管,再到测试经理甚至同时带着产品经理团队。这四年半时间积累了一些东西,但不敢说自己是技术大牛或者自己试测试专家。因为这些名头都是相对的,在菜鸟前夸夸其谈也会被人称作专家大牛,但真正说技术到了什么阶段,其实在整个测试领域里面也仅仅在某些方面是比一些人多了解东西,多接触了些东西而已。一直想写些东西,算是给自己这么些年做个总结,对测试这个职业做个总结。 当然也仅仅是个人的一些意见
初级阶段
在N年前,进了一家国内较知名的移动互联网公司,刚接触软件测试。虽然这个职业在国内已经发展了将近有十年时间了,但是对于初出社会的学生来说,还是相对陌生的(包括现在在软件开发相关学科里面很少有软件测试相关的课程)。那时候有一些自动化测试的概念,但是在大部分公司里面其实大多数还是手工测试,更何况是刚刚兴起的移动互联网行业,压根就没什么自动化的方式,完全手工。所以一天到晚都是拿个手机对着用例执行、参加各种评审会议、写个各种文档(虽然那时候有敏捷的说法,但是公司还是按照传统瀑布式的流程,于是乎难免就有很多很多文档,很多很多评审)。开始也没觉得什么,毕竟是自己选择的职业,也还算比较新奇的。但是久而久之就发现一些问题:
为什么在一个研发团队中测试的地位不高?
为什么测试每天做的都是同样的工作,但是应聘要求要这个那个的?
怎么规划职业发展比较合理?
那时候想想都想不明白,但是后来慢慢的都有了答案:
1. 这样一个研发团队中,测试仅仅是去验证软件是否按照产品的要求去完成相应的功能。不了解完成相关功能如何实现,从而在产品出来后如果有问题就比较被动。如果碰到一些可改可不改问题,开发就会说这个问题解决不了,这个问题就是这样不算问题,我相信很多测试都碰到过类似的情况。测试仅仅是当做一个用户这样去工作,这样一来测试的地位就很尴尬了,随便来一个人只要思维清晰一点就可以代替你的工作。从整个公司管理角度看到的情况就是,测试仅仅是来做功能测试的,这样的职业门槛很低,所以地位不会得到重视。
要如何去解决这样的问题呢?我目前的做法,测试介入产品设计阶段,介入开发设计方案阶段。在产品角度,测试对需求的把握程度比开发跟精确,更细致。而且通过对测试工程师能力培养,使之能够知道在完成这块功能的时候,需要怎么去设计,会用到哪些技术。
久而久之就会变成我部门目前的状态:产品经理出了需求后,测试和产品经理、开发做大量沟通。后续到研发阶段,测试俨然就是这个项目的产品经理了,会和开发讨论需求,并监督其在开发阶段按照需求来研发。另一方面,在研发阶段,虽然测试不需要给出一个设计方案,但是很多时候测试的方案往往会被开发主管直接使用,或者做参考,有时甚至为一个功能的实现方式争论。后期测试阶段,测试会按照一些自己的逻辑去执行,覆盖面明显有提高。
这样一来,产品的质量明显提高,测试地位也提高。
2. 第二个问题,其实分两个方面来讲。第一个方面,很多公司的HR有时候不大专业,在发布一个岗位招聘信息的时候,往往看了别人信息中写了会LR、会QTP等等等 就往上贴,也不会去考虑自己招的这个岗位具体是怎么个要求。有时候去跟这个招聘的需求方去沟通,相关的测试经理也就按照行业内的一些工具,不管三七 二十一就往上贴,显得自己要招的岗位是多么多么牛逼。这样就会出现一些纯粹黑盒测试岗位,要求精通代码。做功能的测试岗位,要求会用LR。
但是从我的个人角度来看,大部分的要求其实并不过分。一个测试如果仅仅做功能测试,有时候可能不会用到一些工具。但是如果想更深的去了解实现方式,稍微的代码能力还是需要的。对于不同的项目,可能会用到不同的知识点,可是千变万变就那么些东西,无非是代码,数据库,操作系统,缓存,算法 等等等等 。而其他的一些技能,是对自己提升身价有很好的帮助,也对自己职业发展有很好的帮助。所以我一直认为测试是对知识广度要求比较高的职业,既然选择了这个行业就要不停的去拓展自己的知识面。
3.对于第三个问题,也是见仁见智了。很多人选择测试转管理,转开发等等 都有。从我角度来看,测试发展一般有那么几种:
对技术比较感兴趣,肯往深的去钻研的,后期发展成测试技术专家,或者专开发成为开发领域的专家,抑或变成技术管理。对某些领域的测试,有很高的技术修养。
沟通能力,团队概念比较强的,转测试管理。当然专管理也是要看机会的。测试管理 就有一定的测试技术 和测试理论 ,但主要还是管理能力。
有些同志就直接换个职业,转成项目经理 或者 产品经理。在这些岗位,测试工程师是很有优势的。
过了一些时间(写累了,以下内容先列个提纲,后面有空再写吧)
过了一些时间,我碰到个机会,转去了系统测试部门,并且慢慢的成为一个组的leader。从那时候起就开始接触到了一些自动化和性能测试方面的内容。那时候的系统测试有很多时是去写一些接口代码。然后用这些接口代码去过用例,然后通过接口代码去做性能测试。其中也是有一些总结:
1.什么时候做自动化比较合适?
2.怎么样去建立一个自动化测试团队比较合理?
3.性能测试是需要一个什么样的团队,什么样的环境去做?什么时候去做性能测试比较合理
再后来
成了测试主管
1.什么样的人比较合适做测试?
2.一个部门怎么样的去构建,会比较有战斗力?
3.管理到底是管员工,还是管什么?
现在
测试经理兼管产品
1.怎么样去定位测试 才能使其迸发最大的能量?
2.敏捷是个什么样的东西?我们现在这种敏捷的做法对么?
(未完待续)
-----------------------------------------------------------------------------------------------------------------------------