大项目组中的子项目A、C接连被爆出问题。A已经开发完毕,做完单元测试和系统测试。之后是客户试运行,换了一批人做维护,这时发现各种各样的问题,需求未实现完整、需求实现的不对,一些功能和需求不一致,系统漏洞百出,很多问题项目结束前未测试出来。结果是转试运行后,项目组整天加班,真个项目差不多重做了一遍,重测了一遍才消停。C和A的问题很相似。
维护组的负责人天天找领导诉苦,强烈建议谁开发谁维护,以避免前人挖坑,后人被坑的情况。项目组人人疲惫不堪,个个扬言拿了年终奖就走人,害的pm也小心翼翼,不敢太逼他们加班,生怕哪天早上过来,自己成光杆司令了。
为什么会出现这种情况?我们开了好几次总结会,有几点
一、概设做的不够详细,我们的概设主要设计后台逻辑、数据库、接口、画面,由专门的设计项目组做的。项目A的pm抱怨后台逻辑的设计太过简略,无法对开发起到指导作用。开发相当于又要完善概设、又要做开发,当然时间紧任务重了,质量也就不高了。
这样的概设为什么可以交付呢?概设是由专门的设计项目做的,评审时并没有开发组的参与(当时开发组还没有成立),评审人员是各子项目组的Leader,他们也没有意识到这个会对自己产生什么样的作用。你邀请我评,我去参加评审就是了,责任心强点的,多看几眼,多评点问题。责任心弱一点的就是去应个景儿,重在参与,至于评几个问题,你不能强求了吧。更有的人说忙着呢,没空没空,就连评审都不去参与了。在大家都不投反对票的情况下,概设顺利通过评审,交付了,然后就造成了后面开发组的被动局面。如果后面开发组的pm知道自己是那个倒霉蛋的话,估计在早期概设评审时肯定会奋不顾身的参加评审,不把问题改完不会同意他交付的。这就有点象公地悲剧,谁都不知道到底会坑了谁,结果就是谁都有可能被坑了。从后面的A、D项目看都是这样。B和C项目的概设因为当时是该项目pm自己做的,所以自己就忍了,没说出来。
评审覆盖率、评审缺陷密度、交付评审,这些QA整天唠叨的东西,pm经常会嗤之以鼻,认为全是理论,在国内行不通,结果是显然的。
二、代码也没有做充分的评审。前面说过,概设不完善,pm整天忙于解决各种概设的问题,没空去看成员的代码。结果是,代码比较烂。
三、测试人员测得比较粗心。换了一组人测试的时候发现,很多本该在之前发现的问题没有测试出来,一些在测试用例中都写有,但她的确是没有测出来,漏了很多问题。这个问题在好几个子项目中都存在。
这里就有好几个问题
1、测试人员技能问题,包括测试能力、需求理解的程度。测试负责人是否对自己的成员有信心?
2、测试负责人的监控管理问题。是否及时发现了漏测的问题并安排重测或补测?
很遗憾,我们的测试负责人大部分时间也在忙于测试,无法去监控测试人员的工作情况。很多问题在项目结束后换了一组测试人员后才发现。
不过这也提供了一个很好的解决方案,交叉测试,比较容易发现问题。
四、客户提出需求变更后,项目经理口头通知项目组进行修改,很多问题未做记录,未先做需求、设计文档的变更。导致代码和需求不一致,也会有一些修改比较草率的情况,测试人员不清楚变更内容。
几个环节凑合下来,就导致项目的质量相当的不凑合。
这里需要问QA几个问题
1、概设/代码的评审人员符合要求吗?评审覆盖率和缺陷密度符合要求吗?如果不符合,有什么后续的措施?是否在交付前措施都得到了实施?如果不符合\无分析\无措施,是否有相应的汇报?在书面汇报无反馈的情况下是否有当面的汇报?是否识别并汇报了风险?
2、测试负责人是否对测试质量进行了监控?有无相关的数据分析?测试的入口出口条件是否清晰?大家是否都了解?实际执行是否满足入口、出口条件?
3、需求变更的流程有没有?是否对变更进行了书面记录?是否对变更进行了分析、通知、修改、验证?如果修改了相应的需求、设计文档?如果项目没有这么做,对其造成的风险有无汇报?有无跟踪?
经常有人抱怨,公司的CMMI流程流于形式,QA只抓一些鸡毛蒜皮的问题,对项目组没有什么实质性的帮助。如果能做到以上3点,至少来说,项目不会差到哪里去。
当然有人会这么提出反驳意见。
反驳1:数据能说明什么?数据符合了难道质量一定就好了吗?
回答:数据好看,不代表质量一定好。但至少,要使数字上符合要求,你还是要花费些功夫的的。总比评多少算多少强。而且,数字会逼迫你去进行一些分析,不然想分析都不知道从何做起。就像要解决一个问题,你总得知道你的问题是什么
反驳2:哪有空做评审,能把按时完成就不错了
回答:完成包括测试完成,bug改完。如果不做评审,后期测试和改bug的时间会加长。结果一样的。
反驳3:入口出口条件?客户要我某天交付,bug没改完?测试用例没测完?先交付了再改呗
回答:如果一定要交付,遗留问题一定要告知客户。建议交付前做交付评审,主要干系人要参加。如果出口条件不满足,项目负责人要给出解释。
反驳4:哪有空更新需求、设计文档啊,我都给开发人员和测试人员讲解过了。这段时间忙完了再更新
回答:还没想好比较有说服力的回答,这种情况很常见