软件质量保证(SQA)何去何从?

来源:百度文库 编辑:神马文学网 时间:2024/04/28 07:40:28
1 引论
在51CMM的质量保证论坛中,Robinzrb 的一帖“做QA,并且感到郁闷的请进!”,引无数英雄竟折腰。这些英雄包括思想活跃的hjhza,乐于传道授业解惑的wtswts,喜欢指点江山激扬文字的vvvvvv……。为什么郁闷呢?还是先让我们来讨论一下QA的何去何从吧!
2 QA的由来
我们知道,国外很多的大公司,QA的职责就是测试(主要是系统测试),比如IBM、CA、PeopleSoft等。其实在最初,几乎所有的公司都是这样的。后来,由于缺乏有效的项目计划和项目管理,留给系统测试的时间很少(注:我以前做的一个项目,项目经理就明确告诉我系统测试就1天,没得商量)。另外,需求变化太快,没有完整的需求文档,测试人员就只能根据自己的想象来测试。这样一来,测试就很难保障产品的质量,事先预防的QA职能就应运而生。
事先预防其实是借鉴了TQM的思想,而且也符合软件工程“缺陷越早发现越早修改越经济”的原则。这些思想的渊源还可以追溯到中国古代的典故中,比如曲突徙薪、扁鹊论医术等。特别是扁鹊论医术这个典故,我偶然在国外的一篇文章中看到了(后来在林锐的文章中也看到了),常感叹我们国人连祖先的思想文化遗产都丢的差不多了。
3 QA的现在
目前,实施CMM的企业越来越多了。CMM模型就要求建立QA角色。这里的QA类似于过程警察,主要职责是,检查开发和管理活动是否与已定的过程策略、标准和流程一致,检查工作产品是否遵循模板规定的内容和格式。在这些企业中,一般还要求QA独立于项目组,以保障评价的客观性。从国内来看,多数的QA没有技术背景,检查出的偏差多为鸡毛蒜皮,再加上自己没有令人信服的背景,领导也不支持,当然做起来就很困难了。
缺乏信任和支持只是一个方面,QA工作本身就很具挑战性。它要求QA具有软件工程的知识、软件开发的知识、行业背景的知识、数理统计的知识、项目管理的知识、质量管理的知识等等。
我们常常遇到这样的问题,改进到一定程度就很难突破,感觉心有余而力不足了,就开始郁闷了。后来通过学习、培训、交流,思想和技能得到升华,又发现了木桶中最短的那块,然后又开始改进,然后又遇到了玻璃天花板,然后……就这样处于郁闷的循环中。
假使我们掌握了所有的知识,能突破所有的玻璃天花板,那是不是QA就可以一帆风顺了。答案是否定的。QA角色定义本身就有很大的局限性。QA充当的是过程警察的角色,无论是否有意义,都专横地强制过程的执行,容易在项目组中造成敌对的关系,受到排挤,而且这种警察的姿态也破坏了团队精神。如此一来,QA工作还需要的是人际关系技能,就如我以前写的《质量平衡》和《QA应该独立于项目组吗?》一样,艺术化地处理这种关系。
4 QA的未来
从某种程度上说,独立的QA审查机制是瀑布模型的产物。随着现代软件开发技术的演变,螺旋模型和迭代模型的兴起,QA机制正在悄然发生变化。这种变化就是从独立专职的QA向贯穿过程的兼职QA演变。在CMMI模型中,这种兼职的QA也是被允许的。为什么会发生这种改变呢?无论是XP、RUP还是其它先进的方法论,都是先产生架构,然后再增量开发,直到完成。这种模式中,需求和设计缺陷在各个迭代周期被所尽早发现和修复,质量也内建于架构和过程中,项目的成本和进度也得到保障。
到那时,是不是独立的QA就不复存在了呢?有些成熟度较低的企业还是需要的,主要是保证过程执行的有效性和评价的客观性。
《 质量平衡》
前几日,我有幸听了唐骏①关于“成功软件企业的经营模式与文化”的演讲。在会上,他谈到中国目前靠软件盈利(一定规模)的企业最多不超过5家。这一结论深深地震撼了我。难道国内成千上万家软件企业都在亏损吗?而为什么亏损呢?我想,一个个的软件项目延期、超出预算、质量低下是亏损的原因,而最根本的不是技术问题,而是管理问题。质量管理也是很重要的方面。
从理论来看,质量管理应该属于项目管理的一部分。我们在实际运作过程中也不要把项目管理和质量管理分离开来。有些项目经理认为“提高质量就意味着成本更高、延迟交付”,这是一个比较片面的观点。多数情况下,质量和进度不是矛盾和冤家,而是可以协调和统一的。举例来说,移动网管维护项目为完成一个约20人日的维护需求,在设计和编码阶段比计划多花了0.5人日,测试阶段就比计划少花了6.5人日完成。这说明质量不但提前了进度,而且降低了成本。在有些特殊情况下,比如规模较小、需求变化较快、进度较紧的项目,我们可以采取更为灵活、敏捷的开发方式,但是这些方式应该在不影响产品质量的前提下进行。
然而,现实情况往往比较复杂,也许会存在质量与进度相对立的情况。在这种情况下,应该以公司的商业目标为基准,寻求质量、进度、成本三者之间的平衡。而如何寻找平衡点呢?由于项目相关者(包括公司、部门经理、项目经理、员工、客户等)对质量利益(包括短期利益和长期利益)的获得不同以及质量观念的差异,存在不同的平衡点,从而引起质量方面的纷争和抵触。为了协调项目相关者的这种矛盾,责权利最大的一方(一般是公司)应该起到关键的作用。一方面要解决质量观念差异的问题,最好通过自上而下的教育、培训。为什么需要自上而下呢?经验告诉我们,公司领导学好了质量管理方法,才能采用正确的质量管理方案,才能有更强的执行力,才能选用合格的质量人员,才能看得到比较明显的质量改善效果,才能形成良性循环。另一方面,就是授权相关人员进行监督,控制平衡点移动到最佳位置。一般情况下,公司的质量管理员应该担当这种责任,但领导需要授予他们相应的权利。在企业中,责任和权利是成正比的。如果质量管理员的地位无足轻重,那么必然导致产品质量无足轻重。
从另一个层面来说,质量管理员应该具备双重角色。他们的工作不仅仅是监督和控制,更重要的是服务。服务的对象包括公司、领导、开发人员、客户等。他应该收集、统计、分析数据,向领导和客户提供项目情况,提高项目的透明度,并为公司留下经验数据。他应该向开发人员讲解质量观念、过程要求、模板和工具的使用等。此外,好的质量管理员还应该采取各种方法来提高产品质量、提高工作效率、降低成本,比如引进新工具、采用新方法、改进过程、建立知识库等。由于服务面对的是顾客(内部顾客和外部顾客),服务的质量就应该采用顾客满意度来评估。因此,质量管理员应该时常反省自己的服务质量,经常向领导、开发人员了解情况,询问他们的需求,分析成功的经验和失败的原因,并及时调整自己的工作方法。
监督者和服务者,看似两个不可融合的角色,实际上是一个统一体。监督与服务共同存在于质量管理工作中,并且可以相互转化达到平衡。这种平衡也就是一种艺术,它需要根据企业的文化进行调整。在一个氛围活跃、高技术、创新能力强的企业,质量管理员应该倾向于服务角色;而在一个强纪律、低技术、规章制度成熟的企业,质量管理员就应该倾向于监督角色。一般情况下,无论哪种企业,质量管理员都应该具备监督和服务两种职能。这就要求质量管理员在工作中能随时调换自己的角色,同时要经常地跳出项目、部门、现在的范围,站在更广泛、更长远的立场来实施质量管理工作。
总的来说,要解决好质量管理的问题,很重要的是要找准两个平衡点:一个是根据商业目标找到项目在进度与质量之间的平衡点;一个是根据企业文化找到质量管理员在监督和服务两种角色之间的平衡点。把握好这两种平衡,有助于企业提高持续的盈利能力。
《 QA应该独立于项目组吗?》
周末闲时,在家看了奇洛.李维斯主演的《终极豪情》(POINT BREAK)。片中的情节依然不落俗套,讲的是一个刚从警校毕业的警察强尼,协助调查一宗连环银行抢劫案,该团伙作案手段高超,行踪诡秘,只能从模糊的银行摄像中推断出可能是冲浪爱好者所为。为调查案件,强尼到南加洲海滩,结识了美丽的冲浪教练泰勒,更与泰勒的前男友保迪结为了生死之交。然而随着案件渐露头绪,赫然发现原来保迪就是抢劫集团的首脑,面对友情、爱情和法律,强尼难以选择……
看完以后,忽然从脑海里掠过一丝念头,QA应该独立于项目组吗?从某种程度上说,QA也充当了一部分过程警察的角色(基于SEPG、SEG和QA之间三权分立的思想)。那么,QA是否也可以借鉴强尼的工作模式呢?答案是肯定的。一方面,与受监督人员一起冲浪、跳伞、Party……以了解他们的语言、思想和行为,更真实、更深入地评价他们与既定规范之间的偏差,并逐步引导他们走向正轨。另一方面,在职能/行政上独立于受监督人员(项目组),以保障自身的独立性和评价的客观性(也就是情、理、法之间的取舍)。
目前,中国很多软件公司都在探索QA的实施模式,并有不少同行提出或怀疑“QA是西方文化的产物,不适合中国国情”。从我自己的了解来看,他们常常走向两个极端:要不QA完全独立于项目组,要不完全融入项目组。举个鲜活的例子吧,就我很熟悉的一个公司(200余人,多数项目在100人月以上,多的近2000人月),在2002年的时候,要求所有项目组将完成的工作产品(比如项目计划、进展报告、需求、设计、代码、评审记录、测试文档等)提交到质量管理部,由质量管理部的人员进行审查。审查人员与项目组完全脱节,且审查人员不具备技术研发经历,审查出来的问题几乎全是鸡毛蒜皮之事。更有甚者,副总规定质量管理部的目标是每月300个错误,达不到就扣钱。另一方面,开发人员被查出问题,也要被扣钱。结果是,经常看见开发人员跑到质量管理部来吵架,为一个小小的格式问题争论不休……后来,也就是2003年8月份,质量主管换了,来了个彻底改变,QA全部放到各开发部门,结果是跳得跳了,考研的考研了,就剩下一个坚持下来了。可后来,也就是最近,以前的部门文秘转过来当QA了,更有意思的是,前台的文秘也来QA了……就这样,QA的工作就变成部门的联系人了(类似文秘),比如帮出差人员报销费用、外审前补写记录、催交文档、质量管理部开会没人参加时来充数……QA“Q变”了……
从上面的描述中,我们可以了解到,无论是完全独立于项目组还是完全融入项目组都是不可取的。QA应在职能和行政层面独立于项目组,在业务和工作层面融入项目组。就好比强尼一样,他在职能上属于警察(FBI),在工作上却深入到犯罪团伙中。在操作层面上,QA这种独立和融入的双重角色是一件很不容易平衡的事情,需要组织的机制和QA的个人素质来保障。了解这一点,可以让您在QA模式探索中少走弯路。