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

发表于:2010-06-18来源:作者:点击数: 标签:质量sqaSQA何去何从软件
软件 质量保证 ( SQA )何去何从? 软件测试 1 引论 在51CMM的质量保证论坛中,Robinzrb 的一帖 “做QA,并且感到郁闷的请进!”,引无数英雄竟折腰。这些英雄包括思想活跃的hjhza,乐于传道授业解惑的wtswts,喜欢指点江山激扬文字的vvvvvv……。为什么郁闷呢?

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

  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也是被允许的。为什么会发生这种改变呢?无论是XPRUP还是其它先进的方法论,都是先产生架构,然后再增量开发,直到完成。这种模式中,需求和设计缺陷在各个迭代周期被所尽早发现和修复,质量也内建于架构和过程中,项目的成本和进度也得到保障。

  到那时,是不是独立的QA就不复存在了呢?有些成熟度较低的企业还是需要的,主要是保证过程执行的有效性和评价的客观性。

  《 质量平衡》

  前几日,我有幸听了唐骏①关于“成功软件企业的经营模式与文化”的演讲。在会上,他谈到中国目前靠软件盈利(一定规模)的企业最多不超过5家。这一结论深深地震撼了我。难道国内成千上万家软件企业都在亏损吗?而为什么亏损呢?我想,一个个的软件项目延期、超出预算、质量低下是亏损的原因,而最根本的不是技术问题,而是管理问题。质量管理也是很重要的方面。

  从理论来看,质量管理应该属于项目管理的一部分。我们在实际运作过程中也不要把项目管理和质量管理分离开来。有些项目经理认为“提高质量就意味着成本更高、延迟交付”,这是一个比较片面的观点。多数情况下,质量和进度不是矛盾和冤家,而是可以协调和统一的。举例来说,移动网管维护项目为完成一个约20人日的维护需求,在设计和编码阶段比计划多花了0.5人日,测试阶段就比计划少花了6.5人日完成。这说明质量不但提前了进度,而且降低了成本。在有些特殊情况下,比如规模较小、需求变化较快、进度较紧的项目,我们可以采取更为灵活、敏捷的开发方式,但是这些方式应该在不影响产品质量的前提下进行。

原文转自:http://www.ltesting.net