软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件测试技术>>其他相关>>正文
QA活动的理解与实施
文章出处:转载 作者:不详 发布时间:2005-12-19

摘要:QA活动是CMMI实施中较难贯彻的过程。本文针对目前国内的QA过程实施情况,从QA的地位、原则、活动、实施等方面进行了阐述。同时讨论了QA与QC、测试之间的关系,以及实施QA活动的最佳实践,为组织实施过程改进提供了基础。

1 概述

在使用CMMI模型实施过程改进时,需建立QA(Quality Assurance)的组织职能和角色,并实施“过程和产品质量保证”活动。这些活动目的在于使项目工作人员和所有各层管理者能适当地了解整个项目生存周期中工作产品和过程的情况,从而支持交付高质量的产品和服务。

由于CMMI模型是建立在西方的企业文化背景下,包含有三权分立的思想,所以对于国内IT及软件企业而言,如何理解和建立QA机制,更好地利用CMMI模型进行过程改进就显得非常重要。但是,目前国内IT及软件企业对于QA的意义和认识存在误区,导致在实施过程改进活动中,QA活动流于形式或没有发挥出其真正作用。到底QA在组织中应扮演什么样的角色,CMMI的QA的与ISO9000的QA或QC(Quality Control)概念有何区别,QA与测试是什么关系,如何实施QA活动,等等,本文针对这些进行阐述,以解决企业CMMI实施过程中的薄弱环节。

2 QA的地位及活动

2.1 QA的地位

图1显示了在CMMI实施过程中QA所处的地位。

                     图1 QA的组织结构

QA活动的目标是以独立审查方式,从第三方的角度监控软件开发任务的执行,就项目是否正遵循已制定的计划、标准和规程给开发人员和管理层提供反映产品和过程质量的信息和数据,提高项目透明度,同时辅助软件工程组交付高质量的软件产品。所以对过程和产品质量保证的客观评价是项目成功的关键,一般是通过独立于项目的QA小组来提供这种客观性。每个从事QA活动的人都要进行质量保证方面的培训。从事某个产品的QA活动的那些人不应该是直接介入该工作产品开发或维护的人。同时,应该有一条向适当的管理层独立报告问题的渠道,以便在必要时逐级上报不符合问题。

不过,在某些组织里,不要求这种独立性而实现过程和产品质量保证角色可能更合适。例如,在一个具有开放的、面向质量的文化环境的组织里,可以由同行担任(部分或全部)过程和产品质量保证角色,可以把质量保证功能镶嵌在过程中。

QA应具备以下职责:

  • 通过监控开发过程来保证工作产品质量
  • 保证开发出来的产品和开发过程符合相应标准与规程;
  • 保证产品、过程中存在的不符合问题得到处理,必要时将问题反映给高级管理者
  • 确保项目组制定的计划、标准和规程适合项目组需要,同时满足评审需要
  • 向开发人员提供反馈

2.2 QA的活动

QA的工作内容为:

1) 客观评价过程和工作产品:对于所实施的过程和相关工作产品以及服务对适用的过程描述、标准和规程的遵循情况进行客观评价。

2) 提供客观情况:客观地跟踪和通报不符合问题,并且确保解决它们。
  因此,QA的活动步骤如图2所示。
       
                     图2 QA的活动步骤

由上可知,QA涉及以下活动:

  • 对照适用的过程描述、标准和规程客观地评价所执行的过程、工作产品和服务;
  • 识别不符合问题,并形成文件:
  • 向项目工作人员和管理者反馈质量保证活动情况;
  • 确保不符合问题得到处理。

3 QA与QC、测试之间的关系

3.1 QA和QC

QA和QC区别在于:

  • QC:检验产品的质量,保证产品符合客户的需求;是产品质量检查者;
  • QA:评审过程和产品的质量,特别要保证过程被正确执行,通过保证过程质量来保证产品质量 。

