刘清富:百度的项目周期都非常短,项目非常多,这种现象也是有的。但我们的QA工程师是有权说“不”的,QA是关注质量的,并不是QA自己去关注,是所有人都关注。我们在什么时候做呢?是要在产品报告提交测试之前要做。通过规范的流程提交正式的文档,如果没有做好就可以被打回。如果没有做好,是提交不了测试的。对百度来讲,这个项目就不能上线,意味着所有的工期会延迟,这是一个团队来承担的。也许他现在所做的项目是失败的,这个进度会延期,这样其他方面就会受到影响。这样他们就会马上解决出现的问题,如果没有解决问题的话,我们会把这个问题提交上一层管理者,例如各个总监,进行协调。工程师如何解决这个问题,是过程执行问题还是工期方面的问题,那么我们会有一个结论,使这个项目的进展更加合理,质量更加有所控制。 嘉宾主持Bluesky:谢总是怎么看待进度和质量冲突的问题? 谢琳:进度和质量的冲突肯定是会存在的。但不同的项目对过程有不同的要求,对进度和质量的要求也可能是有所不同的,比如有的客户对项目质量要求非常高,会选择在进度方面有所牺牲。有的客户对进度要求非常严格,但是他的应用范围可能比较窄,就会把进度做为首要目标。当进度和质量产生冲突的时候,不同的业务部门所代表的意见会不一样,作为质量部门肯定会对质量进行把关。如果达不到质量要求的话,会让进度做一定的延迟。 嘉宾主持Bluesky:于老师如何看待这个问题的?国外是怎么处理这些情况的? 于波:刚才用友的谢总和百度的刘总也介绍到了,他们俩是把质量保证的功能针对不同企业的特点应用。QA是对质量负责,和企业的进程目标有关。刚才两位老总都讲到和进度等其他问题产生冲突,现实生活中我们公司是做项目,不像在研究所做纯研究的。Deadline有这样的一些内容和要求的时候,一个是要根据用户的情况,一个是特别关注设备,如果进度分批处理之后,对用户会有所影响。我们一定要按照流程来做,它支持人员和技术充分发挥的平台,对可视性要进行掌握,质量才能有所把握。在项目的早期就注重质量保证方面的工作,在需求方面尽早地把质量观念引进来,这样才能避免在中后期造成大量的浪费。不要在整个项目结束的时候才注意质量问题。所有的行业都是这样做,只不过软件更先进一些,任务更重,我们处理的工作更复杂一些,更需要我们把质量的关注度转移到项目开发过程中来。不像其他的制造业,我可以停下来,我检修机械、人员调整等等,但我们软件开发没有这方面的问题,要把质量保证始终贯彻其中。 嘉宾主持Jacob:从防止进度和质量冲突发生来说,有两个方面,一个是进度,一个是质量。傅老师,您能否在这方面提供一个很好的方案吗?如果效率提高了,进度是不是就会提前了?您能否给我们一些好的建议? 傅纯一:刚才几位都谈到,进度和质量都是有冲突的,保证开发进度要以牺牲产品质量为代价。如果我们把项目作为一个整体来看,比如做项目的时候为了赶工,省略了一些应该做的步骤,但这些步骤都是有助于保证产品质量的。短期来看是按时交付了产品,但大家都知道这样的产品交付之后,可能会有质量上的问题暴露出来,这时候还要返工,把这个时间算上的话,进度就会比原定的计划更长。刚才于老师提出一个很好的观点,我们应该尽早把质量问题发现出来。IBM Rational 为大家建议了两个最佳实践经验:迭代化开发和持续的质量验证。通过迭代化开发来及早发现软件开发中的质量问题,在整个迭代的过程中连续地检验产品质量。其实项目成功的标志是什么呢?光保证质量是不行的,质量、进度、成本,三者都要全面考虑。一个成功的项目,是应该在这三者之间有一个比较好的平衡,这三个方面都要做得比较好。在实际工作中可能很难把这三者都做得很好,但是我们通过一些好的开发方法,一些好的工具的配合,还是可以全面满足这三方面要求的。从这个角度上,可以说是质量和进度并不矛盾。如果质量有问题,进度还是会被拖延;当然进度还是要保证,如果不能及时的把产品交付市场的话,就会丢失市场的份额,失去客户;但是质量有问题的话,质量还是回转向你的竞争对手,所以要综合看待这个问题。 嘉宾主持Jacob:在这次聊天活动之前,我们在CSDN的网站上做了一次企业QA执行情况的调查。在这个调查中,包括了两个问题:一个是企业的规模,一个是QA的组织结构。我们把这两个因素综合起来分析以后,我们发现之间有一定的关联性。调查分析结果显示,企业规模在300人以下的,QA的组织结构多数采用的是项目组的成员兼做QA工作。而在300~800人的企业里,则多采用独立的QA组和QA部门。大部分800人以上的企业都设有专职的QA,但这个QA是组,而不是独立的QA部门。各位对这个调查结果有什么看法? 刘清富:从百度的角度来讲,互联网行业和传统行业有所差别。我个人认为,不管是做QA还是做测试,这样更好操作,从过去七八年我自身经历的情况来讲,并不是说QA放在研发部门就不合适,我觉得最重要的执行起来要适合自己的执行方式,如果QA向直接报告的人,对QA非常公正的、非常重视的话,这样也是一个很好的方法。在这个团队里有效的解决会更加顺畅,百度对互联网的架构还不太一样,我们也是服务多条产品线,不可能把QA放在一个产品线里面去。因为这样成本比较大。QA作为一个部门的比较少。我们要使QA最少的成本得到最大化的体现。 嘉宾主持Jacob:谢总,请您从用友软件工程分析一下刚才提出的问题。 谢琳:我觉得第二种结构和第三种结构没有本质上的区别,800人以上的公司肯定会设定多个不同的开发机构,这个开发机构里面QA的设置肯定和小的开发部门有独立的关系,第二种和第三种结构没有太大的区别。像组内人员兼任QA的情况没有不存在的理由,在整个企业来讲,到了比较高的成熟度级别的时候,每个人在做QA应该做的事情,在这种情况下很少的QA和没有QA都能够使项目达到高水平,当然这是一个比较极端的情况。我个人还是不同意小企业把QA放在项目组内部,这样QA是向项目经理报告的,如果项目经理没有遵从相关的过程,以及出现项目管理及项目风险的问题,可能就被耽搁了。 嘉宾主持Jacob:谢总,您刚才提到成熟度对QA的影响问题。我们的调查还有一个结果:企业的成熟度、所通过的CMM级别和是否通过ISO9000标准,与企业的人员规模是相关的,其中是有一定规律的。通过CMM二级的企业,多数的QA占到2%~3%。而通过CMM四五级的企业,QA的人数则增加了一倍。 谢琳:我觉得成熟度级别越低的企业需要的QA数量越高。如果公司的相关岗位的人员都在自觉遵守一个规范,所需要的QA的工作量是会降下来的。比如说德国在应用CMM的公司,所需要的QA是很少的。在用友的情况是这样的,我们的QA和开发人员的比例,是按100:3的比例配置的。我们监测了一下QA的实际工作量和项目工作量,实际上在执行过程中是到百分之二点几,并没有到3%。我个人认为,一个QA监控很多个项目的时候,质量不会很好。一个QA最多是三到四个项目,这样的结构下,我觉得他会很好的完成工作,如果太多的话,就比较分散。 网友提问:谢总,我知道用友在质量管理体系方面取得了一定的成绩,也知道用友是在用ISO9000的规范,想知道用友在CMM方面有没有成功的案例? 谢琳:有。我们去年有一个参加CMM 5级评估的项目,在项目初期就制定了一个质量目标,就是在需求阶段、在设计阶段等发现的缺陷度应该达到什么样的比例,尽量把缺陷的发现比例往前提。在需求阶段,他们进行了很细致的peer review,发现了比较多的缺陷,这一点在当时所有的项目里面是做得最好的。这个项目在需求阶段进度上有一些延误,到了设计阶段的时候进度是吻合的,但到了实现阶段,也就是编码阶段的时候这个项目的进度就有了提前,到测试阶段的时候周期大幅度缩短,并且测试阶段发现的BUG数也是比较少的。到客户现场进行交付实施的时候,只发现了两个BUG,这个系统就顺利的运行起来了。之后系统几乎没有维护的工作量。这是我们的一个例子。 网友提问:傅老师,听说在IBM有一个质量跟踪矩阵,能否介绍一下? 傅纯一:我不知道这位网友具体所指的是什么追踪?我们有一个贯穿整个软件开发过程的跟踪体系,从客户的业务需求到软件需求,保证客户的业务需求都得到了满足;再从软件需求到设计元素,保证所有的需求都被实现了;从需求还可以跟踪到测试,保证测试的完备性,保证软件开发的过程中需求和最终系统之间的一致性,我们在测试中发现的软件缺陷就是属于需求和系统之间的不一致。我们有一个工具RequisitePro 专门来支持这种追踪关系,非常有意思的是我们有一些客户就是为了满足CMMI需求管理(REQM)过程域中关于需求追踪性的要求而来购买这个产品。 嘉宾主持Jacob:刚才谢总说到公司的QA人员的比例控制在3%左右,实际上是控制在百分之二点几。百度关注的可能是实际效果,就会考虑到QA的配备资源是多少,比如说QA主管对你说QA人员不够了,还要招聘两个人。你对这个问题如何处理和决策? 刘清富:应该说我们一直在招聘优秀的QA人员加盟百度,包括在各种渠道都在寻找QA人员。但我们的QA人员和项目是相关的,比如说这个部门执行哪个项目过程,可能会制定QA来做。有可能它会一天提交十几、二十几各项目,但我们会考虑到他的工作非常繁忙,会制定另外一些QA人员还分担他的工作。百度会有这样的一个数字。有多少个项目?执行得怎么样。因为百度之前没有通过任何一个CMMI等级,但百度在逐渐成熟。我们在投入的比例架构在逐步成熟。如果非要CMMI等级框定一下,由于我们策略方面的改进,我可能会投入更多一点。就像在CMM4级和CMM5级比例可能是1:20,但通过的年限并不长,尤其是中国的企业,这并不是说他的QA在不断投入。如果产品线已经非常成熟了,不断增加QA不一定是正确的现象。 网友:在百度公司质量部门是处于什么样的位置?在公司能够得到足够的支持吗? 刘清富:百度的软件质量部是在百度整个Engineering的一个大的部门。软件质量部门和研发部以及其它部门各自承担自己部门的工作职责。在百度的质量部门工作的工程师和研发部门的工程师只是分工职责的不同,大家觉得自己做的工作都非常的重要,而且我们也给予足够的支持。因为我们的目标都是为致力于给网民提供最便捷的搜索服务。这点,落实到我们的具体工作上,真个技术团队以提供高质量的在线信息搜索服务为目标的。 |