在软件项目中,不少技术人员经常混用QA(Quality Assurance 质量保证)和QC(Quality Control 质量控制)这两个术语;甚至一些实施培训的专业公司(Baidu和Oristand)也混淆了这两个概念。这种概念混淆,很不利于组织导入CMMI(软件能力成熟度模型)或ISO9000;更进一步说,也不利于提升软件项目管理水平。

实际上,这两个工作的性质明显不同,它们对从业人员的素质要求也很不相同。简单地说,QA(质量保证)是针对项目实施过程的管理手段,QC(质量控制)是针对项目产品的技术手段。

  • QA监督做事

QA致力于按照正确方法、在正确的时间做正确的事情:从做事方法上按照既定流程来保障产品质量,控制开发工作而不是解决具体存在的BUG。更贴切地说,QA并非“保证质量”而是“过程管理”(Process Management),以确保项目以一套成熟高效的做事方法开展和实施。依靠在QA制约下的开发过程,能够前瞻性地从制度上保障开发出好产品。因此,具有良好QA管理的企业,容易获得客户更多的信任。

在CMMI体系中,QA人员是独立于项目组的(不受项目经理管辖),他可以把项目经理不认错的QA缺陷上报给CCB(地位比PM更高的配置管理委员会)或高层经理裁决。

在一些大型企业的IT项目实施过程中,经常要成立甲乙方在一起协同工作的联合项目组。在这种情况下,甲方项目成员不仅要检测乙方的产品质量(QC),还要监督乙方开发过程中的做事方法(QA)。

一般地说,项目的QA人员要检查项目开发过程是否制定和贯彻了管理标准、过程(Process)、策略等正规要求,要提出完善改进的意见,指出过程是否有效、如何让过程更有效,并评估这些要求的效率、效果。

QA人员还要确保项目组成员理解这些要求。除了培训新员工理解组织过程,或培训老员工理解变更了的组织过程之外,他并不直接干预开发者的工作,而是在项目管理的最高层面上工作。他要与项目经理和CCB、配置管理员、QC人员打交道。

怎样才知道QA工作是正确的?它也是结果导向的:通过不断改进组织过程,更快、更低成本地制造出用户需要的产品。

例如,在一个大项目中,QA人员可以帮助项目经理制定项目计划,使项目按照有组织的规程推进;他要使项目组成员明白,应按照相应的报告、里程碑、文档等规定来开展自己的工作。随着项目的进展,QA人员可以适时导入“检查点”来查看哪里会发生新的风险。如,项目正在从事预定范围之外的工作,或项目有待加强管 理之处。这些检查点是确保合适的人在正确时间就位的一个机会。

从目前国内不太理想的情况来看,QA工作往往靠“意向性、模糊”的企业文化来代替,我认为,完全依靠这种企业文化来造就合理成熟的工作套路,显得过于间接和不确定。因为在人员变动较快的软件行业,新入职的员工理解和认同企业文化并准确映射到具体工作中需要一个明显的滞后时间。这个弊端在小企业中不明显,但在大企业中会比较突出。所以,有必要建立起一套通用的QA工作标准模板,并在重要的大项目中指派专人担当QA人员。 QA人员要实时追踪了解、监督、评估项目中各种事件(现象)是否符合规范的流程?现有流程是否有效率?低效事件是因未被流程涵盖还是流程缺陷所致?就是说,QA人员要有“透过现象看本质”的抽象分析总结能力,项目中每个配合失误的“掉链子”现象,都会触发他的思考并提出改进建议。

经过这样的努力, QA人员能从一系列个性化项目中不断地抽取出有效的、有普遍意义的流程优化经验和建议,它们被项目管理办公室(PMO)确认后,会不断地沉淀、纳入(归档)到企业的过程资产当中,成为今后企业的项目管理的通用工作指导。这样,具备成熟、可操作性的企业文化并不断进步的另一个“IBM”就会由此诞生,企业也就有能力把更多的项目做成“项目组合”(Portfolio)了。

  • QC是最后一关

QC工作是指测试人员检查开发人员的产品是否满足预期的品质要求,并给出改进建议。QC服务于开发工作,处于开发工作的控制之下。更贴切地说,QC并非直接“控制质量”,而是“需求印证/确认”(Requirement Validation)或产品测试。

由于QC是“用现实应用场景来评测开发人员理想化思路”的过程,所以项目经理必须重视这个依靠创造力、想象力的QC工作,投入足够资源保证QC工作。这是产品发布的最后一道关口。

QC工作,是要把程序员“纯真的技术理想”锤炼成鲁棒性极好的应用系统。测试人员需要站在软件技术和用户应用场景之间,反复、全面地检查验证二者的映射关系,还要分析“BUG越改越多”的成因并说服、帮助开发人员澄清和遵从产品版本的质量底线。测试人员不得不经常在很紧张的时间压力下,以清醒的探险性、逆反的批判性思维来全面细致地“围捕”程序员的疏忽。这就要求他要比程序员更快更准地理解用户需求、软件架构;并在接受新项目的时候,头脑迅速切换到不同的用户应用场景。即,他要有更强的跨行业学习的能力。这种能力,往往是程序员难以具备的。

理想的测试人员还应该具备“并发思维”的能力,以便捕捉多个程序员之间在多任务场景下极其容易发生的共享冲突。他还应该熟悉数据库建模和SQL,以便排查出隐患很大的、程序员和用户都难以察觉的垃圾数据并判断出成因。

