自从2003年实施和推广GJB5000以来,我们一直以为需要有专职的测试人员。 当有人咨询我GJB5000试点项目需要投入多少人时,我在回答时,通常都会把测试当作专职的人员来计算。我的依据是《XXX装备条例》里面明确要求设计、实现和测试分开,这就意味着设计、实现和测试这三个角色都应由不同的人来承担。 某单位在实施GJB5000A的时候,专门成立了测试组,后来因为开发任务繁重,又撤销了测试组,每个软件工程师都要进行开发,测试交给了第三方评测机构,后来想要过程改进,发现没有内部测试更容易出现问题,又恢复了内部测试,只不过这些测试人员依然承担着少量的开发任务。 所以,软件开发到底需要不需要专职测试人员? 其实,一个行业中的专家虽然他只精通部分专业,但他必须对这个行业的各个专业都要有所了解。比如,对于医护人员来说,不管你是学哪一科的,进入医院的第一年肯定都得轮岗,门诊、内科、外科、五官科、放射科……等你对各种岗位都有基本了解之后再开始分工。 对于软件开发来说,也不能从一开始就分工,设计的设计,编码的编码,测试的测试。因为这样一来,做测试的就基本上再也不写程序了。这并不利于做好测试。测试也需要写测试代码的,不会写程序怎么行?而且如果测试人员连一个程序是怎么做出来的都不知道还怎么测? 如果测试也能写程序,那还需要有专职的测试人员吗? 没有专职的测试人员,可以消除开发和测试之间因为排队等待带来的浪费,从而提高开发效率。下面的这组数据能够提供证明: 假设一个功能点的开发需要1人天,测试需要0.5人天。一支由3个开发人员和1个测试人员构成的团队,一周只能交付8个功能点。
而如果4个都是开发人员,并且开发人员都能够并且愿意做测试工作,他们一周能交付10多个功能点。 如果只有3个开发人员,没有那位测试人员,但开发人员都能够并且愿意做测试工作,他们一周也能交付9个或者10个功能点。 实际上,敏捷团队的成员几乎都是多面手,他们能够消除技能壁垒,从而根据计划的变动,弹性地调整任务,达到各角色和流程之间的平衡。 再想起之前有个兄弟问我的那个问题:没有实施GJB5000之前,我一个人开发软件效率挺高的,怎么实施GJB5000之后效率反而大大降低了? 一个高手开发效率是最高的,因为他不需要浪费时间去沟通,但是,如果团队之中每个人都是高手,再有合理的分工,弹性地安排任务,那么效率是不会降低的。 当时的GJB5000还没有拥抱敏捷,现在不一样了,只要我们时刻想着应用敏捷,开发效率是不会降低的。 你们的项目组里有专职测试人员吗? 这正是: 全能团队效率高,开发测试看需要 参考书目:不敢止步:一个软件工匠的12年,作者:熊节,出版社:人民邮电出版社 |
|