由上面的区别可知,QC进行质量控制,向管理层反馈质量信息;QA则确保QC和过程实施者按照过程进行质量控制活动,按照过程将检查结果向管理层汇报。软件开发过程和的QC工作通常就是对软件工作产品的技术评审(如同行评审等)。

在这样的原则下,简单而言QA只要检查项目按照过程进行了某项活动没有,产出了某个产品没有;而QC来检查产品是否符合质量要求。

3.2 QA与测试

下图显示了一个企业的开发过程、支持过程的关系。
      

从现代软件工程的观点来看,测试应是软件生命周期过程的一个不可缺少的阶段,是确保规定的需求得以满足,上图的流程模型体现了这一点。而QA活动则是贯穿于整个软件生命周期过程及其支持过程,包括培训、采购等活动,以确保所策划的过程得以实施。QA活动和测试过程可能同时关注同一个产品,但是关注的角度不同。

应该在项目的早期阶段开始QA过程,以便确定有益于项目的计划、过程、标准和规程并且满足项目需求和组织方针。从事质量保证的人要参加计划、过程、标准和规程的确定,以确保它们适合于项目的需要和适合于进行质量保证评价。

4 实施QA活动的方法

4.1 QA的工作流程

图4描述了QA的一般工作流程。
      
                  图4 QA的工作流程

应指定在生存周期中将进行评价的特定过程和产品。可以根据抽样方式或客观准则进行指定;这些准则要与组织的方针和项目需求以及需要一致。

识别出不符合问题后,首先是在项目内部处理,如果可能,就地加以解决。任何不能在项目组内部解决的不符合问题,要逐级上报适当的管理者予以解决。

在过程中,QA一般比较注重的是过程是否符合规范?测试是否合理、充分?评审是否及时、有效等,这些是重要的“检验”过程,可以列为重点。过程是否符合规范,一般要看过程有没有计划,计划详细与否,可行与否,工作量评估是否可行(主要是检查评估方法)?日常管理是否可行?配置管理是否可行?过程遵循那些标准?实施什么样的裁减,等等。

在整个QA过程的评审活动中,QA需要具备一定的数据意识,要不断的收集各种数据,尤其是质量数据。最好具备一定的项目管理经验,要不然,只能是一种边缘参与,是进入不了项目的。QA最好能帮助PM将问题分析清楚。PM会思考要将问题做成什么样子,而QA可以思考如何去做,这样就可以达到一种配合的效果。

其次还要注意一点,就是QA以什么心态去监控项目组,我们公司提出的是“质量服务”,也就是说,项目组是我们的客户,我们是为他们提供质量服务的。

4.2 最佳实践

实施QA活动的最佳实践应该根据不同的企业情况而不同,但以下几条是实施过程改进活动中总结出来的,具有一般意义。

1) QA人员要求

  • 服务精神:QA应定位为教练、服务的角色,而不是警察的角色。
  • 了解过程:熟悉过程规范。
  • 了解开发:如果QA有过开发经验,则可更好地实施评审活动。
  • 沟通技巧:通过好的沟通技巧发现问题,解决问题。
  • 专门培训:QA人员最好经过专门的培训,以提高评审技巧。

2) 制定QA计划

计划中可能包含以下内容:

  • 质量目标(与度量的数据相关联)
  • 人员安排
  • 时间
  • 检查工具(检查表)
  • 检查对象(活动和产品)
  • 检查点及频次

3) 编制检查表

检查表是QA人员进行评审活动的工具。编制检查表时应考虑以下问题:

  • 何时需要检查表
  • 检查表包括什么内容
  • 如何使用检查表
  • 如何调整检查表

4) 形成QA报告

QA应对检查的结果形成报告,以便跟踪、解决、关闭所发现的问题。形成QA报告时应考虑:

  • 报告目的
  • 报告内容
  • 问题沟通
  • 问题跟踪
  • 问题上报

5) 几个参见问题

  • QA价值开始不被项目组认可
  • 一个全职的QA可以同时兼任多少个项目的QA工作
  • QA与项目组的关系难处理
  • 项目组有了QA,可是需求文档和设计文档的质量还是不高