由此可见,那种对测试人员常见的“编程能力不行的人,才去做测试”轻视观点是错误的。测试人员业务素质的提升空间很大,他的价值也应该得到更长远的推动和提升。

QA、QC是各不相同的重要工作,需要不同素质的人来担任。不应该认为“QA和QC可以合并”,也不应该忽略哪一个工作。

质量保证(QA)和质量控制(QC)的区别相关推荐

  1. 软件质量保证计划_质量保证QA与质量控制QC

    作者:郑文强 时间:2019年7月15日 关键词:质量管理QM(Quality Management).质量保证QA(Quality Assurance).质量控制QC(Quality Control ...

  2. 质量保证QA与质量控制QC

    作者:郑文强 时间:2019年7月15日 关键词:质量管理QM(Quality Management).质量保证QA(Quality Assurance).质量控制QC(Quality Control ...

  3. 实施质量保证与实施质量控制的区别与联系

    实施质量保证与实施质量控制的区别与联系 上课时我对规划质量.实施质量保证和实施质量控制做了详细的讲解,以减肥为案例详细说明了三个过程如何实施,并对三者做了详细的区分,可是仍有很多学员无法区分" ...

  4. 解读PMP考点:质量管理中规划质量、实施质量保证、实施质量控制的对比

    解读PMP考点:质量管理中规划质量.实施质量保证.实施质量控制的对比 质量过程的对比 规划质量 实施质量保证 实施质量控制 识别项目及其产品的质量要求或标准,并书面描述项目将如何达到这些要求或标准的过 ...

  5. 软件行业的QA与QC的区别

    2019独角兽企业重金招聘Python工程师标准>>> 定义 QA:Quality Assurance (质量保证) 为达到质量要求所采取的动作和活动:为了确保软件开发过程和结果符合 ...

  6. 重要:QA和QC的区别

    来自<术以载道>这本书的不错的论述: 质量保证(QA)与质量控制(QC)是经常混淆的两个概念,这两个概念如果不能清 晰地辨别,就会涉及公司内关于质量保证活动的职责分配问题,以及质量保证人员 ...

  7. QM 、QA和QC的区别

    QM:质量管理,包括QA(质量保证)和QC(质量控制) QA:质量保证,通过规范产品过程,达到质量保证.例如,规范开发过程,进行各种评审活动等. QC 质量控制.通过检测产品,实现产品控制,例如软件测 ...

  8. qe和qc的区别在哪里_QC, QE,QA,QO的具体定义是什么,工厂里面个岗位具体职能又是?...

    题主有点懒. 先名词解释以下:QC\QE\QA 吧.QO不知道是什么鬼,有知道的烦请告知一下. QC:Quality Control 质量控制.其中QC又分以下几种: FQC:即最终品质管控,是在产品 ...

  9. 做好过程质量保证QA工作的几个关键方面

    过程质量保证的范围是什么? 过程质量保证是指不同于测试的.主要针对过程和中间工作产物的质量保证,一般而言,早年间的过程质量保证根据最早的CMM,也称为软件质量保证,缩写为SQA.现在最新的CMMI将其 ...

  10. 软件工程软件产品质量要求与评价_软件质量保证(Quality Assurance)中常见的活动...

    质量保证QA关注在软件产品生成的整个过程,主要验证软件产品开发过程中相关实施过程的完整性.一致性和有效性,确保开发活动和测试活动等遵循正确的过程,为软件产品达到合适的质量级别提供信心.为了实现过程的可 ...

最新文章

  1. ubuntu下vim的命令及使用方法
  2. c#开发-基础知识及有用技巧(一)
  3. python解析http数据包_如何在python中嗅探HTTP数据包?
  4. 腾讯视频怎么禁止别人登录我的会员
  5. optionmenu 选项菜单
  6. 6天通吃树结构—— 第一天 二叉查找树
  7. Vue脚手架安装教程
  8. 诚信优选团长发红包设计
  9. 2019,我们拿什么定义未来手机?
  10. html实现凹陷效果,css3怎么实现字体凹陷凸出效果?(附代码)
  11. mysql查询表的列名_查看表所有列名SQL
  12. Window10蓝牙无法连接的解决方案(已成功)
  13. Qemu虚拟化PowerPc
  14. Android中动画类别及优缺点,安卓培训学习:注册广播及其优缺点
  15. Ubuntu 18.04 安装 nginx 并搭建一个简单的网站
  16. linux 磁盘操作
  17. 【STM32】通用定时器TIM2-TIM5中断配置方式+继电器控制
  18. 各种开机画面的S905L3A/AB通刷包B863AV3.1-M2/3.2-M/311-1A/1AS/M401A/E900V22C/D
  19. c语言loadimage函数参数,函数loadimage问题
  20. python将eps文件转jpeg文件

热门文章

  1. SpringBoot微信小程序商城源码(前台+后台)
  2. C++ 凯撒密码具体代码实现
  3. 除权、除息、复权、填权、填息、贴权、贴息、含权、含息、前复权、后复权到底什么区别(MD终于明白了用图解释)
  4. SSM购物商城项目开发
  5. mac备忘录html,在 Mac 上撰写和格式化备忘录-添加提醒-添加日历
  6. Android开发定位
  7. Centos 7--pdf2htmlEX安装和配置
  8. R语言Copula的贝叶斯非参数估计
  9. C语言 | 单链表的冒泡排序
  10. Android七牛拉流基础设置干货