所有文章均来自网络(除测试总结部分),如果涉及到版权问题请与我联系,我会及时删除~~~~

软件企业质量保证的基石―QA、QC的良性协作(转贴)

上一篇 / 下一篇  2007-01-29 11:40:03 / 个人分类:测试管理

O W1a R%z+w0 作者:贺忻  来源:测试时代  2006年10月13日51Testing软件测试网 d,~MS,j%Fq

{ [@WO(Y^t0国内的软件产业发展了20多年的时间,已经由个人英雄时代步入到中、小团队协作时代。相信不久的将来,国内一定会出现航51Testing软件测试网^fCy.q9n0bA+UW

51Testing软件测试网-?T%tY ZP

母级的软件企业,那时候我们会迎来集团军作战的时代。不同的时代表明软件规模的不同,也标志着软件质量管理的复杂度急剧上升,同时对软件质量的保障方法也提出了更高的要求。51Testing软件测试网i1q"MU9w"\n3C

51Testing软件测试网l2TC a*a[6w pUX

  本文并不打算系统的阐述软件企业的质量保证体系,而是想从另一个侧面同大家分享软件企业在软件开发过程中两个重要角色之间的协作关系,以两个角色之间高效的互动来说明在开发过程中,我们如何来有效的保障软件产品的质量。51Testing软件测试网.p8t8Z!L RP0},@B
 51Testing软件测试网#TJC ^,u v(Z1b kE
1.软件企业的质量保证体系

xk j2I&H Y;uN/`Ht0

4v}IzF0  我们知道质量保证体系的建设是一个系统工程,质量的保障不是某些人或者某些部门的工作,而是整个企业的文化,理念的贯彻。如果一个企业在进行质量保证体系的建设和推广过程中,只是在强调方法,强调规范,而不是把质量意识,企业文化贯穿其中,那质量保证体系是否能持续的发挥作用,并形成为企业的核心竞争力就值得怀疑了。51Testing软件测试网'B-t#P m.Y9sk#q
   51Testing软件测试网e6o5eC~aR-{i
  一般软件企业在规划质量保证体系的时候都会选择一个模型,目前比较流行的模型有:ISO9000:2000、CMMI、RUP、XP等,具体选用那种模型,还需要看企业的实际情况,并且能充分的协调:人、技术、过程三者之间的关系,使之能充分的发挥作用,促进生产力的发展。
ol-M*q@+n0V0   51Testing软件测试网,E~#M7TX}&^
    在软件企业的质量保证体系建设过程中,一般需要独立完成以下几个流程:51Testing软件测试网8A4LtM~ G
      
2C2EB"]mR8CV0  项目管理流程、软件开发流程、软件测试流程、质量保证流程、配置管理流程
)s/X'B$M%F+F Ns]0   
/_;i;O&X/g)y-|j0  以上这些流程需要相辅相成,各自之间都有相应的接口,通过项目管理流程将所有的活动贯穿起来,共同来保证软件产品的质量。
h L;Kq_MjzB0   
8rP:r,Ti0    整个软件质量保证体系中,所有的流程围绕软件开发流程展开,唯一的目标就是保证软件开发的质量,所以在众多的流程中,软件开发流程为质量保证体系中的主流程,其它的流程为辅助流程。之所以我们需要建立众多的辅助流程,就是为了让软件开发过程透明、可控,通过多角色之间的互动,来有效的降低软件开发过程中的风险,持续不断的提高软件产品的质量。

#CCp$wT"X!hO051Testing软件测试网{;u%r6KY_U'X

2.QA、QC的职责51Testing软件测试网1d D]vD

7}~oBc!}0  在我们开始讨论QA、QC的职责之前,我们先假定一个前提条件,即:企业内部的质量保证体系已经建设完毕,即上述的五个流程已经编写完毕,并且通过了试运行,目前正在按部就班的执行。51Testing软件测试网eA ?8{;mA-Vb?
   
\sx*EY^ j8d t0    QA的英文为:Quality Assurance 我们翻译为“质量保证”。51Testing软件测试网/n7Y^G6{+WsJD

51Testing软件测试网b#f UE7R\l x:_$?

    QC的英文为:Quality Control 我们翻译为“质量控制”。51Testing软件测试网v0C C0`:I;x

4_.I wOn t0    我们将这两个角色之间进行一下职责划分,以方便我们后续的讨论51Testing软件测试网h,b9cuzvo4W

a;m5T k"}Fw!i0    QA:监控公司质量保证体系的运行状况,审计项目的实际执行情况和公司规范之间的差异,并出具改进建议和统计分析报告,对公司的质量保证体系的质量负责。51Testing软件测试网"n}H$Z S.fFp l

51Testing软件测试网(W2}q9I8t9S

    QC:对每一个阶段或者关键点的产出物(工件)进行检测,评估产出物是否符合预计的质量要求,对产出物的质量负责。
z@r F^/_4UN0 51Testing软件测试网wC5m ^q"[8H3wqK7i
    通过上面的职责划分,我们发现,如果我们将软件的生产比喻成一条产品加工生产线的话,那QA只负责生产线本身的质量保证,而不管生产线中单个产品的实际质量情况。QA通过保证生产线的质量来间接保证软件产品的质量。51Testing软件测试网F/T!E(hajpqL

3sU xJ:j{0    而QC不管生产线本身的质量,而只关注生产线中生产的产品在每一个阶段的质量是否符合预期的要求,如果我们生产的是杯子,那QC只关注:生产的材料是否是预期的,每个杯子瓶口的直径是否符合要求,杯子把手是否符合设计要求等等具体的、可量化的点。
VcyR5TJ i/d4L0   51Testing软件测试网n`E1D&X3V5H i#D
    针对软件企业的软件开发过程而言:

#v8CV(q/p+g,sg5X0

HO!f%e8sw0    QA可以进一步明确为SQA,即:软件质量保证,只负责软件开发流程的质量,企业内相对应的角色为:软件质量保证人员,有的企业就直接称之为SQA。

o s`?(o |0

[Tf3^3g3B0    QC可以进一步明确为SQC,即:软件质量控制,只负责软件开发过程中各个阶段产出的工件的质量,产出的工件可能是相关的文档或者代码等,企业内相对应的角色为:软件测试人员。51Testing软件测试网.I9e'p[2D!\3Z
      51Testing软件测试网;l'|6ByE
  由于各个企业采用的开发流程和测试流程不一样,在各个阶段SQC的对应人员不一定都为测试人员,如在需求阶段,产生的工件为《需求规格说明书》,对该文档的主要质量控制手段为评审,这时候在此阶段担任SQC职责的就是评审小组的成员。      51Testing软件测试网T,WB`N~

51Testing软件测试网 cI%A'w3t.m/Uu:h

3.QA、QC的良性协作51Testing软件测试网^9reDWhm{~)n9S

51Testing软件测试网*^F.ZL W4bp+_

  通过以上分析发现,SQA和SQC虽然主要的工作都是为了保证软件的质量,但是着眼点不尽相同。51Testing软件测试网m3C*}$~[-kf \+]5tp%Y

51Testing软件测试网+J6[,r a0G0j/[

  SQA通过控制过程来保证软件产品的质量,而SQC是通过控制每个阶段的“结果”来保证软件产品的质量。
&x9gs%yqy{V0 
![ej~ty9z Ly0  如果在软件开发过程中我们只要SQA或者SQC是否可以保证软件产品的质量那?答案一定是不可以的,通过下面的分析我们看看原因到底是什么。
w} ut%u0 
Mh$saR4nm p|0  软件企业中只有SQA的角色

j~m)XuH I4d I0

0\+tfm*F"V6g f0  如果企业中只有SQA的角色而没有SQC,我们假设企业对SQA的投入力度很大,于是企业得到了一个很好的流程(生产线),但是这个时候软件的产品是否就没有问题了那?如果我们的生产源头没有得到有效的控制,进入生产线的材料是残次品,那不管我们的流程控制的多好,那最终的产品的质量都不会高。51Testing软件测试网 ev V|{v z Ah

D"il jb0  可能有朋友会说,如果我进行了很好的流程控制,对原材料的控制方法当然也纳入到了我们的流程之中,原材料没有了问题,那这件事情是不会发生的。51Testing软件测试网 ?"YX @.wgM8wxg2aGt

w;oZ6dkm7ZZ0  如果是制造业,这件事情可能会存在,但是在软件产业中,这件事情几乎不会发生。因为在软件产品的开发过程当中,几乎所有的原材料都是自己生产的,如需求规格说明书、概要设计、详细设计等,单靠过程的控制无法得到无缺陷的“原材料”。由于软件开发的固有特性,我们在每一步的生产加工过程中,都会引入新的缺陷,不管我们的流程规划的多么完美。所以,在每一阶段完成后,都需要对上一阶段的工作产品进行检验,评估这个阶段的工作产品是否符合预定的质量要求,只有这样才能保证最终软件产品的质量。
DU"N)v)e1PX S0 51Testing软件测试网 b3Bh~j0F6n
  软件企业中只有SQC的角色

Z-{%K ^ Pra0

t&I~#rFG\ G}0  如果企业当中只有SQC而没有SQA的角色,我们也假设企业对SQC的投入力度很大,在每一个阶段SQC都找出了相应的缺陷,这时候企业的质量保证是否就没有问题了那?51Testing软件测试网g!X8m$@ h
   
5j8PxS1VqC!{KY0  如果纯从质量保证的观点来看,在理想情况下,上述的软件企业的质量的确是没有问题,因为在每一个阶段,通过大量专业SQC(测试)的努力工作,找出了软件产品中的“全部”缺陷,这样的产品的质量当然没有问题了。51Testing软件测试网1@O*z3PZ\4K J
   
/gow;I[-X0  但是我们从另外一个角度看一下这个问题:首先软件中的缺陷在理论上是不可能被全部找出来的,由于软件测试的不可遍历性。其次,如果我们维护一个上述的软件测试团队,成本是相当高的,目前国际上还没有那个商业性的公司能够维护的起(微软的产品还会有大量的缺陷),也就是说在实际操作过程中几乎没有公司会同意上述的做法。另外,如果我们在软件生产的过程中,只单一的强调对结果的检验环节,而忽视过程控制,会造成持续的返工、极大的推迟交付产品的日期,最终造成软件开发的失败。这样的做法就像我们想减肥,不是去节食、多做运动,而是去不断的称体重想达到减肥的目的一样可笑。所以,我们想提高软件的质量,不是持续不断的进行测试,而是要改变软件开发的方式,改变我们的流程,在过程中保证软件产品的质量。
#yKdypY u(}0   51Testing软件测试网(ji`*|0U9I7\
  通过以上分析发现,如果想有效的保证软件产品的质量,SQA和SQC缺一不可,两种角色必须相互配合,在“过程”和“结果”都正确的基础上,才能有效改善软件产品的质量。

!|u/]1u(T#_ |1pJ X0

Q}7jR:FSE2zY/U04.质量的持续改进

8N ?8N,}8nN@BP0

/pa|]ha}0CYp$H0  软件质量的提高,过程的改进是一个循序渐进的过程,不可能一蹴而就。针对软件企业而言,如何调配有限的资源,针对质量保证的短板,来有针对性的做出质量改进的规划才是企业迫切需要解决的问题。51Testing软件测试网 A}G({bAC
   
G$Q7I EV/Lx)aB0  首先,企业必须对软件质量的保证提出切实的目标,质量保证的目标绝对不是为了过级,拿到认证,这些只是附带的结果。企业质量保证的目标应该是提高产品的竞争力,重塑企业的文化。51Testing软件测试网ysf{3g
   51Testing软件测试网?+G$t9H;a1V @
  其次,在质量保证的技术层面,SQA人员和SQC人员的互动,会为企业选择质量保证的短板提出建设性的意见。
O"a^Jh/^T p0   
*Qhjg1C0  SQC(测试)人员在工作过程中会产生出大量的过程数据,SQA人员通过对这些数据的统计分析,发现企业的问题所在,进而反馈到流程的改进活动中,再通过SQC人员搜集的大量数据来验证流程改进的有效性,最终达到质量的持续改进。
\|F*zE^ Wu0   
/e @`9eY8lX u E;^0  质量是企业的根本,不管我们现在的产品销售情况如何,企业之间的竞争早晚会过渡到质量的竞争上来,所以只有我们自己练好内功,才有希望打造出我们自己的百年老店。

5J-tB z.vh0

TAG: 测试管理

引用 删除 yunwy   /   2011-05-15 15:55:00
工作需要了解QA的工作内容,这里看到了具体的讲述。学习了,不过有进一步的问题,QA的实践有哪些呢?以及度量数据都从哪些方面出发比较合适
测试----测量?尝试? 引用 删除 yexu   /   2007-02-02 11:13:06
不过我们要做的可能比称更多一些,不仅要能保证尽量准确的度量想要减肥的人的真实体重,而且还要分析出哪个部位需要减肥,是肚子还是大腿;以及他肥胖的原因,是吃的比较多还是缺乏运动等等,也就是分析错误产生的原因和缺陷的分布来帮助进行过程改进。
测试----测量?尝试? 引用 删除 yexu   /   2007-02-01 14:21:11
这样的做法就像我们想减肥,不是去节食、多做运动,而是去不断的称体重想达到减肥的目的一样可笑。所以,我们想提高软件的质量,不是持续不断的进行测试,而是要改变软件开发的方式,改变我们的流程,在过程中保证软件产品的质量。
这比喻太恰恰当了~~~~
 

评分:0

我来说两句

日历

« 2024-04-13  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 43594
  • 日志数: 61
  • 建立时间: 2007-01-15
  • 更新时间: 2007-07-23

RSS订阅

Open Toolbar