我是在2006年5月跳槽到新单位担任公司测试经理的职位的,新单位是一个很不错的单位,项目饱满,资金等方面也没有太多的问题,但就测试部门工作的情况却很不乐观。具体表现是人员少,任务重,人员不稳定。领导对测试部门的工作很不满意,在面试我的时候就多次表示了对公司目前测试不满,期待我来之后能够带领测试部门有一个比较好的发展。
首先说说我们公司测试部门在这四个月的变化吧 :
1、测试人员大量增加,原来的测试人员为3人,现在为14人,人员扩充了3倍,目前来说,测试人员的数量还不是很多,但相比原来部门的扩充速度还是很快的,另外一个方面,由于我们工作比较有成效,领导基本认可开发人员和测试人员比例可以达到1:0.8或1的比例。我想这个比例对一个国内的企业来说已经是很高的比例了。
2、个人素质的提高。具体的个人素质提高不是很好说,还是用项目来说吧,我刚来的时候,测试人员在一个系统测试的时候,一般测试需求点位500个左右,后来一个项目在作回归测试的时候,测试需求点达到15000个,第二次回归测试的时候测试需求点达到了49000个,这里要说明的是,我们测试需求点的增加不是为了增加而增加,而是对被测试需求各种使用情况分析的更详细,程序覆盖强度越来越大的结果,测试发现的问题深度逐步增强的反应。
3、机器设备的变化,测试人员是开发群体的弱势群体,他们的机器配置也是公司最低的,刚来的时候,全部测试人员都使用P4 1.7完全不能满足自动化测试的需要,目前,测试人员基本都是P4 3.0双核,液晶,测试人员很高兴。另外我们还有专门的测试流程管理服务器,一些淘汰下来的老机器作为专门跑测试用例的测试专用机。
4、开发人员对测试人员的态度改变。测试人员在开发过程中处于弱势地位,这是一个不可回避的现象,原来开发人员可以随意的让测试人员作自己认为需要的测试,而测试人员是没有办法拒绝的,甚至连具体测试的方法和手段开发人员都要干涉,而一旦出问题,首先怪罪测试人员,而不是找自己的责任,测试人员成了项目失败的替罪羊。而现在这种已经发生了很大的改变,至少测试人员有能力展示他们的特长。而不是开发人员的附属。
5、领导对测试工作的态度转变
我刚到单位的时候,领导们对测试工作很不满意,给我印象最深的是领导说,测试部门的工作人员,可用的就留下,不可用的就直接开除,这对测试人员的工作评价实在不高,现在好多了,首先测试部门现在的工作得到了领导的认可(原来我们总是被批评,而现在总是被表扬),其次,人员、设备的配置在增加,最重要的是,我们要求的测试时间可以得到保证。
到单位工作4个月了,测试部门出现这么多的变化,有很多原因,但最重要的就是那句话:做正确的事情,正确地做事情。
个人认为做正确的事情比正确地做事情要重要,道理很简单,中国的一句成语,南辕北辙是最好的解释了,如果不能了解什么事情是正确的事情,那么你做事情的效果越好,则整个项目失败的可能性越大。下边先说说我到单位做的几个事情。
1、和领导达成一个协议:
5月份我到公司正式上班,新到一个公司,人生地不熟。最先要作的事情是在和各位领导接触过程中了解公司的情况,并与领导达成一个大致的协议,我首先和领导达成的协议基本内容是测试部门的工作在3个月内有一个小变化,6个月内有一个大改观,1年之后形成良好的测试流程和测试队伍。领导们也基本同意我的设想。和领导达成这个协议为我以后的工作的开展取得了时间上的保证,(很多领导希望招聘一个高级开发管理人员后,开发或测试立刻有一个改观,在几天内开发和测试完全没有问题,这种心情是可以理解的,但实际上也是不可能的),我的领导在这方面给了我一定宽限,为以后的工作打下了一个良好的基础。
2、了解单位的工作情况
每一个单位都用自己的特点,有优点也有缺点,如果下车伊始就乱下命令,必然是瞎指挥,不但不能改善工作,而且原来单位一些好的做法也必然被你毁掉。所以,刚下车,一定要休息一下,看看周围的环境,再决定如何行动。来一个新单位也是这样,人生地不熟的自然要先看看,首先是有几个部门,各个部门主要方向,几个主管领导,比如人力资源对我们以后人员招聘会比较重要,研发部门有几个?哪个研发方向是单位的最主要的方向,后勤保障部门是那些人员,不要小看他们,部门以后是否可以获得好设备主要就看他们了,这些人职位不高,但属于现管。争取他们对工作支持是很必要的。最后,别忘了了解你的工作人员,无论怎么说,你的工作人员是和你打天下的人。
3、了解单位工作的问题
刚到单位,测试人员都很忙,我则在一边观察,前几天的问题总结了一下。
A:测试人员人员少,队伍分散,由于以前的测试队伍管理比较乱,很多项目不放到测试部门测试,而是将测试人员直接从测试部门调出。在我到岗的时候测试部门只有4名测试人员。
B:测试部门机器的问题,由于测试部门一直不被重视,所有的机器很落后,自动化测试工具基本不可使用,
C:开发人员对测试干涉过多,测试缺少独立性
开发人员对测试工作干涉过多,主要表现在几个方面,
C1:测试内容由开发人员规定,测试方法以及测试手段均由开发人员决定,在测试人员能力弱的情况下,这无疑是一个可行的方法,问题是这种方法要求开发人员对测试方法和手段比较了解,但单位的实际情况却不是这样,另外开发人员对测试工作质量不承担责任,说明白点就是测试人员按照开发人员的规定去做,即使完成了测试任务,也无法保证测试质量,而由于测试质量不好造成产品质量不好的问题,又需要测试人员来承担。
C2:开发人员和测试人员在测试过程中交流过多,在测试过程中由于相关文档不全或者质量问题,测试人员经常需要开发人员进行交流,这种交流是必要的,但也容易产生问题,比如测试在发现一个问题的时候,开发人员总会用这样或那样的借口告诉测试人员这不是问题,不用写在问题报告里,结果很多问题即使被测试出来也被这种糟糕的交流给掩盖起来了。
D:测试时间无法保证
测试时间无法保证主要是以下几个原因
D1:首先是开发人员来规划测试任务,而真正了解测试工作的开发人员很少,测试工作量占到整个开发量的30%-70%。基本上没有开发人员了解这个情况,所以他们给测试留得时间很少,往往是1、2天。这么短的时间根本不能做到完整的测试。
D2:开发人员管理的混乱,软件版本的频繁升级,有时候一个版本和上一个版本的差别只有几行代码,这样不但造成软件配置管理的混乱,而且给测试人员带来了很大的麻烦,最讨厌的是,绝大部分的测试工作都变成了无效测试。除了浪费测试资源以外对开发没有任何好处。
E:测试水平低,测试需求点少,测试强度不够
测试时间的紧张,严重限制了测试人员的测试水平的发挥,单位许多测试人员测试水平是相当不错的,但他们根本没有时间编写测试需求报告,一个系统的测试需求点往往只有几百个点,这种测试需求强度根本无法保证测试质量。
4订立规则
在了解了测试部门当前的主要问题,解决的方法就确定了,具体方法:
A:首先是订立规则,说简单点先确定测试部门内部规则,我规定测试部门只接受系统测试,不接受单元测试和集成测试,说简单点,测试人员进行的测试必须是一个完整的测试周期,最短时间是2周,这样才能保证测试工作的最低测试强度。
B:我向测试人员明确测试人员是软件开发过程中的专业技术人员,他们的特长就是测试技术,在测试技术上测试人员不能比开发人员水平低,所以,他们的测试工作要保持自己的独立性,问题的发现是他们作主,至于发现的问题是否是BUG,是否需要修改,这是开发人员(确切的说是项目经理)和质量保证人员来确定,但是否是问题是测试人员来决定,测试人员判断是否是问题的标准就是测试结果和测试预期结果是否相同,只要不相同,就算问题。其他人员无权对这个原则提出异议。
C:为了保证测试的独立性,我要求测试人员在测试过程中,不要和开发人员有过多的交流,如果有交流也仅仅限制于关于系统如何使用方面(我们没有很好的开发文档),其他的一概不和开发人员讨论,这种方法虽然会对开发工作有一些阻碍工作,但在测试工作当时的工作状态下是很必要的,否则整个测试工作的独立性根本无法保持。
D:使用测试流程管理工具,我们原来的测试计划、测试用例都使用word文档来管理,很不方便,我来单位后,采用了专门的测试流程管理工具,也就是说一个完整的测试,首先写测试计划(主要内容是测试人员,系统需求,时间等方面的信息,这个东西还是使用word来编写),其次是测试需求点、测试计划(这个测试计划是我们测试用例执行的先后次序),每个测试用例的测试步骤,以及发现的所有问题。在最近的一段时间,通过测试工具的使用,使我们测试需求点的管理从不规范,随意写,到有条理,有顺序,有了很大的变化,我们的一个系统,在我来以前测试需求点大约是600个。在我们后来的几次回归测试中,测试需求点,分别为20000,500000,60000个,测试需求点的变化,说明了测试强度的增加和规范。
E:测试结果需求评审,否则不进行回归测试。这是一个原则问题,确切的说测试人员在开发过程中不能直接创造价值,他们的工作必须通过开发人员才可以得到体现。开发人员是否重视测试中发现的问题,是否对这些问题进行认真的评判和修改,不但关系到测试人员工作价值的体现,而且对测试部门工作安排也很重要。在我们测试的几个项目中,如果开发人员认真对待测试结果,一般来说,进行1到2次回归测试,整个系统bug就会呈现出收敛状态,否则,测试人员需要无休止的测试。在测试过程中,我一方面保证测试周期的时间的要求(最少2周)。一方面,和质量保证人员配合,对于那些不认真对待测试结果的项目组,采取不评审,就不进行回归测试的方法。(反正项目延期不是测试部门的责任,有点无赖,但有时候也是没有办法)。保证了测试的有效性。