5 结束语

总之,QA活动对于过程改进具有重要的意义,这是由人治到法治的一个必经阶段。所以,只要国内IT及软件企业能够认真贯彻CMMI模型规范的要求,持之以恒,随时解决实施中发现的问题,就会体会到QA活动的巨大效益。


站内搜索
相关文章
◎从六个角度分析流程建模
◎故障硬盘数据拯救全攻略
◎测试版本大全
◎程序员修身养性的十大原则
◎建模过程的盲点:软件集成中的软知识
◎ASP+SQL Server构建网页防火墙
◎基于嵌入式DSP的流媒体编解码器
◎软件开发全过程检测及测试自动化
◎PDCA循环小知识
◎想编写出优秀技术文档,先学学这四招
◎Tcl脚本的历史
◎Alpha和Beta测试简介
◎测试人员的挑战
◎测试要点总结
◎本地化测试寻找软件缺陷的方法
◎软件本地化测试类型解析与测试要领
◎全景记录:软件测试工程师的一天
◎破解软件外包人才匮乏困局
◎外包测试:雷声大 雨点急
◎URL欺骗的惯用招式
◎网络最经典命令行
◎近10年最强的50本计算机图书,您读过几本?
◎提高团队与个人的尽职度
◎从程序员到测试工程师
◎软件测试组织与方法
◎编写优秀Bug报告的艺术
◎基于模块化设计的嵌入式软件测试方法
◎一个初级测试工程师的工作总结
◎创建移动Web应用程序
◎Web服务器上防范基于ASP程序的木马
◎ASP网站漏洞解析及黑客入侵防范方法
◎防范ASP木马的十大基本原则
◎V模型问题分析
◎测试人员面试三步曲
◎软件测试的误区
◎谁背上了猴子-时间管理
◎开放源码有利于系统安全
◎软件测试的心理学问题
◎嵌入式软件测试策略
◎如何实施SQA
◎软件测试入门书籍(2)
◎制定项目的测试策略
◎软件测试的人际关系
◎测试实践:Eclipse 之 JUnit
◎测试经验交流
◎软件测试常用术语表
热门文章
◎软件测试工程师面试问题选登
◎一个初级测试工程师的工作总结
◎软件测试常用术语表
◎测试人员面试三步曲
◎DOS命令大全
◎什么样的测试人员是好的测试人员
◎软件测试基本方法
◎好的测试工程师应具备的素质
◎软件测试入门书籍(2)
◎我在软件公司成长的三年
◎面试官最爱问的问题背后真相
◎软件测试工程师面试题
◎应届毕业生少走弯路的十条忠告
◎有关软件测试的术语定义集锦
◎微软的软件测试方法(一)
◎我的测试经历(1)
◎全景记录:软件测试工程师的一天
◎软件测试步骤
◎谈谈对测试职业的看法
◎漫谈软件测试工程师的角色定位
◎测试需要掌握什么
◎软件测试员自身素质培养
◎测试小技巧集锦之一黑盒测试
◎近10年最强的50本计算机图书,您读过几本?
◎软件测试人员职业发展助手
◎测试要点总结
◎如何制定成功的测试计划
◎测试的主要评测方法(1)
◎什么是ERP,通俗版解释
◎测试经验交流
◎软件测试及其支持工具
◎编写优秀Bug报告的艺术
◎软件产品测试标准
◎从程序员到测试工程师
◎微软的软件测试方法(二)
◎软件测试应遵循的八条原则
◎测试版本大全
◎我的测试经历(2)
◎测试人员的挑战
◎网管和黑客都必须知道的命令
◎Alpha和Beta测试简介
◎网络最经典命令行
◎想编写出优秀技术文档,先学学这四招
◎个人职业生涯规划发展
◎你适合做测试吗?
◎软件测试的误区
◎我的测试经历(3)
◎软件测试的心理学问题
◎软件测试组织与方法
◎浮躁的国内测试界—2006年测试人员招聘感悟

Google提供的广告